Intel Local APIC behavior on low frequencies

From: pradeep hettiarachchi
Date: Tue Sep 22 2009 - 12:55:56 EST


Hi,

Here’s a description of my problem. It would be great if you can find
some info on this matter.



I need to find some information about local APIC and CPU frequency
scaling behavior.  Currently I am modifying  the Linux kernel for my
research, which involves studying a custom job scheduler I am
developing at different CPU frequencies.  As we know, if the kernel
works in tick-less mode (and in hi resolution mode) it uses the local
APIC as a clock event device and as the clock tick device.



My working environment is: Linux vanilla kernel 2.6.24, Intel core 2
Quad Q6600, Intel core 2 duo T6500 processors. Gcc compiler and the
tool chain.

The information I am trying to find is:

1) I want to find-out the tick count(say for a 100 ms period) of the
local APIC when the CPU operates at different operating frequencies.
When I study this matter, I found that the local APIC does not tick
(does not work accurately) reliably as the clock frequency is varied.
It works accurately in the maximum frequency of the system. Do you
know any reason for that? or it is the way it operates?(is that
normal?)

(my observation: when I count the LAPIC tick count for the maximum CPU
frequency, it matches with the number of ticks that the system
generates at the time of the initial LAPIC calibration, which happens
at the very beginning of the kernel initialization; however when I try
to count the number of ticks with scaled frequencies, the LAPIC
"current counter" difference is very less, some times less than 100
for 100 ms, which should not be true.)

I don't have good reason to think that, some other task re-programs
the LAPIC: I set the LAPIC "initial counter" to a huge value, further
I assume when the system works in hi resolution mode, the re-program
happens from the LAPIC handler "hrtimer_interrupt" which I replace
with a dummy handler.

Thank you in advance.

-Pradeep
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/