【问题标题】:How to read cpu frequency on android device [closed]如何在android设备上读取cpu频率[关闭]
【发布时间】:2011-03-02 13:16:23
【问题描述】:

是否有任何 Java API 可以做到这一点?我如何阅读这些信息。

【问题讨论】:

    标签: android api cpu


    【解决方案1】:

    要在Android上获得频率,只需阅读/sys目录中的这些特殊文件:

    #cat "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq"
    #cat "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq"
    #cat "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"
    

    您将拥有允许的当前、最小和最大频率。

    【讨论】:

    • 真棒回答埃利斯,你真的帮了我很多。我在调查时发现的一件事是 scaling_cur_freq 不一定是当前的 CPU 频率,而是内核认为的频率。要获得真实频率,您需要 root 访问权限才能读取 cpuinfo_cur_freq。此外,获得 root 访问权限允许您设置 cpu 速度,这对于在最佳/最坏情况下进行分析非常有用。
    • 嗯,在我看来,即使有 root 访问权限,您也无法编辑 cpuinfo_* 文件..
    • 我们如何获得 CPU 负载或利用率?
    • 如何从应用程序中读取这些文件?
    • 我注意到/sys/devices/system/cpu/cpufreq/下的子目录policyX,那是什么?
    【解决方案2】:

    不是 MHz,但至少是一些东西。 bogoMIPS 值可能对你有用。

    private String ReadCPUinfo()
     {
      ProcessBuilder cmd;
      String result="";
    
      try{
       String[] args = {"/system/bin/cat", "/proc/cpuinfo"};
       cmd = new ProcessBuilder(args);
    
       Process process = cmd.start();
       InputStream in = process.getInputStream();
       byte[] re = new byte[1024];
       while(in.read(re) != -1){
        System.out.println(new String(re));
        result = result + new String(re);
       }
       in.close();
      } catch(IOException ex){
       ex.printStackTrace();
      }
      return result;
     }
    

    【讨论】:

    • 谢谢,但有什么办法可以将其转换为 MHz 或在某处读取?
    • 有什么理由不只是将 /proc/cpuinfo 作为文件打开并直接读取它?
    • michael,阅读关于 bogoMIPS 的 wiki 页面,有一个公式。 fadden,我不确定该文件是否可以简单地从 java 中读取,只是发现这段代码放在周围。
    【解决方案3】:

    如果您对系统在什么状态下花费了多长时间感兴趣,请查看文件

    /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
    

    我不确定是否需要 root 访问权限。

    【讨论】:

    • root 访问似乎不是必需的,不像cpuinfo_cur_freq
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多