다들 알다시피 라데온계열은 공식 드라이버를 잘 안 씁니다. Catalyst(패키지명은 fglrx)라 명명된 이 물건은 그야말로 쓰레기로 알려져서 안정성 저하와 패키지 충돌 등 않좋은 것은 다 있었지요. 이게 윈도에서도 마찬가지였던지라 악명이 자자해서 윈도에서도 오픈소스 드라이버를 원한다는 이야기가 들려옵니다.


어쨌건 이런 엉망진창인 드라이버 대신 그동안 잘 사용해 온 드라이버가 radeon드라이버 입니다. 우분투의 기본 드라이버 중 하나입니다. Nvidia의 오픈소스 드라입인 nouveau와는 다르게 워낙 사용자 층이 두터워서 Catalyst의 성능을 따라잡은지 한참 지났습니다.

하지만 워낙 지원 범위가 넓은 덕에 (Wonder시리즈, radeon 7000대~현재) 덩치가 너무 커져 버린 문제가 있습니다. 이전에 이런 문제를 해결하기 위해 R300~R600시절에 radeonhd라는 드라이버가 잠시 나왔지만 gallium프로젝트로 인해 기존 radeon 드라이버로 통합 되었습니다. 그러던 중 지금 R3,4,5,7,9 시리즈가 되면서 새로운 드라이버가 등장했습니다. 그 이름하여 amdgpu입니다.


커널 4.5부터 지원이 시작되었으며 GCN1.1~지원 중입니다. 성능은 radeon과 비교해서 그럭저럭 좋습니다. Catalyst와 이미 엎치락뒤치락 하는 중이니 성능면에서는 좋다고 할 수 있습니다. 하지만 이 새로운 드라이버의 강점은 크기가 작다는 점입니다. 오래된 코드를 쳐냈기에 조금 더 드라이버가 최적화될 여지가 있습니다.


http://www.phoronix.com/scan.php?page=article&item=cat-rad-amdgpu&num=1

실제로 몇몇 부분에서는 radeon에 비해 더 좋습니다. 심지어 Catalyst와 비교해도 꽤 좋습니다. 물론 Catalyst가 조금 더 좋지만 안정성 면이나 드라이버 업데이트 면에서 오픈소스를 더 추천합니다.


우분투 16.04에서 이를 쓰기 위해서는 https://www.linkedin.com/pulse/using-newer-amdgpu-driver-ubuntu-1604lts-dennis-mungai

여기에 나온 데로 해주시면 좋습니다.


우분투 16.04는 4.4커널을 쓰기 때문에 4.5부터 지원하는 amdgpu 드라이버를 쓸 수 없습니다. 그래서 커널 컴파일을 하는 것을 추천하는데

https://github.com/Turbine1991/build_ubuntu_kernel_wastedcores

여기의 커널을 추천하더군요. 이 github는 커널 스케줄러 패치를 적용해주는 스크립트로서 http://www.ece.ubc.ca/%7Esasha/papers/eurosys16-final29.pdf


이 논문은 커널 스케줄러를 개선하는 내용으로 자세는 알 수 없으나 15%정도의 효율이 좋아진다고 합니다. 이걸 적용하는 커널을 컴파일 해주는 스크립트를 사용하면 실제로 그런지는 알 수 없으나 이 논문 내용을 믿는다면 확인이 가능하겠지요.


커널업데이트 방법은 다음과 같습니다.



그냥 github에서 clone받고 스크립트를 순서대로 실행하면 됩니다. 물론 시간은 상당히 걸립니다. 중간중간 물어보는 것도 많으니 마냥 켜놓고 기다린다고 능사는 아닙니다.


아 clone.sh 실행 전에 스크립트 일부를 수정해야 합니다.

clone.sh를 텍스트 에디터로 여신다음

검색-찾아바꾸기 (혹은 그러한 기능)

4.6을 4.7혹은 현재 최신 커널 버전으로 고쳐주시기 바랍니다. 2016년 8월 23일 현재 안정커널 최신판은 4.7이므로 4.7을 받는 것이 좋습니다.


그러면 중간에 버전 선택지에 고치신 최신 버전이 있습니다. 이를 선택해 주시기 바랍니다.


2017.6월 현재 커널 버전이 업그레이드 되어감에 따라 버전 선택의 폭이 넓어 졌습니다. 이제 위의 작업은 안 하셔도 됩니다. 바로 버전 선택이 가능합니다.


중간에 menu.sh 실행 후에 Enable amdgpu support for CIK parts 부분을 yes라고 해야 합니다. 나머지는 별로 문제가 없는데 이 부분이 amdgpu를 사용하는데 제일 중요합니다.



이후 커널 컴파일 한 다음


/etc/default/grub 파일을 편집합니다. 당연히 관리자 권한으로 해야겠지요.


GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"


여기서 splash 뒤에 amdgpu.exp_hw_support=1 modprobe.blacklist=radeon

요걸 적어주시면 됩니다. 그 다음


sudo dpkg linux-*.deb

로 설치하시면 amdgpu드라이버를 사용 할 준비가 되었습니다.


amdgpu드라이버는 oibaf PPA를 사용하시면 됩니다. oibaf PPA등록은 제 블로그에 워낙 자주 나오니 넘어가겠습니다.


,

리눅스에서 AMD는 언제나 찬밥이었습니다. 기본적인 Catalyst의 안정성이 개판이라 그래픽 성능이 영 아니었으니까요.


하지만 그에 대한 반사 이익으로 오픈소스 드라이버가 어마어마하게 발전했습니다. 이제는 Catalyst의 성능을 따라잡고 그 성능을 뛰어 넘기 시작했습니다. 물론 AMD에서 드라이버 관련 문서를 커뮤니티에 제공한 덕이지만 문서만 가지고 성능을 높혔다는 것은 대단한 성과라고 할 수 있습니다.


AMD는 여기에 많은 것을 느낀 것인지 직접 커널 패치를 제공하기 시작했습니다. AMD의 각종 기술을 직접 커널에서 제공 할 수 있도록 드라이버를 제공했다고 생각하시면 되는데요. HSA같은 기술은 물론이고 Windows에서 자주 써먹는 Overdrive 기술을 커널에서 제공하는 패치를 4.5버전에 넣었습니다.


http://www.phoronix.com/scan.php?page=news_item&px=Linux-4.5-Kernel-Week-One


http://www.phoronix.com/scan.php?page=news_item&px=AMDGPU-OverDrive-Support


AMD가 직접 패치를 제공한 것인지 아니면 문서만 제공하고 커뮤니티에서 만든 것인지는 자세히는 모릅니다. 다만 AMD제품의 리눅스 호환성이 굉장히 좋아지고 있고 그에 따라 이미지 개선을 하는 좋은 모습을 보이고 있습니다.


4.5버전에 제공한 이후 오버드라이브를 터미널에서 구동하는 방법으로 개선하고 있습니다.

물론 오버드라이브라는 것이 결국에는 일종의 오버클럭이라 노트북이나 모바일 기기에서는 추천하지 않지만 잠시 성능을 끌어올리는 수준에서는 괜찮은 솔루션으로 평가받고 있습니다.

http://www.amd.com/en-us/innovations/software-technologies/technologies-gaming/over-drive


리눅스 게이밍이 제 블로그에서 자주 나오고 있는데 이러한 몇몇 부분이 저를 도와 주고 있는 셈입니다.

다만 우분투 16.04는 커널버전이 4.4라 오버드라이브가 지원되지 않습니다. 따라서 커널을 업데이트해서 4.8정도로 업데이트 하는 것을 추천 드립니다.


그럼 오버드라이브를 사용하는 것을 알려드리겠습니다. 단, 이 기능은 radeon드라이버가 아닌 amdgpu드라이버를 사용했을 경우에만 작동되며 amdgpu드라이버는 GCN1.2이후 버전은 정식지원 GCN1.0~1.1버전은 실험적기능을 통해(2017년 기준 커널에서 활성화 해야 합니다.) 지원하고 있습니다. 최신식 AMD그래픽카드(R시리즈 이후)를 사용하시는 분들은 바로 사용이 가능하실겁니다.


아직 GUI는 나오지 않았습니다. 사실 맘먹고 만들면 금방 만들 수는 있는데 제가 만들어봐야 더 좋은 물건이 곧 나올 것 같으니 (개인적으로 driconf에서 지원했으면 좋겠습니다.) 그냥 터미널 명령을 우선 알려드리겠습니다.


/sys/class/drm/card0/device/pp_sclk_od


이 부분이 바로 오버드라이브의 설정sysfs입니다. 무슨말인지 잘 모르시겠다고요?


그럼 다음과 같이 명령을 쳐봅시다.

sudo cat /sys/class/drm/card0/device/pp_sclk_od


이렇게 하면 0이라고 나오게 될 것입니다. 커널에 들어간 오버드라이브는 퍼센트로 오버클럭을 시도하는데 지금은 0%의 오버클럭을 했다는 의미입니다.


그러면 이렇게 해봅시다.


sudo echo 5 > /sys/class/drm/card0/device/pp_sclk_od 


이렇게 하고 3D 연산을 해보시면 약간 빨라졌음을 알 수 있습니다. 5%의 오버클럭을 한 것이거든요.


이런 오버드라이브의 최대는 20입니다. 20%만 빨라져도 미친 발열이 나는 것이 현실입니다. 적당히 합시다.

기본적인 Catalyst는 자동 오버클럭을 하는데 아직 리눅스는 자동으로 해주는 데몬이 개발이 안 되어서 이렇습니다. 온도 센서부분과 전압체크 부분이 정상적으로 작동되면 Catalyst와 동일한 성능을 내줄 것으로 기대하고 있습니다. 역으로 말하면 사람이 직접 손대기가 쉽다는 의미이기도 합니다.


예전에 rovclock으로 고생한거랑 비교하면 정말 하늘과 땅의 차이군요. 이렇게 말하고 싶군요.


우리 AMD가 달라졌어요!

,

https://kparal.wordpress.com/2014/03/03/fraps-like-fps-overlay-for-linux/

여기가 출처


이전에 윈도우에서는 Fraps란 유틸리티가 있었습니다. 이 유틸리티의 특징은 게임상에서 한쪽 귀퉁이에 현재 몇 프레임으로 작동하는지 보여주는 것이었습니다. (추후 게임 화면 녹화 기능이 추가되면서 유명해집니다.)


리눅스에서는 오픈소스 드라이버를 사용한다는 가정하에서 이를 명령으로 볼 수있게 해줍니다.


gallium드라이버에서 이를 지원하는데요. 그냥 간단하게


GALLIUM_HUD="fps" mygame


명령을 이렇게 내려주면 됩니다.

mygame대신에 steam을 적은 다음 스팀 게임을 실행해도 정상적으로 작동합니다. OpenGL만 구동되면 다 되는 듯 합니다.


여기에 cpu사용율도 볼 수있는데


GALLIUM_HUD="fps,cpu+cpu0+cpu1+cpu2+cpu3:100" mygame


요렇게 해주시면 됩니다. 이 경우는 CPU가 쿼드코어인 경우이고 코어수에 맞춰서 잘 써먹으면 되겠습니다.


wine을 통한 게임도 실행이 잘 되는군요.

XOSD를 사용한 것으로 쉽게 확인이 가능하다.



,