목공책 하나 들이셔요~

2014년 5월 23일 금요일

GTX650으로 모니터 3개 쓰기

오래 전에 비하면 모니터의 가격이 많이 내려갔고, 부피가 큰 CRT 대신 LCD/LED 모니터가 대중화 되면서 요즘 거의 대부분의 사무실에서는 한 사람 당 두 개 이상의 모니터를 쓰고 있는 경우가 많습니다. 실제로 24인치 와이드 모니터를 쓴다고 할지라도 하나의 모니터는 좀 답답합니다. 특히 코딩을 하는 입장에서는 한쪽 모니터에는 문서와 로그창을 메인 모니터에는 개발창을 띄워 놓고 작업하면 훨씬 더 생산성이 좋습니다.


몇몇 연구기관에서 발표한 바로는 두개의 모니터를 쓰면 적게는 10%에서 많게는 75%까지 생산성이 높아진다고 합니다. 이런 연구 결과를 토대로 많은 개발자들이 회사에 모니터를 하나 더 사달라고 하는게 붐이었지요. 저의 경우도 회사에서 데스크탑과 모니터 두개로 작업하다가 집에서 노트북으로 이어서 작업할려고 하면 참 갑갑하기 그지 없습니다.

그런데 어느날 사무실을 둘러보는 중 퇴사자 책상에 있던 새 모니터 한대가 그냥 놀고 있는게 보였습니다. 그래서 혹시 모니터 3개를 사용할 수는 없을까? 하고 생각해 보았습니다. 인터넷을 찾아보니 실제로 세개의 모니터를 사용하는 사람들이 있더군요. 최근에 나오는 그래픽 카드들은 3개 혹은 4개의 모니터를 지원하는 제품들도 있습니다. 그래서 위 사진처럼 3개의 모니터를 연결하면 실감나는 서라운드 화면을 즐길 수 있습니다.

제가 그동안 사용해 온 그래픽 카드는 nVIDIA의 GTX550Ti 제품입니다. 무난한 성능을 가진 보급형 카드로 두개의 모니터를 지원하는 제품입니다. 그래서 3개의 모니터를 위해서는 그래픽 카드를 교체해야 했습니다. 조사를 해 보니 3개의 모니터를 제공하는 그래픽 카드 중에서 가장 보편적인 제품이 GTX650이더군요. 다음날 용산에 가서 바로 질렀습니다.


제 회사 컴퓨터의 OS는 리눅스 민트입니다. 그러므로 리눅스를 기준으로 설명 드리겠습니다. 기존에도 nVIDIA 그래픽 카드를 사용했으므로 별다른 설치 없이 설정을 할 수 있습니다. 메뉴에서 "NVIDIA X Server Settings"를 선택하여 실행하고 다음 화면과 같은 식으로 모니터를 배치하면 됩니다. Primary Display를 지정하면 그 모니터에 하단 메뉴바가 나옵니다.


3개의 모니터를 사용하니 아주 편하더군요. 오른쪽 모니터는 NetBeans와 같은 개발 편집 도구를 띄워놓고, 가운데 모니터에는 참고 문서나 웹 브라우저를 띄워 놓습니다. 왼쪽 모니터에는 실행하는 프로그램의 로그를 출력합니다. 이렇게 배치하니 원하는 프로그램들이 가리지 않고 모두 노출되어 작업이 매우 편하더군요. 만세~ 를 불렀습니다.


최신 드라이버 설치하여 성능 향상

그런데 뭔가 상당히 화면이 버벅대는 느낌이 들더군요. 그리고 가끔 사용하는 3D 캐드의 성능이 GTX550Ti를 사용할 때에 비해서 훨씬 느려진 것을 확인할 수 있었습니다. 리눅스는 3D 엔진으로 OpenGL을 사용하고 있는데, OpenGL의 성능을 체크할 수 있는 glmark2를 이용하여 객관적인 성능 수치를 뽑을 수 있습니다.

커맨드라인에서 glmark2를 실행하면 다음과 같이 여러가지 3D 도형이 나타나면서 성능을 측정하게 됩니다. 대략 5분 정도 소요되니 끝날 때까지 기다리세요.


리눅스 민트에서 기본으로 제공되는 nVIDIA 드라이버를 이용하여 glmark2를 실행한 결과입니다.

=======================================================
   glmark2 2012.08
=======================================================
   OpenGL Information
   GL_VENDOR:     NVIDIA Corporation
   GL_RENDERER:   GeForce GTX 650/PCIe/SSE2
   GL_VERSION:    4.3.0 NVIDIA 313.30
=======================================================
[build] use-vbo=false: FPS: 578 FrameTime: 1.730 ms
[build] use-vbo=true: FPS: 725 FrameTime: 1.379 ms
[texture] texture-filter=nearest: FPS: 579 FrameTime: 1.727 ms
[texture] texture-filter=linear: FPS: 583 FrameTime: 1.715 ms
[texture] texture-filter=mipmap: FPS: 628 FrameTime: 1.592 ms
[shading] shading=gouraud: FPS: 475 FrameTime: 2.105 ms
[shading] shading=blinn-phong-inf: FPS: 439 FrameTime: 2.278 ms
[shading] shading=phong: FPS: 513 FrameTime: 1.949 ms
[bump] bump-render=high-poly: FPS: 417 FrameTime: 2.398 ms
[bump] bump-render=normals: FPS: 765 FrameTime: 1.307 ms
[bump] bump-render=height: FPS: 747 FrameTime: 1.339 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 415 FrameTime: 2.410 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 379 FrameTime: 2.639 ms
[pulsar] light=false:quads=5:texture=false: FPS: 601 FrameTime: 1.664 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 238 FrameTime: 4.202 ms
[desktop] effect=shadow:windows=4: FPS: 234 FrameTime: 4.274 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 491 FrameTime: 2.037 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 413 FrameTime: 2.421 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 477 FrameTime: 2.096 ms
[ideas] speed=duration: FPS: 443 FrameTime: 2.257 ms
[jellyfish] <default>: FPS: 296 FrameTime: 3.378 ms
[terrain] <default>: FPS: 68 FrameTime: 14.706 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 526 FrameTime: 1.901 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 515 FrameTime: 1.942 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 495 FrameTime: 2.020 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 464 FrameTime: 2.155 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 480 FrameTime: 2.083 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 435 FrameTime: 2.299 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 478 FrameTime: 2.092 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 477 FrameTime: 2.096 ms
=======================================================
                                 glmark2 Score: 479
=======================================================

비교적 최신의 보급형 그래픽 카드 치고는 성능이 좋지 않습니다. 혹시나 해서 nVIDIA 홈페이지에 가서 리눅스용 최신 드라이버 버전을 보니 331.20 버전이더군요. 그런데 리눅스 민트에서 제공하는 버전은 313.30 버전이니 간격이 큽니다. 그래서 최신 버전의 드라이버를 설치해야겠다는 생각을 했습니다.

nVIDIA의 최신 드라이버는 nVIDIA로부터 다운로드 받아 설치할 수도 있습니다만... 꽤나 번거롭고 실패할 확률도 제법 있습니다. 저 또한 그런 경험이 있구요. 가장 쉬운 방법은 최신 드라이버와 최신 X서버 시스템을 제공하는 개발팀으로부터 업데이트를 받는 것입니다. 저는 "xorg crack pusher" 팀의 "xorg-edgers"를 설치해 봤습니다. 이 패치는 우분투 계열의 버전 12.04 이후에서만 설치 가능합니다.

설치 방법은 다음과 같습니다.

sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get install xorg-server

설치가 정상적으로 되었다면 컴퓨터를 리부팅합니다. 그리고 "Driver Manager"를 띄워서 가장 최신 버전의 드라이버가 선택된 상태인지 확인합니다. 저의 경우는 nvidia-331이 최신이더군요. 만일 선택되지 않았다면 선택하고 "Apply Change"을 누르면 됩니다.


그런데 실제로 설치할 때 기록을 남기지 않고 기억에 의존하여 작성하는 글이니 디테일이 약간 다를 수 있습니다. 자세한 설치에 대한 자세한 문서는 다음 URL을 참고하세요. https://launchpad.net/~xorg-edgers/+archive/ppa

그러면 과연 얼마나 성능이 좋아졌을까요? 다시 glmark2를 돌려보니 다음과 같이 나옵니다.

=======================================================
   glmark2 2012.08
=======================================================
   OpenGL Information
   GL_VENDOR:     NVIDIA Corporation
   GL_RENDERER:   GeForce GTX 650/PCIe/SSE2
   GL_VERSION:    4.4.0 NVIDIA 331.20
=======================================================
[build] use-vbo=false: FPS: 2516 FrameTime: 0.397 ms
[build] use-vbo=true: FPS: 5179 FrameTime: 0.193 ms
[texture] texture-filter=nearest: FPS: 3583 FrameTime: 0.279 ms
[texture] texture-filter=linear: FPS: 3722 FrameTime: 0.269 ms
[texture] texture-filter=mipmap: FPS: 4311 FrameTime: 0.232 ms
[shading] shading=gouraud: FPS: 3544 FrameTime: 0.282 ms
[shading] shading=blinn-phong-inf: FPS: 4000 FrameTime: 0.250 ms
[shading] shading=phong: FPS: 3563 FrameTime: 0.281 ms
[bump] bump-render=high-poly: FPS: 2201 FrameTime: 0.454 ms
[bump] bump-render=normals: FPS: 3852 FrameTime: 0.260 ms
[bump] bump-render=height: FPS: 3618 FrameTime: 0.276 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 3406 FrameTime: 0.294 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1944 FrameTime: 0.514 ms
[pulsar] light=false:quads=5:texture=false: FPS: 3028 FrameTime: 0.330 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 1319 FrameTime: 0.758 ms
[desktop] effect=shadow:windows=4: FPS: 1862 FrameTime: 0.537 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1065 FrameTime: 0.939 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1339 FrameTime: 0.747 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1167 FrameTime: 0.857 ms
[ideas] speed=duration: FPS: 2411 FrameTime: 0.415 ms
[jellyfish] <default>: FPS: 1761 FrameTime: 0.568 ms
[terrain] <default>: FPS: 326 FrameTime: 3.067 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 4111 FrameTime: 0.243 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3599 FrameTime: 0.278 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 4068 FrameTime: 0.246 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 3990 FrameTime: 0.251 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 4108 FrameTime: 0.243 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 4778 FrameTime: 0.209 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 4158 FrameTime: 0.241 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 4226 FrameTime: 0.237 ms
=======================================================
                                 glmark2 Score: 3091
=======================================================

위와 같이 glmark2 스코어가 479에서 3091로 무려 6배 정도 성능이 향상이 되었습니다. 드라이버만 최신으로 바꿨는데도요. 아마도 기존의 313버전 드라이버가 GTX650에 적용된 새로운 GPU코어의 성능을 제대로 뽑아내지 못했던 것 같습니다.

이렇게 해서 모니터도 3개 연결하여 잘 쓰고 있고, 예전에 비해 그래픽 성능도 많이 좋아져서 매우 만족하고 있습니다.

매일 업데이트 되지 않게 하려면...

그런데 xorg-edgers 패키지 제공자는 개발용이라 매일 업데이트가 됩니다. 그래서 매일 업데이트하라는 메시지가 떠서 번거롭습니다. 그래서 일단 한번 설치하고 나서 잘 돌아간다면 더 이상 업데이트가 되지 않도록 하는게 편합니다.

시냅틱 패키지 관리자를 띄워서 "설정" 메뉴의 "저장소"를 클릭합니다. 그러면 아래 그림과 같이 조금전 추가한 xorg-edgers 저장소를 볼 수 있습니다. xorg-edgers에 해당하는 두개의 저장소에 대해 사용한다는 체크 표시를 해제하고 "확인"을 누르면 더 이상 업데이트되지 않습니다.


혹은 같은 팀에서 배포하는 안정화 버전 저장소(PPA) "ubuntu-x-swat"을 사용해도 됩니다. 지원하는 우분투 버전을 잘 따라가지 못한다는 평이 있으니 해보시고 안되면 xorg-edgers로 갈아타시면 됩니다. 자세한 내용은 다음 링크를 확인하세요. https://launchpad.net/~ubuntu-x-swat/+archive/x-updates


댓글 없음:

댓글 쓰기