[x86] apic timer tick interval is not so accurate in periodic mode

From: Kevin Hao
Date: Wed Aug 20 2008 - 05:37:14 EST


Hi all,

I found the apic timer tick interval is not so accurate when it works
in periodic mode(CONFIG_HIGH_RES_TIMERS=N).
But in one-shot mode(CONFIG_HIGH_RES_TIMERS=Y) it works well.
I tested it on a Dell390 pc. HZ is 250. Kernel version is 2.6.27-rc3.
The following is the result:

In periodic mode:
tick = 1, apic tick timer interval is 4020211
tick = 1, apic tick timer interval is 4020233
tick = 1, apic tick timer interval is 4020233
tick = 1, apic tick timer interval is 4020199
tick = 1, apic tick timer interval is 4020267
tick = 1, apic tick timer interval is 4020218
tick = 1, apic tick timer interval is 4020278
tick = 1, apic tick timer interval is 4020173


In one-shot mode:
tick = 1, apic tick timer interval is 3999930
tick = 1, apic tick timer interval is 4000035
tick = 1, apic tick timer interval is 3999998
tick = 1, apic tick timer interval is 4000005
tick = 1, apic tick timer interval is 4000001
tick = 1, apic tick timer interval is 4000009
tick = 1, apic tick timer interval is 3999945
tick = 1, apic tick timer interval is 4000024
tick = 1, apic tick timer interval is 4000005

Why is there so big difference between these two mode?
The attachment is my test program and config file.
Any comments is appreciated .

Thanks,
Kevin

Attachment: test.diff
Description: Binary data

Attachment: config
Description: Binary data