헤드리스인데 왜 렌더가 켜지나
서버에서 시뮬레이션을 돌릴 땐 화면이 없으니 headless 모드로 띄웁니다. 여기서 흔한 오해가 생깁니다 — "화면이 없으니 렌더도 안 하겠지, GPU도 안 쓰겠지." 둘 다 틀릴 수 있습니다.
headless는 "창이 없다"일 뿐
headless는 화면 창(window)을 안 띄운다는 뜻이지, 렌더를 안 한다는 뜻이 아닙니다. 화면에 안 보여줘도 렌더 결과물이 필요한 곳이 많습니다.
도식 렌더링 중…
- HLS 스트리밍 / 영상 녹화 — 보여줄 픽셀을 만들어야 하니 렌더 필요.
- RTX 센서 / 합성 데이터(SDG) — 렌더 결과를 점군·이미지·라벨로 쓰니 렌더 필요.
- 순수 물리 batch(궤적·KPI만) — 이때만 렌더가 정말 불필요.
상황을 2×2로 정리하면 명확합니다.
| 렌더 필요 | 렌더 불필요 | |
|---|---|---|
| headless | HLS·녹화·RTX센서 | 순수 물리 batch |
| 화면 표시 | 디버깅·라이브뷰 | (해당 없음) |
GPU도 생각보다 많이 쓴다
⚠️
-RenderOffScreen이어도 NVENC가 GPU를 문다 — 헤드리스로 영상을 인코딩하면 NVENC(하드웨어 인코더)가 GPU를 상당히 점유합니다. "헤드리스니까 nohup으로 띄워두면 되겠지"가 위험한 이유입니다 — 화면이 없어도 GPU는 일하고 있습니다. 그래서 무인 실행에는 자동 종료(시간 제한) 같은 안전장치가 필수입니다.
💡 WebRTC만 예외 — 대부분은 headless로 충분하지만, 일부 네이티브 라이브스트림(WebRTC)은 화면 컨텍스트가 필요해 headless를 끄기도 합니다. "무엇을 산출하느냐"가 렌더·헤드리스 여부를 정합니다.
한 줄 정리
📌 headless = 창 없음 ≠ 렌더 없음. HLS·녹화·RTX 센서·합성 데이터는 헤드리스여도 렌더가 필요하고, NVENC 때문에 GPU도 쓴다. 렌더가 정말 꺼지는 건 순수 물리 batch뿐 — 무인 실행엔 자동 종료 안전장치가 필수다.
