获取cpu主频

来源:互联网 发布:java数据脱敏技术 编辑:程序博客网 时间:2024/04/30 02:59

rdtsc 指令可以获取CPU指令周期数,借此可以测试软件执行效率,参考使用rdtsc指令,测量程序的运行速度。

同时文中指出由于乱序执行,及cpu变频,会导致测试不准。

不过在某些对性能和延迟要求高的场合,是可以限制cpu降频的。方法如下(仅针对ubuntu):
- 在主板bios关掉所有节能选项;
- 用cpufrequtils设置为高性能模式;

sudo apt-get install cpufrequtilssudo vi /etc/default/cpufrequtils

把下面一行加到cpufrequtils文件里面,然后保存关闭:
GOVERNOR="performance"

sudo update-rc.d ondemand disablecpufreq-info  #查看一下

用i7z查看更直观

sudo apt-get install i7zsudo i7z

i7z-log

C0状态一直在100%的,就说明已经设置成功!下面就可以用rdtsc 来获取主频了。

static inline unsigned long long rdtsc_oai(void) __attribute__((always_inline)){  unsigned long long a, d;  __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));  return (d<<32) | a;}double get_cpu_freq_GHz(void) {  unsigned long long in = rdtsc_oai();  sleep(1);  unsigned long long diff = (rdtsc_oai()- in);  cpu_freq_GHz = (double)diff/1000000000;  return cpu_freq_GHz; }
1 0
原创粉丝点击