Q: What does 'hlt' have to do with power savings? A: The Hltmod kernel module, uses the 'hlt' instruction as the idle thread instead of spinning in an infinite loop waiting for something to do. When the 'hlt' instruction is executed, the processor sleeps in a low power mode until it gets an interrupt. The 'hlt' instruction is primarily targeted for laptops to increase battery runtime, but most Pentium II and newer processors have working versions of this instruction. Q: Doesn't Solaris already use the 'hlt' instruction? A: Solaris does use the 'hlt' instruction, but only for single processor systems, and only with the most recent kernel patches applied. Hltmod supports this feature for multiple CPU systems. Q: What's the problem with 'hlt' and SMP? A: SMP is a little trickier because in a multi CPU machine, each processor has its own idle thread and when a processor is idle, another processor will frequently give it something to do. If a thread gets scheduled for a processor executing the 'hlt' instruction, and a different processor is handling most of the interrupts, it may be a while before the halted processor wakes up to process its thread. This results in a severe interactive performance problem since work often ping pongs between processors in low load situations. Q: How does Hltmod prevent performance problems? A: Hltmod dynamicly chooses between spinning in an infinite loop testing for something to do, and executing the 'hlt' instruction. The selection criteria is based on samples of the system load. This adapts very rapidly, so even at 50% CPU utilization, power is saved. Hltmod also encorporates a last chance mechanism where running processors entering the idle thread wake up other processor that are in 'hlt' wait and have pending work. Q: What patches are required for Hltmod to work? A: None, Hltmod should work on all versions of Solaris 8. However, its always a good idea to stay current on the patches. Q: Does Hltmod work for Solaris 7? A: Hltmod is not supported for Solaris 7 or earlier versions. Q: What differences will be noticed? A: You might notice small differences in what mpstat reports with and without Hltmod installed. The original idle loops calls a part of the scheduler which can steal work from other processors. The subroutines to do this are static procedures inside of the kernel and are unavailable for use by Hltmod. This might have a subtle performance effect when there are lots of processors. Q: What about real-time scheduling? A: The impact on real-time scheduling is unknown at this time, but is not expected to be significant. Q: Does it work for systems with more than 2 processors? A: Yes, but any performance impact that might exist has not been quantified. Q: What about single processor systems without the latest patches? A: It should work for these as well, but has only been tested on single processor machines with the latest patches installed. Q: Will this work for Sparc? A: If the assembly language stub which calls 'hlt' is replaced with one that calls the Sparc equivalent, it should work. However, no multi-cpu Sparc box was available to test this, so Hltmod is unsupported on the Sparc platform.