Linux
頂級命令,系統專欄
我對 linux 不是很好,但我確實很享受有限的接觸。我們使用虛擬化的紅帽伺服器進行軟體開發,我要做的一件事就是檢查誰在佔用 CPU,看看我們可以如何嘗試避免它。我可以很容易地破譯使用者和程序,但是如果系統列正在使用(比如說)50.8% 的 CPU,我怎樣才能找出它在做什麼,並嘗試將其最小化?我收集它都是內部核心的東西,但它似乎至少執行了 20%,而且通常更高。這是一個範例輸出:
245 processes: 232 sleeping, 8 running, 4 zombie, 1 stopped CPU states: cpu user nice system irq softirq iowait idle total 47.9% 0.0% 50.8% 0.3% 0.7% 0.0% 0.0% cpu00 68.9% 0.0% 29.2% 0.3% 1.3% 0.0% 0.0% cpu01 26.8% 0.0% 72.5% 0.3% 0.1% 0.0% 0.0% Mem: 3816924k av, 3795652k used, 21272k free, 0k shrd, 266548k buff 2836408k actv, 541432k in_d, 58992k in_c Swap: 2097136k av, 0k used, 2097136k free 3080380k PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 23447 romanmur 25 0 6896 6896 356 R 33.4 0.1 0:09 1 bzip2 23961 tomjose 25 0 1076 1076 960 S 5.4 0.0 0:00 1 make_headers. 23887 paulhewl 25 0 3996 3996 348 R 4.4 0.1 0:00 0 bzip2 3902 romanmur 15 0 4112 4108 1628 S 2.1 0.1 0:23 0 smbd 23446 romanmur 15 0 708 708 616 S 0.5 0.0 0:00 1 tar 24541 damianwy 24 0 1776 1776 960 S 0.4 0.0 0:00 0 sh 24493 root 24 -1 1372 1372 1100 R < 0.3 0.0 0:00 1 X 1771 root 15 0 1108 1108 496 S 0.2 0.0 14:26 1 cmaperfd 23262 root 15 0 1308 1308 884 R 0.2 0.0 0:03 1 top 15209 paulhewl 15 0 488 488 428 S 0.2 0.0 0:00 1 tee 2719 richardp 15 0 6108 6104 2108 S 0.1 0.1 1:02 0 smbd 23857 paulhewl 22 0 1900 1900 652 S 0.1 0.0 0:00 1 make 23886 paulhewl 19 0 712 712 624 S 0.1 0.0 0:00 0 tar 24431 root 23 0 1052 1052 936 S 0.1 0.0 0:00 1 startx 24521 paulhewl 24 0 1056 1056 896 S 0.1 0.0 0:00 1 sh 24523 paulhewl 25 0 416 416 344 R 0.1 0.0 0:00 1 mips-linux-gc
謝謝!
我對這種困境表示同情。
top
很精彩,但也有點難以理解,主要是因為系統是如此復雜。例如,如果您有一個雙核 CPU,則 CPU 以 100% 的速度執行一個命令實際上並不是問題 - 這只是意味著一個命令正在完全使用一個核心,但另一個核心應該能夠接管並且立即執行其他命令。系統載入的一個好的起點(一目了然)是手冊頁中最右邊的三個數字(
w
如果您的頂部沒有顯示這個,請鍵入) (同樣適用於)。它們基本上是系統在處理隊列中的下一個命令之前需要多長時間…… 1.01 秒、3.26 秒等。首先,我會比其他細節更關注這些值告訴您系統何時忙或不忙。w``system load averages for the past 1, 5, and 15 minutes``top
上面的輸出顯示這
bzip2
是您拍攝快照時 CPU 的最高使用者。我推荐一些關於解釋系統的 IO、RAM 和 CPU 監控工具的進一步閱讀。
以下是一些希望簡化搜尋的起點:頂部列、SysStat 和其他工具以及更有效地使用頂部。