【问题标题】:How to get real max cpu cores speed?如何获得真正的最大 cpu 核心速度?
【发布时间】:2016-10-05 10:59:40
【问题描述】:

我正在尝试获得真正的最大 cpu 核心速度。

此代码仅适用于我的 nexus 5x 的前四个核心,但对于后两个核心则失败:

        for (int i = 0; i < cpuCoresNumber; i++) {
            try {
                BufferedReader freqBufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(new File("/sys/devices/system/cpu/cpu" + i + "/cpufreq/scaling_max_freq"))));
                int freq = Integer.valueOf(freqBufferedReader.readLine()).intValue() / 1000;
                freqBufferedReader.close();
                coreMaxFreqArray[i] = freq;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

对于前 4 个,我得到真实值,对于最后 2 个,我首先得到真实值,但有时我得到较低的值,例如 600、300、0.... 以及最后两个核心的真实值是 1800 兆赫。

【问题讨论】:

  • 一些快速的谷歌搜索给了我这个:“SoC 节流也是另一个显着减慢 Nexus 5x 的主要问题。”Snapdragon 808 只能将其两个 A57 内核保持在峰值频率两个Anandtech 在 Nexus 5X 系统性能评测中说4 个 1.44GHz 的 A53 内核。""
  • 是的,但我可以在谷歌播放的某些应用程序中看到内核的最大速度,这些应用程序正在检查这些内核的最大速度,所以我确信可以在某处检查它
  • 你试过获取"cat /sys/devices/system/cpu/cpu" + i + "/cpufreq/scaling_available_frequencies"的结果并选择最大的数吗?
  • @Michael 尝试过,但结果完全相同。当 cpu 返回 0 值时,该文件不可用。当另一个文件的可用值较少时,可用值也较少...
  • 您有没有找到可靠的方法?我在 Snapdragon 835 设备上仅获得前 4 个较慢内核的最大频率时遇到了同样的问题。

标签: android cpu cpu-speed


【解决方案1】:

试试这个,我执行命令来获取每个核心的最大频率。

    private String exCommand(String comando) throws IOException {
    try {
        Process process = Runtime.getRuntime().exec(comando);
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        int read;
        char[] buffer = new char[4096];
        StringBuilder output = new StringBuilder();
        while ((read = reader.read(buffer)) > 0) {
            output.append(buffer, 0, read);
        }
        reader.close();
        process.waitFor();
        return output.toString();
    } catch (IOException | InterruptedException e) {
        throw new RuntimeException(e);
    }
}

并在我的main方法上写了这段代码来获取每个核心的速度

        for (int i = 0; i <= cores; i++) {
        speed = exCommand("cat /sys/devices/system/cpu/cpu"+i+"/cpufreq/cpuinfo_max_freq");
        vel = Double.parseDouble(speed);
        vel = vel /1000000;
        System.out.println(vel);
    }

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    相关资源
    最近更新 更多