gpt4 book ai didi

Android 读取多核设备状态下的 CPU 时间

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:37 25 4
gpt4 key购买 nike

我试图让我的应用程序显示 CPU 在每个频率下花费的时间。主要问题是当 CPU 离线时(由于热插拔或深度 sleep )文件 /CPUN/cpufreq/stats/time_in_state 被删除并且时间重置为全 0。

所以这限制了我只能在 CPU 0 上显示时间。

我尝试过的

  • 使用 FileObserver 服务监控文件的创建/删除 这在理论上应该可行,但无论出于何种原因,当设备进入深度 sleep 时,它无法报告这些文件的删除。醒来时也是如此,必须在 FileObserver 能够恢复监控之前创建文件。

如此缺少唤醒锁,是否可以监控那些离线的 CPU 的时间,清除 time_in_state 文件?

最佳答案

试试这个:

String path = "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state"; // CPU0
String path1 = "/sys/devices/system/cpu/cpu1/cpufreq/stats/time_in_state"; // CPU1
String path2 = "/sys/devices/system/cpu/cpu2/cpufreq/stats/time_in_state"; // CPU2
String path3 = "/sys/devices/system/cpu/cpu3/cpufreq/stats/time_in_state"; // CPU3
//...
InputStream states = new FileInputStream(path);
InputStreamReader reader = new InputStreamReader(states);
BufferedReader bufferedReader = new BufferedReader(reader);
String line = "";
while ((line = bufferedReader.readLine()) != null) {
System.out.println("RESULT: " + line);
}

您可以使用 for 循环获取所有 CPU。获取可用数量:
int cores = Runtime.getRuntime().availableProcessors()

所以 for 从 0cores - 1

关于Android 读取多核设备状态下的 CPU 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37422846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com