Who changed my Platform Timer Resolution?
When you run powercfg /energy from an elevated command line you can get this:
Warnings
Platform Timer Resolution:Platform Timer Resolution
The default platform timer resolution is 15.6ms (15625000ns) and should be used whenever the system is idle. If the timer resolution is increased, processor power management technologies may not be effective. The timer resolution may be increased due to multimedia playback or graphical animations.
Current Timer Resolution (100ns units)
25000
Maximum Timer Period (100ns units)
156001
Platform Timer Resolution:Outstanding Timer Request
A program or service has requested a timer resolution smaller than the platform maximum timer resolution.
Requested Period
30000
Requesting Process ID
8308
Requesting Process Path
\Device\HarddiskVolume4\Playground7\DebugTest\Debug\DebugTest.exe
From a power consumption persective, having an elevated more frequent timer might not be the most optimal.
Then in the informational section you get this:
Platform Timer Resolution:Timer Request Stack
The stack of modules responsible for the lowest platform timer setting in this process.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
But that still doesn’t give me the source, nor what API to look for. One of the API calls that can be responsible for this is the timeBeginPeriod function. Then it becomes as easy as setting a breakpoint on winmm!timeBeginPeriod in WinDbg and voila. There might be more API calls that change the timer. [Edit] The more interesting API is obviously ntdll32!NtSetTimerResolution
Comments
- Anonymous
March 07, 2010
Then platform deside by oneself, not enybody else.