我一直在考慮使用進程統計來追蹤運行在我們的環境中存在問題的腳本的各種用戶和站點,而不是嘗試執行諸如定期抓取頂部之類的操作。
不是特別清楚的是哪些字段真的表示使用的 cpu 秒/分鐘。我讀過的手冊頁說“cpu”列是燒毀的秒數,但是還有“cp”列用-m顯示 - 並且它們可以顯示不同的總數。例如:
當我使用 -m 標誌時,我得到
$sa -m | grep username
username 14944 65.53re 29.90cp 5308k
當我使用 -u 標誌並對“cpu”列進行總計時,我得到以下結果:
sa -u |grep username|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'
1032.86
誰能幫助我理解這兩種不同模式下「cp」和「cpu」列之間的差異?
謝謝!
答案1
讓我用一個例子來幫助解釋上面的結果所顯示的內容:
首先:我創建了一個以使用者 patrickr 身份運行的 bash 腳本,其目的是在系統上施加足夠的負載以引起注意。
#!/bin/bash
#this file is named loop_script.sh
for i in {1..5000}
do
echo "Welcome $i times"
done
第二:我卸載並重新安裝了 acct,以便 /var/log/acct 中的檔案是新鮮的。建立 /var/log/acct/pacct 檔案的副本,以便將來您可以使用格式正確的檔案輕鬆截斷該檔案(您不能只是刪除並重新建立該檔案 - 如果您這樣做,sa 將停止工作)。請注意,該文件是系統上所有命令的日誌,據我所知,無法根據時間段提取日誌中的部分內容。
第三:然後我以 patrickr 身分執行這個腳本兩次
patrickr@hostname:~$ bash loop_script.sh
我會給你結果,然後我會解釋它們:
以 root(或 patrickr 以外的任何使用者)身分運行 在第一次以 patrickr 身分循環之後:
**sa -m**
24 0.09re 0.03cp 0avio 894k
root 22 0.07re 0.02cp 0avio 853k
patrickr 2 0.02re 0.01cp 0avio 1336k
**sa -u |grep patrickr**
patrickr 0.38 cpu 1336k mem 0 io bash
作為 patrickr 進行第二次循環後:
**sa -m**
30 0.09re 0.03cp 0avio 850k
root 27 0.07re 0.02cp 0avio 814k
patrickr 3 0.02re 0.01cp 0avio 1178k
**sa -u |grep patrickr**
patrickr 0.38 cpu 1336k mem 0 io bash
patrickr 0.35 cpu 1336k mem 0 io bash
patrickr 0.00 cpu 863k mem 0 io ls (I happened to also run ls at patrickr)
**sa -u**
The results returned 106 results for a total of 2.86cpu that averaged to 0.03cp
這是您所看到的:
sa -m 顯示該伺服器逾時的所有活動的平均值。隨著更多命令運行,該檔案會隨著時間的推移而變得越來越大。
薩-u | grep patrickr 顯示特定指令的系統和使用者時間總和(以 cpu 分鐘為單位)。
運行: sa -u |grep patrickr|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'
將為您提供用戶 patrick 的綜合總數,但 sa -m 命令實際上為您提供平均值。如果您需要第二個範例,請查看記憶體值。他們也是平均的。
如果我將上面列出的 patrickr 的三個結果相加,0.35 + .37 + .0,然後除以 106,四捨五入到最接近的百分之,我將得到 0.01cp。
0.01cp 的結果是用戶 patrickr 在系統上的平均負載,與安裝 acct 應用程式時(即自檔案 /var/log/acct/pacct 開始追蹤以來)系統上的所有負載相比。
Output Fields
cpu - sum of system and user time in cpu minutes
re - actual time in minutes
k - cpu-time averaged core usage, in 1k units
k*sec - cpu storage integral (kilo-core seconds)
u - user cpu time in cpu minutes
s - system time in cpu minutes
可以幫助您的好資源位於開始Linux.com(原始連結已找到這裡)。