[Linux] 取出 atop 記錄檔中的 CPU 使用率資訊
之前試過 將 atop 檔案轉成可分析的文字檔 + 畫出圖表,
今天遇到的問題是想要從 atop 的記錄檔裡,
列舉某個 process 的 CPU 使用率,
基本上大同小異,不過還是記錄一下~
首先參考一下 atop(1) – Linux man page,
可以得知要取得 CPU 使用率資訊,要用 -P PRC 這個參數。
像下面的指令就是從 atop_20180327 這個記錄檔中,
讀出 CPU 使用率資訊,接著用 grep 只列出我這次關心的 VBoxSVC 這個 process:
testuser@localhost ~ atop -P PRC -r atop_20180327 | fgrep "(VBoxSVC)" PRC apddaepl3 1522146601 2018/03/27 18:30:01 600 59180 (VBoxSVC) S 100 60214 4343 0 120 0 0 34 0 59180 y PRC apddaepl3 1522146601 2018/03/27 18:30:01 600 59180 (VBoxSVC) S 100 236 261 0 120 0 0 34 0 59180 n PRC apddaepl3 1522147201 2018/03/27 18:40:01 600 59180 (VBoxSVC) S 100 60386 4315 0 120 0 0 32 0 59180 y PRC apddaepl3 1522147201 2018/03/27 18:40:01 600 59180 (VBoxSVC) S 100 228 264 0 120 0 0 32 0 59180 n PRC apddaepl3 1522147801 2018/03/27 18:50:01 600 59180 (VBoxSVC) S 100 60473 4196 0 120 0 0 26 0 59180 y PRC apddaepl3 1522147801 2018/03/27 18:50:01 600 59180 (VBoxSVC) S 100 233 261 0 120 0 0 26 0 59180 n PRC apddaepl3 1522148401 2018/03/27 19:00:01 600 59180 (VBoxSVC) S 100 60479 4022 0 120 0 0 19 0 59180 y PRC apddaepl3 1522148401 2018/03/27 19:00:01 600 59180 (VBoxSVC) S 100 228 263 0 120 0 0 19 0 59180 n PRC apddaepl3 1522149001 2018/03/27 19:10:01 600 59180 (VBoxSVC) S 100 60397 4081 0 120 0 0 28 0 59180 y PRC apddaepl3 1522149001 2018/03/27 19:10:01 600 59180 (VBoxSVC) S 100 238 252 0 120 0 0 28 0 59180 n PRC apddaepl3 1522149601 2018/03/27 19:20:01 600 59180 (VBoxSVC) S 100 60395 4043 0 120 0 0 26 0 59180 y PRC apddaepl3 1522149601 2018/03/27 19:20:01 600 59180 (VBoxSVC) S 100 249 269 0 120 0 0 26 0 59180 n
各個欄位的意義可以在 atop(1) – Linux man page 查到,依序為:
- PID
- name (between brackets)
- state
- total number of clock-ticks per second for this machine
- CPU-consumption in user mode (clockticks)
- CPU-consumption in system mode (clockticks)
- nice value
- priority
- realtime priority
- scheduling policy
- current CPU
- sleep average
在這些欄位之前,已經有 6 個欄位,
所以 current CPU 算是在以空白字元隔開的第 11+6 = 17 個欄位上。
用下面的指令,就可以把所有 atop_ 開頭的記錄檔中的 CPU 使用率都讀出來:
testuser@localhost ~ for f in $(ls atop_* | sort); do (atop -P PRC -r $f | fgrep "(VBoxSVC)" | awk '{print $17}'); done 34 34 32 32 26 26 19 19 28 28 26 26
有了這個資訊,就可以進一步處理,像是變成圖表來檢視了~
(本頁面已被瀏覽過 1,168 次)