본문 바로가기
Virtual/Protocol

GPU 원격 렌더링 환경 구축: TurboVNC + VirtualGL + NVIDIA GPU

by Yoon_estar 2025. 4. 24.
728x90

개요

GPU가 장착된 서버에서 OpenGL 기반 3D 애플리케이션을 원격으로 실행하고 싶다면, 가장 대표적인 조합이 바로 TurboVNC + VirtualGL입니다. 이번 포스트에서는 해당 기술 스택을 기반으로 GPU 리소스를 활용한 원격 데스크탑 환경을 구축하는 전체 과정을 다룹니다.

 

📌 개념 정리: VirtualGL이 GPU를 어떻게 사용하는가?

기본적으로 ssh -X나 X11 forwarding을 사용할 경우, OpenGL 렌더링은 서버의 CPU 소프트웨어 렌더러가 담당하기 때문에 성능이 매우 떨어집니다.
하지만 VirtualGL을 활용하면 OpenGL 명령을 서버의 GPU에서 직접 처리하게 만들어 성능을 비약적으로 향상시킬 수 있습니다.

 

전체 흐름 요약

TurboVNC Viewer (Client)
        ↓
TurboVNC Server (Xorg + :1 Display)
        ↓
vglrun 으로 OpenGL 앱 실행
        ↓
VirtualGL 이 LD_PRELOAD 로 OpenGL 호출 가로채기
        ↓
GPU (NVIDIA)에서 렌더링 수행
        ↓
렌더링된 이미지를 TurboVNC로 전송

 

실제 구축 방법 (자동화 스크립트 포함)

서버 환경은 Rocky Linux / RHEL / CentOS 8.x를 기준으로 작성되었습니다.
이미 NVIDIA 드라이버가 설치되어 있고, nvidia-smi 명령이 동작하는 상태여야 합니다.

 

#!/bin/bash
# VirtualGL + TurboVNC + GPU 렌더링 구축

# 패키지 설치
dnf install -y epel-release
dnf install -y https://sourceforge.net/projects/virtualgl/files/VirtualGL/3.1/virtualgl-3.1.x86_64.rpm
dnf install -y https://sourceforge.net/projects/turbovnc/files/2.2.6/turbovnc-2.2.6.x86_64.rpm

# 사용자 생성
VNCUSER=estar987
useradd -m $VNCUSER
echo "$VNCUSER:vncpw123" | chpasswd

# VirtualGL 설정
/opt/VirtualGL/bin/vglserver_config -config +s +f +t

# NVIDIA GPU 확인 및 Xorg 설정
nvidia-xconfig --query-gpu-info
nvidia-xconfig --preserve-busid --enable-all-gpus --separate-x-screens --cool-bits=28

# VNC 사용자 설정
mkdir -p /etc/tigervnc
echo ":1=$VNCUSER" > /etc/tigervnc/vncserver.users
cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

systemctl daemon-reexec
systemctl daemon-reload
systemctl enable vncserver@:1.service

# VNC 패스워드 및 xstartup
su - $VNCUSER -c "mkdir -p ~/.vnc && echo vncpw123 | vncpasswd -f > ~/.vnc/passwd && chmod 600 ~/.vnc/passwd"
su - $VNCUSER -c "echo '#!/bin/sh' > ~/.vnc/xstartup"
su - $VNCUSER -c "echo 'exec /opt/TurboVNC/bin/vncsession -geometry 1920x1080' >> ~/.vnc/xstartup"
su - $VNCUSER -c "chmod +x ~/.vnc/xstartup"

echo "✅ VirtualGL + TurboVNC 구축 완료"

 

🧪 사용법

VNC 클라이언트에서 접속

  • TurboVNC Viewer 설치 후
    서버_IP:1 으로 접속
  • 비밀번호: vncpw123
vglrun glxgears

 

✅ 확인 포인트

  • systemctl status vncserver@:1.service로 VNC 서버 상태 확인
  • nvidia-smi로 GPU에 어떤 프로세스가 붙어 있는지 확인
  • 클라이언트 측 VNC 화면이 제대로 출력되는지 확인

 

🔚 마무리

VirtualGL은 GPU 자원을 효율적으로 활용하여 고성능 원격 3D 그래픽 처리를 가능하게 해주는 매우 강력한 도구입니다. 특히 CAE/CFD, VMD, ParaView, COMSOL, ANSYS 등 OpenGL 기반 툴과 궁합이 뛰어나며, 클러스터 또는 연구환경에서 널리 사용됩니다.