Local APIC on scaled frequencies

Local APIC on scaled frequencies

Here are my questions:
(My observations are based on Linux 2.6.24 Kernel)
1) I want to find-out the the tick count(say for 100 ms) of the local APIC when the cpu operates in different frequencies. When I study this matter I found that the local APIC does not tick(does not work accurately) reliably in scaled(low) frequencies. 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 with the maximum cpu frequency, it maches with the number of ticks that the system generates at the time of the initial LAPIC calibration, which happens at the very beging of the kernel initialisation; however when I try to count the number of ticks with a 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-porgams 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-porgram happens from the LAPIC handler "hrtimer_interrupt" which I replace with a dummy handler.

2) If I want to change the frequency of the system as rapidly as possible what is the best method ? At the moment I write MSR_IA32_PERF_CTL, MSR directly with the pre found(calculated, encoded) values for different frequencies. (I found the entire transition latency takes Milli seconds to complete.)

3) Do you have any data sheets of Core 2 series for frequency transition information such as the transition time or any information about the behaviour of the system (frequency transition curve) during the transition period.

I highly appreciate your help clarifying these unsolved doubts.


1 post / 0 new
For more complete information about compiler optimizations, see our Optimization Notice.