2012-11-28 4 views
6

리눅스 커널 타이머 (인터럽트) 빈도를 계산할 커널 모듈을 작성해야합니다.리눅스에서 타이머 빈도를 결정하는 방법

누군가를 위해 (내 모듈에 타이머를 사용해야하지만 난 분명히 :(

내 최종 목표는 일부 파일에 결과 (주파수)를 작성하는 것입니다 그렇게하는 방법을 모르는 나에게 말했다 예 :./proc 디렉토리/osfreq /)

=)

+1

커널 타이머 인터럽트 주파수가 이미 ''에 있습니다. – iabdalkader

+0

로그에 기록해야합니다. 파일의 실시간 값입니다. – Emadpres

+0

목표가 분명하지 않습니다. 모듈을 쓰고 싶습니까? 커널 타이머를 사용하거나 인터럽트 발생 빈도를 측정하고 싶습니까? – Raber

답변

8

는 CPU의 시간 주파수 얻을 수있는 여러 가지 방법이 있습니다 :

1. zcat /proc/config.gz |grep CONFIG_HZ 

# CONFIG_HZ_100 is not set 
CONFIG_HZ_250=y 
# CONFIG_HZ_1000 is not set 
CONFIG_HZ=250 

250 Hz에서 의미를

2. cat /proc/interrupts |grep LOC; sleep 1;cat /proc/interrupts |grep LOC 

LOC: 43986173 44089526 43986113 44089117 
LOC: 43986424 44089777 43986364 44089368 

은 주파수가 43986424 - 43986173 ~ 250 인 논리 CPU가 4 개 있다는 것을 의미합니다.

또한 커널 공간에서 proc.c의 var cpu_khz 값을 얻을 수 있습니다.

+0

솔루션,하지만 내 욕망 대답 .. 우리는 주파수가 정말 어느 정도 일정하지 않다는 것을 알고 .. 나는 모듈로 현재의 실제 가치를 얻을 필요가있다. – Emadpres

+0

10 초 지연 후 동일한 결과가 나타납니다. cat/proc/interrupts | grep LOC; 수면 10; cat/proc/interrupts | grep LOC LOC : 98 152 121 91 로컬 타이머 인터럽트 LOC : 98 152 121 91 로컬 타이머 인터럽트 – Michael

+0

나를 위해 작동하지 않습니다. - /proc/config.gz가없고 1 사이의 LOC 값이 250 (하나의 CPU는 ~ 8k, 다른 하나는 ~ 11k). 내가 예상했던 것에서 너무 멀리 떨어져있는 것처럼 보입니다. –

1

printk를 사용하여 모듈에 전역 변수 HZ의 값을 인쇄하고 $ dmesg를 사용하여 모듈을로드 한 후 커널 로그를 확인하면 HZ 값을 찾을 수 있습니다.

관련 문제