모든것이 파일이다 - radeon gpu power management

마잇의 이미지

파일시스템의 정의가 굉장히 햇갈리네요..

http://kldp.org/node/130548

저 글타래를 보니 직접적으로 관련된 내용은 아니지만 얼마전 경험했던 일이 생각나네요.

'모든것이 파일이다' - 오래전 부터 관습화된 유닉스 계열의 전통이라고 알고 있습니다.

/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 카드만 써온 불쌍한 사람.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.