VirtualGL을 이용한 리눅스 통합 설계 시스템 구현하기 – 아랑
VirtualGL을 이용한 리눅스 통합 설계 시스템 구현하기
작성일 : 2010년 6월 1일
작성자 : 서 진우 (alang@clunix.com)
1. VirtualGL+TurboVNC 간단 소개
기존에 원격의 Linux 서버에 접속하여 X application을 사용하는 방법으로는 X-server를
이용하거나 VNC와 같은 rdp 방식을 주로 사용해왔다. 하지만 X-server를 이용한 방식과
RDP 방식의 경우 graphic 성능의 문제로 인해 과도한 graphic 작업의 경우 사용이 거의
불가능한 상황이다.
현재 들어 기술이 진도함에 따라 다양한 image 압축 기술로 원격의 graphic 처리 성능이
점차 개선되고 있지만 3D graphic 작업의 경우 단순 Image 압축 기술 만으로는 처리하기
힘들다.
본 문서에서 소개할 VirtualGL 은 원격의 Linux 서버에 장착된 Graphic 장치에서 처리
하는 3D작업의 처리 정보를 로컬의 PC의 VirtualGL 드라이브로 전송하여 remote 3D
graphic 작업 성능을 크게 개선시키는 기술이라 볼수 있다.
VirtualGL의 경우 다양한 remote desktop tool(realVNC, tigerVNC, TurboVNC, NXserver,
etc..)에서 같이 사용이 가능하다.
본 문서에서는 TubroVNC와 연동하여 사용하는 방법과 X-server에 ssh x forword 방식으로
접속하여 직접 호출 하는 방법에 대해 설명하고자 한다.
TurboVNC는 다른 rdp 프로그램에 비해 획기적인 2D graphic 성능을 발휘한다.
이는 turbojpeg란 jpeg image 압축기술을 기반으로 image frame을 전송하는 프로그램으로
타 VNC와는 매우 큰 성능 차이를 나타낸다.
실제 Turbojpeg의 경우 기존의 libjpeg에 비해 4~6배 정도의 이미지 처리 성능을 나타
내는 것으로 소개 되어진다.(libjpeg: 6만화소/초당 , Turbojpeg: 24만~35만화소/초당)
단 높은 압축 데이터 전송으로 인한 CPU 부하는 다소 발생할 수 있다.
VirtualGL의 경우 가상 Graphic 드라이버를 통해 변환된 이미지 정보를 전송할때
Turbojpeg 라이브러리를 이용한다.
TurboVNC가 아닌 다른 tool은 3D 작업 처리는 VirtualGL+Turbojpeg를 통해 성능개선이
되지만 기타 이미지 작업은 표준적인 jpeg 압축 라이브러리를 이용하다 보니, 현저하게
성능이 저하 되는 증세가 나타나는 것을 확인했다.
(NX와 TurboVNC의 2D graphic 처리 성능 차이 : 1.6배~3배)
본 문서의 마지막에 소개하는 기술은 Windows client 에서 X-emulator(Xmanager, Xming,
Exceed)를 통해 원격 서버에 접속하여 X-Application을 호출하는 방법으로 원격 서버의
3D application을 수행할때 virtualGL를 통해 3D graphic을 가속하는 방법에 대해 설명할
것이다.
2. 패키지 설치 및 설정하기 (LINUX 환경)
3D Server(remote)와 Desktop PC(local)로 구성된 시스템 환경에서 아래와 같이 패키지를
설치하도록 한다.
3D Server : Turbojpeg, VirtualGL, TurboVNC(server)
Desktop (linux) : Turbojpeg, VirtualGL, TurboVNC(Viewer)
Desktop (windows) : Turbojpeg, VirtualGL, TruboVNC(Viewer), Exceed 2006+, OpenSSL-0.9.8+, Xming
package download : http://www.virtualgl.org/
– Turbojpeg 설치 ( 3D server, Desktop 모두 설치 )
# rpm -Uvh turbojpeg-1.11.x86_64.rpm
– VirtualGL 설치 및 설정 ( 3D Server, Desktop 모두 설치 )
# VirtualGL-2.1.4.x86_64.rpm
rpm 설치가 완료되면 /opt/VirtualGL 밑에 기본 패키지가 설치 된다.
설치를 완료한 후 몇 가지 설정이 필요하다.
먼저 GDM 처럼 init 5 모드로 시스템이 부팅되어 사용하고 있을 경우 표준 콘솔 모드(init 3)로 재 접속을 한다.
# init 3
그런 후 virtualGL 설정 스크립트를 실행한다.
# /opt/VirtualGL/bin/vglserver_config
Restrict local X server access to vglusers group (recommended)?
[Y/n]
Restrict framebuffer device access to vglusers group (recommended)?
[Y/n]
Disable XTEST extension (recommended)?
[Y/n]
본 설정이 완료되면 vglusers란 group이 생성된다. 만일 일반 유저가 virtualGL을 사용해야 할 경우라면 해당 user를
vglusers 란 그룹에 포함시켜 준다.
# vi /etc/groupd
—————————————————————————
.
vglusers:x:105:alang,<userid>,,,
—————————————————————————
이제 다시 init 5 모드로 접속한다.
# init 5
vglusers 그룹 참여자에 대해 virtualGL 사용 권한을 줄때 사용되는 인증 key를 생성한다.
# xauth merge /etc/opt/VirtualGL/vgl_xauth_key
정상적으로 동작하는지를 확인한다.
# xdpyinfo -display :0
————————————————————————-
.
.
visual:
visual id: 0x102
class: TrueColor
depth: 32 planes
available colormap entries: 256 per subfield
red, green, blue masks: 0xff0000, 0xff00, 0xff
significant bits in color specification: 8 bits
visual:
visual id: 0x103
class: TrueColor
depth: 32 planes
available colormap entries: 256 per subfield
red, green, blue masks: 0xff0000, 0xff00, 0xff
significant bits in color specification: 8 bits
visual:
visual id: 0x104
class: TrueColor
depth: 32 planes
available colormap entries: 256 per subfield
red, green, blue masks: 0xff0000, 0xff00, 0xff
significant bits in color specification: 8 bits
————————————————————————
# /opt/VirtualGL/bin/glxinfo -display :0
————————————————————————
.
.
0xf0 32 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 16 1 Ncon
0xf1 32 tc 0 32 0 r y . 8 8 8 8 4 24 0 16 16 16 16 16 1 Ncon
0xf2 32 tc 0 32 0 r y . 8 8 8 8 4 24 0 16 16 16 16 16 1 Ncon
0xf3 32 tc 0 32 0 r . . 8 8 8 0 4 24 0 16 16 16 16 8 1 Ncon
0xf4 32 tc 0 32 0 r . . 8 8 8 8 4 24 0 16 16 16 16 8 1 Ncon
0xf5 32 tc 0 32 0 r . . 8 8 8 0 4 24 0 16 16 16 16 16 1 Ncon
0xf6 32 tc 0 32 0 r . . 8 8 8 0 4 24 0 16 16 16 16 16 1 Ncon
0xf7 32 tc 0 32 0 r . . 8 8 8 8 4 24 0 16 16 16 16 16 1 Ncon
0xf8 32 tc 0 32 0 r . . 8 8 8 8 4 24 0 16 16 16 16 16 1 Ncon
0xf9 32 tc 0 32 0 r y . 8 8 8 0 4 24 8 16 16 16 16 8 1 Ncon
0xfa 32 tc 0 32 0 r y . 8 8 8 8 4 24 8 16 16 16 16 8 1 Ncon
0xfb 32 tc 0 32 0 r y . 8 8 8 0 4 24 8 16 16 16 16 16 1 Ncon
0xfc 32 tc 0 32 0 r y . 8 8 8 0 4 24 8 16 16 16 16 16 1 Ncon
0xfd 32 tc 0 32 0 r y . 8 8 8 8 4 24 8 16 16 16 16 16 1 Ncon
0xfe 32 tc 0 32 0 r y . 8 8 8 8 4 24 8 16 16 16 16 16 1 Ncon
0xff 32 tc 0 32 0 r . . 8 8 8 0 4 24 8 16 16 16 16 8 1 Ncon
0x100 32 tc 0 32 0 r . . 8 8 8 8 4 24 8 16 16 16 16 8 1 Ncon
0x101 32 tc 0 32 0 r . . 8 8 8 0 4 24 8 16 16 16 16 16 1 Ncon
0x102 32 tc 0 32 0 r . . 8 8 8 0 4 24 8 16 16 16 16 16 1 Ncon
0x103 32 tc 0 32 0 r . . 8 8 8 8 4 24 8 16 16 16 16 16 1 Ncon
0x104 32 tc 0 32 0 r . . 8 8 8 8 4 24 8 16 16 16 16 16 1 Ncon
———————————————————————–
만일 이런 결과가 나타나지 않는다면 처음부터 차근히 다시 해본다.
– TuroVNC 설치 ( 3D Server, Desktop 모두 설치 )
# rpm -Uvh turbovnc-0.6.x86_64.rpm
설치가 완료되면 /opt/TurboVNC 밑에 패키지가 설치된다. Redhat 계통의 경우 기본적으로 설치되는 Vnc가
존재할 수 있으니, 구동 시 실행파일 경로를 주의해야 한다.
;; 아래 설정은 3D server 에서만 하면 된다.
VNC 접속 시 사용할 패스워드를 정의한다.
# /opt/TurboVNC/bin/vncpasswd
VNC Server instance 실행
# /opt/TurboVNC/bin/vncserver :1
참고 : vncserver [option] :[display number]
3. 기본 사용 방법
Desktop PC에 Terminal을 열고 아래 명령으로 접속을 시도한다.
desktop $ vglconnect user@3Dserver
3Dserver $ vglrun [option] 3D_application_command ..
$ vglclient -detach
TurboVNC를 통한 이용방법
desktop $ /opt/TurboVNC/bin/vncviewer 3Dserver:1
3Dserver[vnc] $ vglrun [option] 3D_application_command ..
VNC Server 접속 시 자동으로 vglclient 연결을 할 수 있도록 vnc 설정을 추가한다.
3Dserver[vnc] $ vi $HOME/.vnc/xstartup.turbovnc
———————————————————————————-
#!/bin/sh
vglclient -detach <- 추가
———————————————————————————-
4. Windows Desktop 에서 사용하기
– VNC 접속을 통한 이용방법
Turbojpeg, TurboVNC Viewer를 설치한후 ..vncviewer를 실행하고 3D linux server로 접속하여 사용하면 된다.
– Putty를 통해 x-forward 방식을 통해 X application을 실행하는 방법
Turbojpeg, VirtualGL을 설치한다.
Exceed 2006 이상 버전을 설치한다.
Excced 프로그램 경로를 PATH 환경 설정에 반영한다.
-> C:\program files\Hummingbird\Connectivity\11.00\Exceed
Openssl 에서 libeay32.dll 과 ssleay32.dll 파일을 virtualGL 이 설치된 경로에 복사해 둔다.
VirtualGL 경로도 PATH 환경 설정에 등록한다.
Xming 혹은 Xmanager를 passive mode로 띄워 둔다.
cmd 창을 열고 ..
cmd> set DISPLAY=:0.0
cmd > vglconnect user@3Dserver
그럼 exceed가 자동으로 실행되면서 putty가 실행된다.
3Dserver의 user 에 대한 패스워드를 입력하면 3D server로 접속이 되어 진다.
그런 후 ..
$ vglrun [option] 3D_application_command ..
로 실행하면 된다.
5.Sun Grid Engine + VirtualGL + TurboVNC 연동하기
본 문서의 기술은 앞서 소개한 “VirtualGL을 이용한 Remote 3D Graphic 성능 개선하기”
의 기술을 이용하여 실제 기업 환경에 구성 가능한 “가상 3D 설계 가시화 시스템 통합
환경”을 구현하는 기술에 대한 설명이다.
전편에 소개한 문서에서 VirtualGL을 이용하여 원격 서버에서 3D작업을 수행하는 수동
적인 방법에 대해 설명하였다.
하지만 실제 환경에서 본 기술의 세부적인 내용을 일반 사용자가습득하여 실전에 사용
하기엔 많은 어려움이 있다.
또한 사용자의 능력에 의해 비 정형적인 형태로 개별적인 사용 방식을 유지하면, 시스템
통합에 대한 관리가 힘들어 진다.
본 문서에서 이런 문제점들을 해결할 수 있는 방안을 설명하고, 실제 환경에 적용 가능한
몇가지 시스템 통합 모델에 대한 구현 방법을 소개하고자 한다.
“통합 설계 시스템” 환경을 구현하기 위해서는 기존의 GUI을 이용한 수동적인 작업을
스케줄러를 통해 관리 가능해야 한다. 일반적으로 VNC나 Terminal로 접속하여 수동으로
X 프로그램을 호출할 경우 사용자의 작업을 모니터링 하거나 관리할 수 없는 문제가
발생한다. 이런 부분을 해결하기 위해서는 Xwindows 전체 화면을 제공하는 VNC 접속이
스케줄러를 통해 이루어 질수 있어야 한다.
또한 스케줄러를 통해 접속한 VNC 세션 내에서 3D 어플리케이션을 수행하는 작업에 대해
서도 스케줄러를 통해 접속이 이루어 져야 한다.
최종적으로 이런 스케줄러를 통해 접속된 VNC 세션이나 3D 어플리케이션이 VirtualGL을
통해 Remote 3D Graphic 성능이 보장되어야 한다.
마지막으로 GridCenter의 기능 중 하나인 Windows Client의 웹 브라우저 환경에서
스케줄러로 제출된 작업 중 Graphic 작업의 경우 자동으로 Client PC의 Windows 화면으로
X 프로그램을 띄워주게 되는데, 이렇게 실행된 X프로그램에 대해서도 3D 성능이
VirtualGL을 통해 보장되어야 한다.
이 부분에 대한 기능이 완료되면, 사용자 입장에서 Linux 기반의 통합 시스템에서 가시화
작업을 수행하는데 있어 무리가 없을 거라 생각된다.
6. 상세 구축 방법
중앙에 여러대로 구성된 3D Server와 client PC가 존재한다고 가정하고 중앙의 3D server
는 모두 SGE 스케줄러를 통해 기본 통합되어 있다는 것을 전제 한다.
SGE 설치 경로는 /engrid/ensge 이고, 3D server와 desktop PC의 환경은 앞서 소개한
“VirtualGL을 이용한 Remote 3D Graphic 성능 개선하기” 문서 방식으로 패키지 설치
및 설정이 완료되었다는 것을 전제로 한다.
– 필요 패키지
VirtualGL-SunRay.x86_64.rpm
: VirualGL client를 통하지 않고, ssh 접속으로 virtualgl 연결 환경을 유지시킴
sun-n1ge-3D.noarch.rpm
: Sun Grid Engine 을 통해 VNC 와 3D 작업을 수행할 수 있는 기능을 제공함.
sun-n1ge-adv_reserv.noarch.rpm
: 3D 작업 수행 시 추가적인 자원 할당이 가능하톡 관련 기능을 제공함.
– 설치
VirtualGL-SunRay 패키지는 모든 서버에 설치 한다.
# ensh rpm -Uvh VirtualGL-SunRay.x86_64.rpm
sun-n1ge 관련 패키지는 SGE 마스터 서버에 설치한다. 단 SGE 마스터 서버의 관련 패키지
는 다른 작업 서버와 공유되어 있어야 한다.
# rpm -Uvh sun-n1ge-3D.noarch.rpm –prefix=/engrid/ensge
# rpm -Uvh sun-n1ge-adv_reserv.noarch.rpm –prefix=/engrid/ensge
위 두개의 패키지를 설치하면 아래 경로에 관련 파일이 설치된다.
/engrid/ensge/graphics
/engrid/ensge/ar
# cd /engrid/ensge/graphics
# ./add_to_complex
아래 작업은 모든 작업 서버에서 수행을 해준다.
# ./config_gfx
Configuring all.q@gc001
How many unique graphics boards? : graphic card 수
1
How many graphics jobs simultaneously? : 해당 서버에 허용 가능한 graphic 작업 수
4
Can graphics be dedicated to one user job? (Enter 1 for Yes, 0 for No) : one user 전용 사용 여부
0
Can this host be a Chromium headnode? (Enter 1 for Yes, 0 for No)
0
해당 작업은 SGE complex 에 graphic 관련 작업에 대한 complex를 정의하는 것이다.
관련 설정은 sge 해당 queue 설정에서 확인 가능하다.
# qconf -mq all.q
——————————————————————————-
.
complex_values NONE,[gc001=graphics=4,maximum_graphics=1], \
[gc002=graphics=4,maximum_graphics=1],[gc003=graphics=4, \
maximum_graphics=1],[gc004=graphics=4,maximum_graphics=1]
.
——————————————————————————-
간단한 graphic 작업 테스트를 해 보자
/engrid/ensge/graphics 밑에 RUN.xxxx 와 같은 sample 스크립트가 존재한다.
– SGE를 통한 VNC 세션 할당 방법
RUN.vncserver 는 스케줄러를 통해 Turbovnc 세션을 할당할때 사용하는 작업 스크립트이다.
qsub 를 통해 해당 스크립트를 수행하면, 통합 시스템 중 유휴 서버에 자동으로 TurboVNC 세션이 생성된다.
# qsub -now y RUN.vncserver
# qstat -f
—————————————————————————————
queuename qtype resv/used/tot. load_avg arch states
———————————————————————————
all.q@gc001 BIP 0/0/8 0.20 lx24-amd64 d
———————————————————————————
all.q@gc002 BIP 0/1/8 0.00 lx24-amd64
364 0.55500 vncserver root r 06/11/2010 13:17:13 1
———————————————————————————
all.q@gc003 BIP 0/0/8 0.02 lx24-amd64
———————————————————————————
all.q@gc004 BIP 0/0/8 0.04 lx24-amd64
접속 세션 정보는 작업 수행 유저의 HOME 디렉토리에 아래와 같은 파일로 저장된다.
# ls ~/vnc*
——————————————————————————-
vnc_displayname
vnc_displaynumber
vnc_errors
vnc_http_port
vnc_server
vnc_server_port
vnc_url
vncserver.log
# cat vnc_displaynumber
2
# cat vnc_http_port
5802
# cat vnc_server
gc002::5902
# cat vnc_server_port
5902
# cat vnc_url
<META HTTP-EQUIV=”Refresh” CONTENT=”0;URL=http://gc002:5802″>
해당 파일을 이용하여 사용자가 TurboVNC viewer로 접속하거나 웹 VNC plugin을 통해
자동으로 접속 할수 있는 기능을 개발할 수 있을 것이다.
만일 수동으로 접속할 경우 위 정보를 통해 아래와 같이 접속이 가능하다.
vncviewer gc002:2 or vncviewer gc002:5902
접속 이후 VNC Viewer창을 강제로 끊으면, 해당 세션은 그대로 유지되고, 이후 동일 정보를 통해 다시 세션 접속이 가능하다.
Xwindows 화면의 logoff 기능을 통해 정식적으로 logoff 하게 되면 자동으로 스케줄러에
할당된 VNC 작업이 종료된다.
참고로 VNC 세션의 해상도를 작업 제출 시 지정하고 싶으면 아래와 같이 수행하면 된다.
# qsub -now y -v GEOMETRY=1500×900 $SGE_ROOT/graphics/RUN.vncserver
7. 실제 환경 적용 방법
이제 다양한 환경에 대해 적용 가능한 몇가지 “통합 설계 시스템” 구성 모델에 대해 설명
할 것이다.
case 1 : 해석, 설계 작업이 동일 서버에서 수행되는 구성
본 방법은 동일 서버에서 해석 작업과 설계 작업을 수행하는 일반적인 구성에 대해
통합환경을 구성하는 방법이다. 해당 구성은 작업 서버가 해석과 설계에 맞게 CPU,
Memory,Graphic Card가 모두 구성된 환경에 적합한 통합 구성이다.
일반적인 워크스테이션으로 구성된 통합 환경에 적합하다.
동작 방식은 다음과 같다.
a. 중앙에 통합된 시스템에 사용자는 스케줄러를 통해 VNC 접속 세션을 할당 받는다.
b. 활당된 VNC 세션에 접속하여 3D 그래픽 작업을 수행한다.
c. 수행된 3D 그래픽 작업은 자동으로 스케줄러를 통해 현재 접속 서버에서 수행 된다.
d. 3D 작업을 종료하면 자동으로 스케줄러에서 해당 작업이 삭제 된다.
e. VNC 세션에서 로그오프 하면 자동으로 스케줄러에서 해당 VNC 세션 작업이 삭제된다.
– 구현 방법
앞서 설명한 스케줄러를 통한 VNC 세션 할당 방법으로 접속할 세션을 할당 받는다.
# qsub RUN.vncserver
# qstat -f
——————————————————————————
all.q@alang00 BIP 0/2/4 0.01 lx24-amd64
140 0.55500 vncserver alang r 06/11/2010 13:40:26 1
———————————————————————————
all.q@alang03 BIP 0/0/4 0.14 lx24-amd64 d
alang00 서버 vnc 세션이 할당되었다.
# cat ~alang/vnc_server
——————————————————————————–
alang00::5904
이제 client PC 에서 vncviewer를 통해 해당 세션에 접속한다.
$ /opt/TurboVNC/bin/vncviewer alang00:4
접속된 VNC 세션 화면에서 터미널 창을 연다.
스케줄러를 통해 그래픽 작업을 제출하는 방법은 두가지 방법이 있다.
– background 형태의 작업 제출
$ qrsh -b no /opt/VirtualGL/bin/vglrun glxgears
$ qsub -now y /opt/VirtualGL/bin/vglrun glxgears
– forground 형태의 작업 제출
$ qrsh -b y /opt/VirtualGL/bin/vglrun glxgears
qrsh 을 이용하는 경우는 작업이 스케줄러를 통하지만 forground 로 수행된다.
qsub 를 이용하여 작업을 수행하는 경우에는 스케줄러를 통해 backgroud 형태로 작업이
수행된다.
$ qstat -f
———————————————————————————-
all.q@alang00 BIP 0/3/4 0.39 lx24-amd64
142 0.55500 vncserver alang r 06/11/2010 13:49:11 1
145 0.55500 vglrun alang r 06/11/2010 13:54:43 1
위와 같이 수행된 작업은 기본적으로 작업 이름이 vglrun 으로 표시가 되어진다.
본 구성에서는 그래픽 작업을 수행할 수 있는 서버가 여러대이지만 스케줄러를 통해 작업
을 제출할 경우 VNC 접속 서버에서 작업이 수행되는 구조이다. 이런 경우 작업 제출 명령
을 아래와 같이 사용해야 한다.
$ qsub -now y -q all.q@`hostname` /opt/VirtualGL/bin/vglrun glxgears
case 2 : 해석, 설계작업이 각 작업 특성에 맞는 별도 시스템에서 수행되는 구성
본 방법은 Cpu, memory 자원을 중심으로 해석 작업에 최적화는 하드웨어 구성과, 고성능
의 Graphic Card가 장착된 설계 작업에 최적화된 하드웨어 구성이 별도로 존재하는 경우
적합한 구성 모델이다.
근래 전산실의 공간과 냉방등을 고려하여 서버 시스템이 계속 경량화되는 상황이여서,
일반 1u type 서버에 3d Graphic card를 장착하기가 매우 힘들다.
이런 이유로 해석시스템과 설계시스템을 구성 시 용도에 최적화된 하드웨어 구성을
많이 한다. 해석 시스템의 경우 CPU와 memory는 최상의 성능을 갖추도록 하고,
Graphic 성능은 매우 낮은 성능을 보유하고 있다. 설계 시스템의 경우는 해석 시스템
과 상반된 형태로 구성 된다.
이런 경우 설계 시스템의 수량과 해석 시스템의 수량, 터미널 접속 사용자 수등으로
고려하여 다양한 시스템 구성을 만들 수 있다.
기본 동작 방식은 다음과 같다.
a. 중앙에 통합된 해석시스템에 사용자는 스케줄러를 통해 VNC 접속 세션을 할당 받는다.
b. 할당된 VNC 세션에 접속하여 3D 그래픽 작업을 수행한다.
c. 수행된 그래픽 작업은 자동으로 스케줄러를 통해 설계 시스템으로 전달된다.
d. 설계 시스템에서 수행된 작업 화면이 VNC 세션에 자동으로 나타난다.
위 동작 방식은 변칙적인 구성 방식으로 해석 시스템을 사용자 접속 콘솔로 사용하는
방안이다. 해석작업이 주이고, 설계 작업은 부가적으로 수행하는 환경에 적합하다.
이상적인 구성 방법은 case 1을 설계 작업 전용 통합 시스템으로 구성하고, 해석 시스템
은 별도로 구성하는 것을 권장한다.
– 구현 방법
할당 받은 VNC 세션으로 접속한 후 터미널 창을 실행한다.
접속한 VNC 서버에서 그래픽 작업을 수행할때 해당 그래픽 작업은 다른 서버에서 수행
되고, 화면만을 현재 VNC 세션 화면에서 보기를 원할 경우 아래와 같은 작업 제출
명령을 사용한다.
$ xhost +
$ qsub -now y -v DISPLAY=<hostname>:<display_number> /opt/VirtualGL/bin/vglrun glxgears
or
$ qsub -now y -v DISPLAY=`cat ~/vnc_displayname` /opt/VirtualGL/bin/vglrun glxgears
확인 방법은 아래와 같다.
$ qstat -f
———————————————————————————
all.q@alang00 BIP 0/2/4 0.47 lx24-amd64
156 0.55500 vncserver alang r 06/11/2010 14:10:35 1 -> VNC 접속 서버
———————————————————————————
all.q@alang03 BIP 0/1/4 0.45 lx24-amd64
160 0.55500 vglrun alang r 06/11/2010 14:17:3 -> glxgears 동작서버
동일한 방법으로 Abaqus Viewer를 수행해 보자
$ qsub -now y -v DISPLAY=`cat ~/vnc_displayname` /opt/VirtualGL/bin/vglrun /PATH/abq682 viewer
case 1, 2 의 경우 설명한 작업 제출 명령 구문을 VNC Xwindows 바탕화면에 icons 형태로
사용자에게 제공하면 사용자는 해당 구문에 대해 숙지를 할 필요 없이 투명한 작업 절차로
통합 설계 시스템을 사용할 수 있다.
실제 시스템 구축 환경에서는 바탕화면 아이콘 제작 시 위 명령 구문을 이용하는 것 보다는
S/W 별로 실행 스크립트를 제작한 후 해당 스크립트를 실행하는 것이 간편하다.
아래는 S/W 별 실행 스크립트 예제이다.
# vi run_abaqus
—————————————————————————————–
#!/bin/sh
HOSTNAME=`hostname`
DISPLAYNAME=${HOSTNAME}${DISPLAY}
/engrid/ensge/bin/lx24-amd64/qsub -now y -N abaqus_viewer -v DISPLAY=$DISPLAYNAME \
/opt/VirtualGL/bin/vglrun abq682 viewer
—————————————————————————
# chmod 755 run_abaqus
TurboVNC 세션상의 윈도우즈 바탕화면에 run_abaqus 실행 아이콘을 만들어 놓는다.
사용자는 해당 아이콘을 실행하면 사용자 윈도우 화면에 S/W가 실행되지만, 실제 해당
그래픽 작업은 backend에 위치한 3D server 에 스케줄러를 통해 작업이 전달되게 된다.
참고 사항 :
위 스크립트와 같은 방식으로 S/W UI가 VNC 세션상에 호출되게 하지 않고, 바로 사용자
의 Windows PC로 보내줄수도 있다. (DISPLAYNAME을 windows PC 쪽으로 정의함)
하지만 위와 같은 방법으로 Windows PC쪽으로 화면을 직접 전송하면 graphic 성능이
20%~30% 정도 감소하는 것을 확인하였다.
Windows PC로 UI 화면을 바로 전송하는 경우에는 case3에서설명하는 sge job submit
script를 직접 만들고, 해당 script를 qsub 로 제출하는 방식으로 수행하는 것을 권장한다.
RUN.vncserver 스크립터를 이용하여 SGE를 통해 VNC 세션을 열고, 해당 세션에 접속
했을때 위 Xwindows 바탕화면의 아이콘을 실행해도 아무런 반응이 없는 문제가 발생할
수 있다.
이는 RUN.vncserver 스크립터 상에 사용자가 일반적인 Xwindows를 이용할때 필요한
환경설정이 생략되어 있기 때문이다.
이부분을 해결하기 위해서는 RUN.vncserver 스크립트에 아래 내용을 추가하도록 한다.
# vi $SGE_ROOT/graphics/RUN.vncserver
—————————————————————————-
.
.
#Personalization: any other directories in $PATH
PATH=$PATH:$HOME/bin
;;; 위 PATH 설정 제일 마지막 부분에 $HOME/bin 추가
export PATH
;; 하단에 아래 내용 추가
source /etc/profile
source /etc/bashrc
;; 만일 fonts 서버를 지정하고자 할때는 아래행에 -fp 옵션을 추가한다.
VNC_SERVER_OPTIONS=”-fg ${GEOMETRY:+-geometry} ${GEOMETRY} -fp tcp/localhost:7100″
——————————————————————————-
case 3 : 스케줄러를 통해 전달된 그래픽 작업을 특정 PC 화면으로 전송시키는 구성
본 방법은 GridCenter의 웹 기반 작업 제출 기능을 이용하여 제출된 그래픽 작업을
windows client pc 화면에서 자동으로 수행하도록 하는 방법이다.
위 효과를 보기 위해서는 SGE 작업 제출 스크립트를 이용하여 작업을 qsub로 제출하고,
해당 작업 화면은 작업 스크립트 상에 정의된 DISPLAY 호스트로 호출되게 해야 한다.
먼저 이때 사용하는 간단한 작업 스크립트 구문이다.
# vi sge_abaqus_cae.sh
———————————————————————————
#!/bin/sh
#$ -cwd
#$ -N abaqus_cae
#$ -S /bin/sh
#$ -j y
#$ -o abaqus_cae.log
#$ -v DISPLAY=alang02:0.0 -> windows client PC
#$ -now y
/opt/VirtualGL/bin/vglrun /APP/CAE/abaqus/Commands/abq682 viewer
———————————————————————————
$ qsub sge_abaqus_cae.sh
위 작업이 정상적으로 동작하기 위해서 Windows Client는 아래와 같은 사전 환경이 필요하다.
먼저 앞서 설명한 문서의 VirtualGL Windows Client 환경 설정 부분이 완료되어 있어야 한다.
그런 후 cmd 창에서 아래 설정 수행
C:> set DISPLAY=:0.0
C:> vglclient -detach
위와 같은 사전 준비가 완료된 상태라면 위의 qsub 로 제출된 작업 화면에 해당 windows
PC 에 나타날 것이다.
지금까지 설명한 모든 remote graphic access 방벙으로 호출된 그래픽 작업은
VirtualGL의 기능에 의해 3D 가속 작업이 가능해야 한다.