[ntp:questions] NTP + kernel frequency

Andrew Hood ajhood at fl_net_au.invalid
Tue Nov 13 11:52:34 UTC 2007

On Sat, 10 Nov 2007 00:38:23 +0000, Per Hedeland wrote:

> In article <k7mdnaWnzZTu6q7anZ2dnUVZWhednZ2d at megapath.net>
> hal-usenet at ip-64-139-1-69.sjc.megapath.net (Hal Murray) writes:
>>>I known now, in the "recen"t kernel the internal frequency will be to
>>>250 Mhz...
>>>With my gentoo it's not a problem for me because i make myself my kernel
>>>... but if i take Mandriva or a another distribution how find this
>>>values ?
>>I assume you mean the scheduling clock which would be 250 Hz rather than
>>One way is to look in the kernel souces.
>>Another way is to measure it.  Write a program that usleeps for a
>>microsecond and see how long it really takes.  (Do it in a loop for 1000
>>tries and print out a histogram.)
> On Linux, a simpler way can be to look at /proc/interrupts - e.g.
> (probably Linux-version- and possibly config-specific):
> $ (cat /proc/interrupts; sleep 10; cat /proc/interrupts) | \
>   awk '/timer/{prev=now; now=$2} END{printf "%dHz\n", int((now-prev)/10)}'

This doesn't work on multi-CPU systems.

: cat /proc/interrupts |grep timer 
  0:  129602418  129428516    IO-APIC-edge  timer

You need to sum across all CPUs. A bit more complex:

-------------- snip --------------

#!/usr/bin/perl -w

$cpus=`grep -c processor /proc/cpuinfo`;

$_=`grep timer /proc/interrupts`; @prev=split();

sleep 10;

$_ =`grep timer /proc/interrupts`; @now =split();

for (1..$cpus) { $prev+=$prev[$_]; $now+=$now[$_]}

printf "%dHz\n", int(($now-$prev)/10);

-------------- snip --------------

2007/11/13:11:39:48UTC Slackware Linux 2.4.32
up 29 days, 23:31,  6 users,  load average: 2.18, 2.26, 2.25

More information about the questions mailing list