2012-07-31 5 views
2

리눅스 (우분투)에서 내 프로그램의 CPU (ARM) 주파수를 변경하고 싶습니다.Cpu 주파수 스케일링 리눅스 API

C에서 CPU 빈도 조정 및 코어 API가 꺼져 있습니까?

API가 있으면 멀티 코어 CPU에서 각 코어를 처리 할 수 ​​있습니까?

답변

0

아마도 /sys/proc/ 파일 시스템을 사용해야하고, 예를 들어 파일 아래에 몇 가지 파일을 작성해야합니다. 아마도 /sys/devices/system/cpu/

에서 당신은 system(3)cpufreq-set 명령을 포크 수, BTW에 대한 dynamic frequency scaling

하고있는 무엇 cpufreq-set으로 살펴 보겠습니다.

(나는 이러한 측면에서 ARM 프로세서의 특수성을 모르는)

리눅스의 주파수를 제어 할 수있는 여러 가지 방법이 있습니다
4

. IA32_PERF_CTL 레지스터를 사용하여 지원되는 Intel 프로세서의 전원 상태를 설정할 수 있습니다. 그러나 sysfs 파일 시스템을 통해 내 보낸 cpufreq 인터페이스를 사용할 수도 있습니다.이 인터페이스는 Intel CPU를 지원합니다.

/sys/devices/system/cpu/cpuX/*에서 변경할 수있는 매개 변수를 볼 수 있습니다. 여기에 몇 가지 팁이 있습니다.

주파수 조정 기능을 끄려면 프로세서가 다른 상태에 놓이는 전략을 처리하는 조정자 (governor)를 사용합니다. 예를 들어, 전체의 preformance를 얻기 위해 당신이 할 :

cat /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_governors 

을가 파일 시스템 인터페이스를 통해 액세스 할 수 성가신이므로 :

echo performance > /sys/devices/system/cpu/cpuX/cpufreq/scaling_governor 

당신이 여기에서 볼 수있는 여러 총재가 있습니다. cpufreqs 구성원에 액세스하기 위해 libudev를 사용할 수 있습니다. 튜토리얼은 udev documentationhere을 참조하십시오.

각 코어를 개별적으로 처리하는 것과 관련된 한 가지 제한 사항입니다. 그것은 CPU의 지원에 달려 있습니다. 때로는 하드웨어의 단순한 한계와 같이 둘 이상의 코어가 동일한 주파수에서 실행되어야합니다. 답변을 보려면 post을 참조하십시오.

+1

sysfs를 통해 빈도를 변경하는 것이 왜 까다로운 지 알 수 없습니다. 그리고 여기서 libudev 라이브러리를 사용하면 어떤 이점이 있습니다. –