Android代碼獲取CPU運行情況

jopen 10年前發布 | 28K 次閱讀 Android Android開發 移動開發

眾所周知,android的os是linux。也就是說,關于硬件的信息,只有從linux接口才能得到。我們知道,除了系統調用,只能從proc sys這兩個文件系統里獲取數據了。cpu信息也藏在這兩個文件系統里。專門的系統調用不靈活,且依賴c庫。

1. /proc/cpuinfo

通過這個可以統計cpu情況,包括cpu個數,cpu核心數,cpu硬件線程數。不過android上,這個沒啥用。

kernel位置: fs/proc/cpuinfo.c

2. /proc/stat

這個能獲取每個cpu的活動情況,一些統計信息,不包括頻率,我們知道頻率是通過cpufreq獲取的。

kernel位置:fs/proc/stat.c

3. /sys/devices/system/cpu

這個目錄下的諸如cpu0 cpu1等都是kernel里注冊cpu時候,生成的節點,通過這個統計基本上可以統計出cpu的情況了。通過建立鏈接的方式,可以偽造一個cpuX。

sysfs_create_link(&cpu_subsys.dev_root->kobj, &cpu->dev.kobj, “cpu1″);

kernel位置:drivers/base/cpu.c

4. android的vm接口

Runtime.java:605:    public int availableProcessors() {

源碼位置;libcore

注意:這個接口實際上最后調用了bionic的sysconf接口,這個接口也是統計的/sys/devices/system/cpu/下的信息,但是鏈接是不算數的。

來源:opendevkit

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!