android系統(10)--top 命令
阿新 • • 發佈:2019-02-04
Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ]
-m num Maximum number of processes to display.
-n num Updates to show before exiting.
-d num Seconds to wait between updates.
-s col Column to sort by (cpu,vss,rss,thr).
-t Show threads instead of processes.
-h Display this help screen.
-m: 顯示的最多程序數,做優化時一般只關心CPU佔用率最高的幾個程序,那麼只需要top -m 3或top -m 5就好了,以免top命令的輸出太多
-n:顯示n次top的結果後命令就會退出
-d:更新的時間間隔,預設是每隔3s更新下狀態,top -d 0時會持續地輸出,不過很佔CPU。
-s:選擇根據某項(cpu,vss,rss,thr)來排序
-t: 顯示執行緒而非程序
-h:顯示幫助資訊
優化中需要了解各個CPU利用率,以評估程式的多執行緒並行性。但Android系統的top缺少了統計各個CPU利用率的功能,我還在尋找是否有其他的方法
PID PR CPU% S #THR VSS RSS PCY UID Name
68 0 0% D 1 0K 0K fg root COMIP Battery s
399 0 0% S 8 9696K 860K fg root /system/bin/rild
PID: 程序在系統中的ID
CPU% - 當前瞬時所以使用CPU佔用率
#THR - 程式當前所用的執行緒數
UID - 運行當前程序的使用者id
Name - 程式名稱org.xmpp.app
VSS - Virtual Set Size 虛擬耗用記憶體(包含共享庫佔用的記憶體)
RSS - Resident Set Size 實際使用實體記憶體(包含共享庫佔用的記憶體)
PSS - Proportional Set Size 實際使用的實體記憶體(比例分配共享庫佔用的記憶體)
USS - Unique Set Size 程序獨自佔用的實體記憶體(不包含共享庫佔用的記憶體)
一般來說記憶體佔用大小有如下規律:VSS >= RSS >= PSS >= USS 就不把執行效果放上來了,總之結果表述如下:
- User 35%, System 13%, IOW 0%, IRQ 0% // CPU佔用率
- User 109 + Nice 0 + Sys 40 + Idle 156 + IOW 0 + IRQ 0 + SIRQ 1 = 306 // CPU使用情況
- PID CPU% S #THR VSS RSS PCY UID Name // 程序屬性
- xx xx% x xx xx xx xx xx xx
- CPU佔用率:
- User 使用者程序
- System 系統程序
- IOW IO等待時間
- IRQ 硬中斷時間
- CPU使用情況(指一個最小時間片內所佔時間,單位jiffies。或者指所佔程序數):
- User 處於使用者態的執行時間,不包含優先值為負程序
- Nice 優先值為負的程序所佔用的CPU時間
- Sys 處於核心態的執行時間
- Idle 除IO等待時間以外的其它等待時間
- IOW IO等待時間
- IRQ 硬中斷時間
- SIRQ 軟中斷時間
- 程序屬性:
- PID 程序在系統中的ID
- CPU% 當前瞬時所以使用CPU佔用率
- S 程序的狀態,其中S表示休眠,R表示正在執行,Z表示僵死狀態,N表示該程序優先值是負數。
- #THR 程式當前所用的執行緒數
- VSS Virtual Set Size 虛擬耗用記憶體(包含共享庫佔用的記憶體)
- RSS Resident Set Size 實際使用實體記憶體(包含共享庫佔用的記憶體)
- PCY OOXX,不知道什麼東東
- UID 運行當前程序的使用者id
- Name 程式名稱android.process.media
- // ps:記憶體佔用大小有如下規律:VSS >= RSS >= PSS >= USS
- // PSS Proportional Set Size 實際使用的實體記憶體(比例分配共享庫佔用的記憶體)
- // USS Unique Set Size 程序獨自佔用的實體記憶體(不包含共享庫佔用的記憶體)