获取机器当前CPU频率

该博客介绍了一个在Linux环境下,通过读取MSR寄存器和使用`perf_cpu_info`结构体来获取CPU当前频率的方法。涉及到的关键函数包括`native_read_tsc`、`calibrate_tsc`、`aperfmperf_mhz`和`aperf_get_min_freq_mhz`,通过多线程计算所有CPU核心的最小频率。
摘要由CSDN通过智能技术生成

                                         获取机器当前CPU频率

struct perf_cpu_info
{
    int tsc;
    int index;
    int mhz;
};
struct perf_cpu_info *cpu_list;

static unsigned long long native_read_tsc(void)
{
    unsigned long long val;
    asm volatile("rdtsc": "=A" (val));
    return val;
}

unsigned int calibrate_tsc(void)
{
    unsigned long long val;
    unsigned long long val2;
    long long diff = 0;
    int error = 0,cnt = 0;
    unsigned long long min_tsc = (unsigned long long) -1;
    val = native_read_tsc();
    do {
        usleep(4950);
        val2 =native_read_tsc();
        diff = val2 - val;
        if (diff > 0) {
            min_tsc = min_tsc > diff?diff:min_tsc;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值