← BlogIsaac Sim 작동 원리· 8/10

헤드리스인데 왜 렌더가 켜지나 — headless ≠ no-render

화면 없이 돌려도(headless) HLS 스트리밍·영상 녹화·RTX 센서·합성 데이터 때문에 렌더가 필요할 수 있다는 것 — '헤드리스 = 렌더 끔'이라는 흔한 오해.

약 1분
Isaac-SimheadlessrenderingRTXstreaming

헤드리스인데 왜 렌더가 켜지나

서버에서 시뮬레이션을 돌릴 땐 화면이 없으니 headless 모드로 띄웁니다. 여기서 흔한 오해가 생깁니다 — "화면이 없으니 렌더도 안 하겠지, GPU도 안 쓰겠지." 둘 다 틀릴 수 있습니다.

headless는 "창이 없다"일 뿐

headless화면 창(window)을 안 띄운다는 뜻이지, 렌더를 안 한다는 뜻이 아닙니다. 화면에 안 보여줘도 렌더 결과물이 필요한 곳이 많습니다.

도식 렌더링 중…
  • HLS 스트리밍 / 영상 녹화 — 보여줄 픽셀을 만들어야 하니 렌더 필요.
  • RTX 센서 / 합성 데이터(SDG) — 렌더 결과를 점군·이미지·라벨로 쓰니 렌더 필요.
  • 순수 물리 batch(궤적·KPI만) — 이때만 렌더가 정말 불필요.

상황을 2×2로 정리하면 명확합니다.

렌더 필요렌더 불필요
headlessHLS·녹화·RTX센서순수 물리 batch
화면 표시디버깅·라이브뷰(해당 없음)

GPU도 생각보다 많이 쓴다

⚠️ -RenderOffScreen이어도 NVENC가 GPU를 문다 — 헤드리스로 영상을 인코딩하면 NVENC(하드웨어 인코더)가 GPU를 상당히 점유합니다. "헤드리스니까 nohup으로 띄워두면 되겠지"가 위험한 이유입니다 — 화면이 없어도 GPU는 일하고 있습니다. 그래서 무인 실행에는 자동 종료(시간 제한) 같은 안전장치가 필수입니다.

💡 WebRTC만 예외 — 대부분은 headless로 충분하지만, 일부 네이티브 라이브스트림(WebRTC)은 화면 컨텍스트가 필요해 headless를 끄기도 합니다. "무엇을 산출하느냐"가 렌더·헤드리스 여부를 정합니다.

한 줄 정리

📌 headless = 창 없음 ≠ 렌더 없음. HLS·녹화·RTX 센서·합성 데이터는 헤드리스여도 렌더가 필요하고, NVENC 때문에 GPU도 쓴다. 렌더가 정말 꺼지는 건 순수 물리 batch뿐 — 무인 실행엔 자동 종료 안전장치가 필수다.