Software Archive
Read-only legacy content
17061 Discussions

Processor frequency changes

EnioPineda
Beginner
304 Views

A couple of questions ...

1) Is there a way to know, from a driver,when a processor's frequency changes?The OS (Windows) does not provide any callbacks for frequecy changes, and it doesnot appear to be any hardware interruptsgenerated on frequency/voltage transitions.

2) Is the bus multiplier value available in an MSR, or is it the ratio ofAPERF/MPERF, or something else? Don't know how public thefirst part of the question is.

3) On a Core 2 processor I can count EIST_TRANS (event 0x3A) and set it up to interrupt on every increment of the counter. Then in the interrupt handler calculate the APERF/MPERF ratio and come up with value for the frequency. Does that make sense? I'm insterested on servers, at moderate to high utilization so I'm assuming the rate of frequency/voltage transitions is low (a few per second).

Enio.

0 Kudos
2 Replies
TimP
Honored Contributor III
304 Views

The bus multiplier is available by MSR, requiring Administrator or root privilege. In a web search, you will find several utilities which appear to use it; possibly byreverse engineering. I haven't seen open source code examples. People who write drivers professionally are expected to open a support account, such as mentioned earlier on this forum.

I guess your proposal makes sense. I can judge it only by open web references, where the actual e-mail addresses of the real experts are listed.

0 Kudos
levicki
Valued Contributor I
304 Views

You should first check whether state transition notifications are available via WMI (Windows Management and Instrumentation). If not then you will have to write driver.

However, do not assume that you will have a free performance counter for monitoring that particular event. At present I am not aware of any mechanism which could be used to query whether the counter is free or in use by another process.

0 Kudos
Reply