NAS & ODROID/NAS, ODROID

오드로이드 XU4 를 개인 클라우드 서버로 - CPU Governor

awesometic 2017. 5. 8. 14:51
반응형

Tweak 출처: https://obihoernchen.net/1235/odroid-xu4-with-openmediavault/

 고성능의 프로세서는 보통 높은 클럭에서 돌아갑니다. 오늘날 한 프로세서당 2Ghz를 넘는 건 일반적이죠.

 초당 1Hz 에 한 가지 명령어를 수행한다고 쳤을 때, 2Ghz면 2,000,000,000가지 명령어를 수행할 수 있습니다. 말 그대로 명령어 수행 사이클을 20억 번 도는 겁니다. 하지만 컴퓨터가 아무 작업도 하지 않는 아이들(idle) 상태일 땐 그렇게 많이 돌 필요가 있을까요? 실제로 20억 번 돌지만, 15억 번 이상은 아무 명령어도 가지고 있지 않은 채 돌고 있는 겁니다. 즉, 쓸모없는 소비 전력과 발열이 발생합니다. 

 CPU Governor는 이런 현상을 방지해줍니다. CPU가 할 일이 별로 없을 땐 적은 클럭으로, 할 일이 많을 땐 많은 클럭으로 작동시켜 낭비되는 에너지를 절약해주고, 쿨러도 덜 작동하니 소음도 적어집니다. 이렇게 수요에 따라 타겟 주파수를 정해준다는 의미로 CPU Frequency Governor, CPU Frequency Scaling 라고도 합니다. 당연하게도, CPU Governor는 안드로이드 스마트폰에서 더욱 중요한 역할을 하고 있습니다. 리눅스 뿐 아니라 범용으로 꼭 필요한 기술로써, CPU/GPU 제조사들은 전부 자체적인 방법으로 클럭 주파수를 제어하고 있습니다.

 물론 오드로이드 XU4에서도 필요한 작업입니다. 분명 자체적으로 CPU Governor가 존재하지만, 소음도 소음이고 출처에 따르면 좋지 않은 CPU 정책으로 성능또한 저하된다고 써있습니다.

 출처 블로거분이 대단하신 것 같아요. IRQ Balancing에 이어 CPU Governor까지 튜닝하시네요. 결과는 간단해도, 여러 번의 테스트를 거쳐야만 기본값보다 더 좋은 성능을 낼 수 있게 만들지 않겠어요?

 고생하셨는데, 따라해 봅시다.




 이미 적용했기 때문에 기본값을 보여드리기가 어렵네요. 보시고 싶으신 분들은 아래 명령어로 확인하실 수 있습니다.

ll /sys/devices/system/cpu/cpufreq

 ondemand, policy0과 policy4 디렉토리가 있는데 ondemand는 governor고 policy들은 각각 0~3번 CPU, 4~7번 CPU를 담당하는 정책으로 보입니다. policy에 사용 가능한 CPU Frequency 관련 정보가 있고, 그걸 적절히 사용하는 애가 ondemand 등 governor입니다.

 사실 이쪽 전문가는 아니라 어떤 파일이 어떻게 엮여서 작동되는지 정확힌 모르겠네요 :) 삘로 해봅시다.

 블로그에서 제안하는 대로, ondemand란 이름의 정책을 수정해 봅시다.


1. sysfsutils 설치

 sysfsutils란 툴로 가버너를 바꿀 수 있다고 합니다.

sudo apt-get install sysfsutils


2. sysfs.conf 설정

 해당 파일에 수정 사항을 적어줍니다.

sudo /etc/sysfs.conf

# cpu0 sets cpu[0-3], cpu4 sets cpu[4-7]
devices/system/cpu/cpufreq/ondemand/io_is_busy = 1
devices/system/cpu/cpufreq/ondemand/sampling_down_factor = 10
devices/system/cpu/cpufreq/ondemand/up_threshold = 80

 참고로 출처 블로그와는 경로가 살짝 다릅니다. 출처 블로거가 포스팅할 땐 cpu0, cpu4 별로 ondemand 등 가버너가 존재했던 것 같은데, 이번엔 ondemand 등 가버너들이 거의 독립적으로 된 것 같네요.


3. 적용

 그리고 적용시켜줍니다.

sudo cpufreq-set -g ondemand -c 0
sudo cpufreq-set -g ondemand -c 4
sudo service sysfsutils start


4. 확인

 확인하고 싶으신 분들은 위의 내용이 잘 들어갔나 보시면 됩니다.

 CPU 가버너는 기본값으로 ondemand를 사용 중이니 변경한 값이 io_is_busy, sampling_down_factor, up_threshold 파일에 잘 들어갔나 확인해봅니다.

sudo cat /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
sudo cat /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
sudo cat /sys/devices/system/cpu/cpufreq/ondemand/up_threshold

 각각 1, 10, 80이 나와야 정상입니다.

 만약 잘 안 된 것 같으면 먼저 아래 명령어를 쳐 봅니다.

sudo service sysfsutils status

 오타나 이상이 있을 시 unknown attributes 등 오류를 뿜어냅니다. /etc/sysfs.conf 의 파일 내용을 잘 확인한 후 다시 적용해봅니다.




전체 글 목록
2017/04/23 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 1. 우분투 설치
2017/04/24 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 2. Webmin 설치
2017/04/25 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 3. 외장하드 마운트
2017/04/25 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 4. Samba
2017/04/28 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 5. Plex
2017/04/30 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 6. Nginx, PHP, MariaDB
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 7. h5ai
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 8. Wordpress
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 9. 무료 도메인
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 10. 무료 SSL
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - IRQ Balancing
2017/05/08 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - CPU Governor

반응형