Linn Kubler wrote:
Hi,
Frist time posting here, if this is the wrong list for this type of question please forgive me.
When I boot my server I get this message after logging in: TSC cannot be used as a timesource. Possible reasons for this are: You're running Speedstep, You don't have DMA enabled for you're hard disk (see hdparm), Incorrect TSC synchronization on an SMP system (see dmesg). Falling back to a sane timesource now.
Can someone explain what's happening here and how to correct it? When I installed the server I used the same timesource I use on other non-Linux systems.
BTW, this is an installation on VPC.
Thanks in advance,
Linn
I believe that I understand the meaning of the message, but unfortunately don't know
enough about your system to suggest a fix. Perhaps though if I explain the message
it will help you tracking down the problem.
Time keeping in Linux is done by an interrupt which occurs regularly (configured
on most systems to happen every 10ms, that's 0.01 sec). This means that every
0.01 second the time stored in the operating system is incremented by 0.01 second.
If you were to create a time stamped log, the times would be like: 25.03 seconds
or 25.04 seconds, but never 25.035 second.
Some applications need a higher resolution. They want times like 25.036928 seconds.
Modern Intel Pentium chips have a counter that just counts up by one at a high
speed. But it just starts at zero when you boot and goes from there, so it doesn't
really specify the time. Someone came up with the idea that the system could
check how much gets added to the counter between two of the regular clock
interrupts, that is in 0.01 second. As the system runs, Linux records the value
of the counter at each of the interrupts. Then when you need a highly accurate time,
Linux looks at the counter and uses this as an estimate of how far you are between
interrupts. (Technically it does a linear interpolation; look at a math reference for
explanation.)
This idea works ONLY if the counter goes up about the same amount between
each interrupt, that is in each 0.01 second. If it doesn't, obviously this scheme
won't work. If you look at your error message, linux is saying just that. The
counter (named: TSC) is not giving the same result for each 0.01 second interval.
Therefore, linux has decided to cease trying to use the TSC. Result, you will get
times that have a resolution of 0.01 second.
If such times are satisfactory, just ignore the message; you don't need the TSC.
If you DO NEED more precision in your times, then you will need to research
why linux is finding that the TSC counter is not consistent. The error message
gives the first things to check. For example, "speedstep". This is a feature
that makes the processor (and therefore the TSC) run faster and slower.
Faster means programs get done quicker, but it also means CPU runs hotter and
bettery (in a laptop) runs down faster. And vice versa for slower. So if
you are running in speedstep mode, turn it off. How do you know? How do
you turn it off? Unfortunately, this is where my expertise ends and you'll
need to search further.
Good luck.