To read all comments associated with this story, please click here.
As far as I understand it (but please bear in mind I'm no expert), tickless means that the kernel will not necessarily wake up periodically anymore.
Originally, a timer was programmed to generate an interrupt ("timer tick") a fixed number of times per second, usually in the range of 100-1000 Hz. That also meant the processor would possibly wake from sleep that many times per second, causing unnecessary power consumption on a lightly loaded system.
A tickless system might disable the timer interrupt altogether when entering an idle state, so it will only wake up when an I/O device demands the attention of the kernel. Of course it would be re-enabled again as soon as multiple processes are competing for processor resources.
If anyone has corrections to the information stated above, please don't hesitate to post them. I'm curious about the exact implications as well.
Well some part is missing. There are processes that want to be woken up after X milliseconds.
So the system has also to make sure to wake up at the next of these events.
A reasonable solution would be to disable the timer interrupt only of no process waits for a timing event, but if so, change the interrupt's frequency according to it.
It is explained here: http://kernelnewbies.org/Linux_2_6_21#head-8547911895fda9cdff32a947...
Edited 2007-04-26 17:14
I haven't studied the tickless kernel, but I ASSUME that this explains the basics:
Normally the kernel is issuing an interrupt every X milliseconds in order to preempt processes. These interrupts are (normally?) fired at a constant rate. These ticks can influence the power states, and make the CPU etc. change to a more active power state even though no preemption is needed.
The tickless kernel will not fire new clock-interrupts unless there are active processes and a need for preemption. The tickless kernel will only wait for external interrupts when all processes are idle.
This isn't exactly how it works because I don't know the number of times / second the kernel wakes up, but it is something like this...
Before:
1000 times / second, the kernel will wakeup and say, "Is there anything for me to do?" Each wakeup is called a 'tick'. If there is nothing for it to do, it goes back to sleep. This wastes energy and cpu power.
Now:
Instead of polling every so often the kernel will only wakeup when there is actually something to do. Once more drivers are taking advantage of the tickless feature in the kernel, there will be less wakeups and less power used. This will be a *huge* gain in powersavings and battery life on laptops. It will also help with virtualization by speeding up virtualized guests.
Does that help any?
The phoronix test (a very, very simplistic test) suggests the the power savings is very small, but it's measurable. I'd like to see a testcase that shows a significant (i.e. >10%) decrease in idle power consumption. My guess is that tickless will have a greater impact on virtualization performance than on power consumption. In any case, it's a smart enhancement that should provide advantages without regressions, but the scale of these benefits remains to be seen.








Member since:
2007-03-12
What is a tickless system?