什么是機器平均負載?
特定的時間間隔內,排隊等待cpu處理的進程數,排隊等待的進程越多,說明cpu處理的慢,機器的平均負載約大
如何衡量當前系統是否負載過高?
如果每個cpu(可以按CPU核心的數量計算)上當前活動進程數不大於3,則系統性能良好,
不大於4,表示可以接受
如大於5,則系統性能問題嚴重
建議設置嚴格的報警值為: CPU核心的數量
比如:CPU核心數量為2,則設置報警值為2
(這樣設置是合理的,因為畢竟不是每個應用都支持多CPU及多核心)
什么時候需要查看機器的負載?
當你的系統請求慢的無法忍受的時候
如何查看?常用命令:
upTime: 它顯示自從上次系統重啟以來,活動的用戶進程數量和所謂的平均負荷指標(load average)。

| 11:38:54 | 當前時間 |
| up 708 days | 系統運行時間 |
| 2 users | 當前登錄用戶數 |
| load average: 0.08, 0.02, 0.01 | 系統負載,即任務隊列的平均長度。 三個數值分別為 1分鍾、5分鍾、15分鍾前到現在的平均值。 |
top:動態顯示

1. 第一行是任務隊列信息
同 uptime 命令的執行結果:
[root@localhost ~]# uptime
13:22:30 up 8 min, 4 users, load average: 0.14, 0.38, 0.25
其內容如下:
| 12:38:33 |
當前時間 |
| up 50days |
系統運行時間,格式為時:分 |
| 1 user |
當前登錄用戶數 |
| load average: 0.06, 0.60, 0.48 |
系統負載,即任務隊列的平均長度。 三個數值分別為 1分鍾、5分鍾、15分鍾前到現在的平均值。 |
2. 第二、三行為進程和CPU的信息
當有多個CPU時,這些內容可能會超過兩行。內容如下:
| Tasks: 29 total |
進程總數 |
| 1 running |
正在運行的進程數 |
| 28 sleeping |
睡眠的進程數 |
| 0 stopped |
停止的進程數 |
| 0 zombie |
僵屍進程數 |
| Cpu(s): 0.3% us |
用戶空間占用CPU百分比 |
| 1.0% sy |
內核空間占用CPU百分比 |
| 0.0% ni |
用戶進程空間內改變過優先級的進程占用CPU百分比 |
| 98.7% id |
空閑CPU百分比 |
| 0.0% wa |
等待輸入輸出的CPU時間百分比 |
| 0.0% hi |
|
| 0.0% si |
3. 第四五行為內存信息。
內容如下:
| Mem: 191272k total |
物理內存總量 |
| 173656k used |
使用的物理內存總量 |
| 17616k free |
空閑內存總量 |
| 22052k buffers |
用作內核緩存的內存量 |
| Swap: 192772k total |
交換區總量 |
| 0k used |
使用的交換區總量 |
| 192772k free |
空閑交換區總量 |
| 123988k cached |
緩沖的交換區總量。 內存中的內容被換出到交換區,而后又被換入到內存,但使用過的交換區尚未被覆蓋, 該數值即為這些內容已存在於內存中的交換區的大小。相應的內存再次被換出時可不必再對交換區寫入。 |
二. 進程信息
| 列名 |
含義 |
| PID |
進程id |
| PPID |
父進程id |
| RUSER |
Real user name |
| UID |
進程所有者的用戶id |
| USER |
進程所有者的用戶名 |
| GROUP |
進程所有者的組名 |
| TTY |
啟動進程的終端名。不是從終端啟動的進程則顯示為 ? |
| PR |
優先級 |
| NI |
nice值。負值表示高優先級,正值表示低優先級 |
| P |
最后使用的CPU,僅在多CPU環境下有意義 |
| %CPU |
上次更新到現在的CPU時間占用百分比 |
| TIME |
進程使用的CPU時間總計,單位秒 |
| TIME+ |
進程使用的CPU時間總計,單位1/100秒 |
| %MEM |
進程使用的物理內存百分比 |
| VIRT |
進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES |
| SWAP |
進程使用的虛擬內存中,被換出的大小,單位kb。 |
| RES |
進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA |
| CODE |
可執行代碼占用的物理內存大小,單位kb |
| DATA |
可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb |
| SHR |
共享內存大小,單位kb |
| nFLT |
頁面錯誤次數 |
| nDRT |
最后一次寫入到現在,被修改過的頁面數。 |
| S |
進程狀態。 |
| COMMAND |
命令名/命令行 |
| WCHAN |
若該進程在睡眠,則顯示睡眠中的系統函數名 |
| Flags |
任務標志,參考 sched.h
|
