ECBowen
The PPM policy settings are set in the OS and updated via the Intel management engine.
"Intel Management Engine"? That's only a remote management and provisioning utility for business desktops, and while it does allow remote setting of a PM profile and setting in which sleep states the system can be remotely woken and what system events are logged/reported, it has nothing to do with actual power management. I take it you are using it for remote support, but don't understand why you think it is relevant here.
The HPET does effect the clock generation time period that any device, process, or service can interrupt the CPU for processing time.
No, the HPET does not increase the speed of time passage or shorten intervals, it only increases the precision/granularity. There are ways to shorten the platform clock/PM timer period duration (from 15.6ms or 10ms to 1ms), but just employing the HPET instead of the lower precision PM timer does not automatically do that.
If you are seeing shorter time durations under HPET, then it is because timing code in some driver or application is invoking a shorter clock duration or doing its timing improperly. You might be able to see this for yourself. I linked to some utility programs in my reply to jonbuoy above which show the available counters and time durations.
Where do you think the PPM or any Power management policies are outside of this since they are essentially part of the OS threading/interrupts through the HAL. Almost every device out there now including video cards, network adapters, combo controllers on laptops that include card reader controllers, USB controllers, Firewire controllers and storage controllers have power management features with the drivers/firmware. They are now able to interrupt as frequent as the clock generator allows them.
Again, the interrupt timing interval a driver uses does not depend upon HPET, but on what interval the driver sets. Even when HPET is used, the timing interval can (should) still be the same (for example, 10 or 15.6 ms) as when using the lower-precision PM timer, unless something else invokes a lower duration/period or else the timer count is not being evaluated with regard to the counter frequency.
The HPET clock generator allows interrupt cycles at a much lower interval which means these devices can interrupt for state change far more often.
The "much lower interval" is not due to HPET but to drivers' interrupt timing routines being improperly coded. Maybe the driver code improperly fails to account for the timer frequency. Or maybe another driver invoked the shorter duration for its own use and then improperly failed to restore the "normal" longer duration when exiting. HPET is not really the cause of these problems, but only exposes their symptoms.
Whether you think theoretically this should not be the case or not does not change the observable results. When we have the HPET time enabled these devices are constantly interrupting the CPU likely for PPM policy requests. This is easily observable via DPC latency Timer or Latmon and is far more of a problem with Laptops which obviously have far more Power Management. This is how device manufacturers are implementing lower power consumption policies. When HPET can be disabled in the BIOS, many of these DPC issues go away or atleast spike far less frequently. Drivers from J-Micron, Nvidia, and Realtek are the most notorious for this.
First of all, the OP is using a laptop on AC power, and wants performance, not power saving. And while I agree (and sympathize) with you that the power saving oriented power management policy does raise some performance challenges, especially with mobile platforms, you (and your boss) need to realize that while turning off HPET may avoid what you observe as being caused by HPET, what you are observing is realy being caused by crappy drivers with poorly implemented timing routines which get exposed by HPET (so, as a PC vendor, why don't you guys do something about that?), and that by turning off HPET you are actually lowering the potential platform performance for streaming audio, MIDI, etc.
C-States changes for some CPU state changes may be tied strictly to the time check value but not all of them. The Intel Management Engine is updating constantly from the C State changes and that is causing DPC spikes all over the place depending on the board’s implementation of the IME. If the board has the option to disable the HPET, then those DPC spikes disappear.
If the "Intel Management Engine" is causing spikes, then disable it instead. Nobody needs IME for a DAW, but HPET is very advantageous for audio.
So once again theoretical is different than implementation. You can also duplicate the same effect by disabling C-States and Turbo in the bios and leave the HPET on. Regardless of what you think, the C-State changes with the CPU are causing the DPC spikes via the HPET allowing the IME to interrupt far to often. This was once again the results of significant testing with latmon and boards that did not work well for audio as the bios was implemented at the time.
As said. why not just turn off IME? Your customers only need to enable it when they need you to remote into their systems for support.
I also never could get clear responses from the engineers for those boards as to why the IME was interrupting so often. Only the CPU state changes for Turbo would even use that kind of IME update frequency. The only verification I received from the engineers was they were looking at the IME.
Maybe it's buggy MEI firmware (it's happened), or maybe over-aggressive event logging (but then, what what do i know?).
The comments on HPET may not even be enabled really have no bearing here and I am not sure why you brought these up. Obviously HPET is supported in the OS at the time I am testing if I disable that and the DPC spikes go away. Obviously they are involved with C State changes even if it’s strictly tied to the IME updating if I disable C-States and Turbo and the spikes go away while the HPET is on.
I already responded to jonbuoy about this.
Do you even know what the BIOSes in your systems actually support? Hint: try biosbits.