모든것이 파일이다 - radeon gpu power management
파일시스템의 정의가 굉장히 햇갈리네요..
저 글타래를 보니 직접적으로 관련된 내용은 아니지만 얼마전 경험했던 일이 생각나네요.
'모든것이 파일이다' - 오래전 부터 관습화된 유닉스 계열의 전통이라고 알고 있습니다.
/proc, /sys 파일 시스템과 같은 특수한 형태의 파일들도 그런 맥락에서 만들지 않았나 싶습니다. 일반 파일과는 다른 점이 분명 있기는 하겠습니다. 하지만 '파일'이라는 가장 보편적인 형태로 제공되기 때문에 이미 모든 것이 파일 기반으로 작동하고 있는 시스템 환경에 잘 조화되는 것이 장점인 것 같습니다.
저는 ATI 5770 비디오 카드를 사용하는데 팬이 없고 방열판만 엄청 넓고 크게 달려 있습니다. 소음을 줄이기 위해서 구입했었습니다. 문제는 리눅스 환경에서 ATI(AMD)측에서 제공하는 드라이버는 최초 버전부터 형편 없었고 지금까지도 마찬가지 입니다. 미래에는 좋아지길 희망하고 또 그렇게 되도록 노력하고 있다고는 하는데 오늘 당장 리눅스용 비디오 카드를 사신다면 Nvidia를 사셔야 합니다.
어쨌든 AMD 드라이버 말고 오픈소스로 개발되는 드라이버가 따로 있는데 이 드라이버가 3D성능은 상대적으로 현저히 떨어지지만 게임을 하지 않는 상황에서는 적당히 안정적인 2D 성능과 Unity, Gnome Shell 정도를 돌려줄 3D 성능은 나옵니다. 하지만 제가 이 드라이버를 쓰지 못했던 이유 중에 하나가 전력 관리가 안되서였습니다. GPU 클럭을 가변적으로 조정해 줘야 온도가 적당히 유지 되는데 오픈 소스 드라이버는 항상 최고 성능 상태를 유지하니 가뜩이나 팬도 없는 제 비디오 카드 온도가 장난 아니게 올라가서 별 수 없이 불안정 하지만 AMD 드라이버를 사용했었습니다.
그런데 작년 언제쯤인가 오픈소스 드라이버에도 이 기능이 추가되었습니다. 하지만 아직 완전한 구현이 아닌지 이 기능이 기본적으로 활성화 되지 않았었습니다. 오픈소스 드라이버를 쓰면 비디오 재생이나 전반적인 화면 성능이 현저히 좋아지는지라 이 소식을 듣고 눈에 불을 켜고 어떻게 하면 이 기능을 쓸 수 있나 찾아 보았습니다. 터미널의 깊고 깊은 암흑과 싸워 만들어낸 결과는 다음과 같습니다.
# radeon gpu power management
alias profilepm='sudo bash -c "echo profile > /sys/class/drm/card0/device/power_method"'
alias auto='profilepm && sudo bash -c "echo auto > /sys/class/drm/card0/device/power_profile"'
alias low='profilepm && sudo bash -c "echo low > /sys/class/drm/card0/device/power_profile"'
alias mid='profilepm && sudo bash -c "echo mid > /sys/class/drm/card0/device/power_profile"'
alias high='profilepm && sudo bash -c "echo high > /sys/class/drm/card0/device/power_profile"'
alias dynpm='sudo bash -c "echo dynpm > /sys/class/drm/card0/device/power_method"'
alias gpu="sudo cat /sys/kernel/debug/dri/0/radeon_pm_info /sys/class/drm/card0/device/power_method"
핵심은,
/sys/class/drm/card0/device/power_method
/sys/class/drm/card0/device/power_profile
/sys/kernel/debug/dri/0/radeon_pm_info
이 세 파일들입니다.
아쉽게도 전력 관리를 자동으로 해주는 설정이나 프로그램을 찾지는 못했지만 저 파일들의 존재와 저 파일들이 어떤 값에 반응 하는지에 대한 정보가 있어서 크게 어렵지 않게 제 스스로 해볼 수가 있었습니다.
저 명령들은 커널 드라이버를 통해서 비디오 카드를 '직접' 제어할 수 있는 동작 입니다. 일반 사용자가 전문적인 지식 없이는 시도 하기도 힘들고 위험한 작업이라고 볼 수 있지만 '파일'이라는 보편적인 입출력 형태로 제공되었기 때문에 'echo', 'cat' 같은 기초적인 파일 입출력 명령어들로 제어할수가 있었습니다.
아직 보편적으로 제공되지 않는 하드웨어의 깊숙한 기능까지 어렵지 않게 제어할 수 있는 해주는 이런 간편한 경험이 '모든 것이 파일이다'라는 전통에 고개를 끄덕거리게 되지 않나 싶네요. 다른 분들도 이런 경험 있으신지 궁금 합니다.
소프트웨어 개발하시거나 시스템 운영하시는 분들도 이런 부분이 도움이 될 때가 있으신가요?
요약 : 하느님이 보우하셔서 fglrx 좀 제대로 만들게 해주세요. radeon 드라이버팀도 화이팅 ㅜㅜ
서명 : 어찌하다보니 근 10년 리눅스에서 ATI 카드만 써온 불쌍한 사람.
댓글 달기