# 【Top】 效能監控工具

[![image-1684291907122.png](https://bookstack.treemanou.com/uploads/images/gallery/2023-05/scaled-1680-/9QGXIeNTMSlf7Gvh-image-1684291907122.png)](https://bookstack.treemanou.com/uploads/images/gallery/2023-05/9QGXIeNTMSlf7Gvh-image-1684291907122.png)

top - 16:12:13 up 42 days, 37 min, 6 users, **<span style="color: #ff0000;">load average</span>**: 1.66, 1.67, 2.39  
Tasks: 255 total, 8 running, 247 sleeping, 0 stopped, 0 zombie  
Cpu0 : 31.4%us, 51.5%sy, 0.0%ni, 10.0%id, 0.0%wa, 0.0%hi, 6.7%si, 0.3%st  
Cpu1 : 89.0%us, 9.0%sy, 0.0%ni, 2.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st  
Cpu2 : 31.4%us, 51.8%sy, 0.0%ni, 15.4%id, 0.0%wa, 0.0%hi, 1.3%si, 0.0%st  
Cpu3 : 34.2%us, 52.5%sy, 0.0%ni, 7.6%id, 0.0%wa, 0.0%hi, 5.6%si, 0.0%st  
Mem: 16269604k total, 15986032k used, 283572k free, 1069332k buffers  
Swap: 4193272k total, 0k used, 4193272k free, 3629176k cached

Linux上的top命令是一個非常有用的工具，它可以顯示系統中正在運行的進程的詳細信息，包括CPU、記憶體、磁盤和網路使用情況。以下是一些使用top命令的基本說明：

1\. 開啟top：在終端窗口中輸入`top`並按下Enter鍵，即可開啟top命令的監視模式。

2\. 介面說明：top的介面由多個欄位組成，每個欄位提供了特定的系統信息。其中一些常見的欄位包括：

\- PID：進程ID。  
\- USER：執行進程的使用者名稱。  
\- PR：進程的優先級。  
\- NI：進程的優先級數值。  
\- VIRT：進程使用的虛擬記憶體大小。  
\- RES：進程使用的實體記憶體大小。  
\- SHR：進程共享的記憶體大小。  
\- %CPU：進程使用的CPU百分比。  
\- %MEM：進程使用的記憶體百分比。  
\- TIME+：進程運行的總時間。  
\- COMMAND：進程的命令名稱。

3\. 排序方式：預設情況下，top按照CPU使用百分比（%CPU）進行排序。你可以按下鍵盤上的`&lt;`或`&gt;`鍵來改變排序方式。例如，按下`&lt;`鍵可以按照進程ID（PID）進行排序，按下`&gt;`鍵可以按照記憶體使用百分比（%MEM）進行排序。

4\. 刷新頻率：預設情況下，top每隔3秒刷新一次顯示的進程列表。你可以按下鍵盤上的`s`鍵來改變刷新頻率，然後輸入所需的秒數。

5\. 執行命令：在top界面中，你可以執行一些特定的命令，例如：

\- `k`：終止選中的進程。輸入進程的PID並按下Enter鍵，然後選擇終止原因。  
\- `r`：修改進程的優先級。輸入進程的PID並按下Enter鍵，然後輸入新的優先級數值。  
\- `1`：切換到全局(CPU)總覽模式。  
\- `h`：顯示top命令的幫助信息。

6\. q :退出top

---

### Help 說明

Z、B、E、e：全局設置：'Z' 切換彩色顯示；'B' 切換粗體顯示；'E' 或 'e' 調整總結/任務記憶體的刻度。

l、t、m：切換總結顯示：'l' 切換載入平均值；'t' 切換任務/ CPU 狀態；'m' 顯示記憶體信息。

0、1、2、3、I：切換顯示：'0' 切換顯示 0 值；'1/2/3' 切換 CPU 或 NUMA 节點視圖；'I' 切換到 Irix 模式。

f、F、X：欄位設置：'f'/'F' 添加/移除/調整/排序欄位；'X' 增加固定寬度。

L、&amp;、&lt;、&gt;：定位操作：'L'/'&amp;' 查找/重複查找；移動排序列：'&lt;'/'&gt;' 左移/右移。

R、H、V、J：切換設置：'R' 切換排序方式；'H' 切換線程顯示；'V' 切換樹狀視圖；'J' 切換數字對齊。

c、i、S、j：切換設置：'c' 切換命令名稱/命令行顯示；'i' 切換空閒時間顯示；'S' 切換時間顯示；'j' 切換字符串對齊。

x、y：切換突出顯示：'x' 切換排序欄位的突出顯示；'y' 切換運行的任務突出顯示。

z、b：切換設置：'z' 切換彩色/單色顯示；'b' 切換粗體/反轉顯示（僅在 'x' 或 'y' 選項下）。

u、U、o、O：過濾條件：'u'/'U' 過濾按有效/任意使用者；'o'/'O' 過濾其他條件。

n、#、^O：設定顯示的最大任務數量：'n'/'#' 設定最大顯示任務數；按下 Ctrl+'O' 顯示其他過濾條件。

C、...：切換滾動座標顯示：'up'、'down'、'left'、'right'、'home'、'end'

k、r：操作任務：'k' 終止任務；'r' 修改任務的優先級。

d 或 s：設定更新間隔。

W、Y：寫入配置文件 'W'；檢查其他輸出 'Y'。

---

**load average 負載平均**

load average: 1.66, 1.67, 2.39  
最近 1分鐘 / 5分鐘 / 15分鐘

單核cpu來看，load值大於1代表系統滿載，load值為0代表完全空閒，理想數字在**0.7**以下會比較好  
如果是4核心則為0.7\*4 = 2.8以下比較好

參考  
[https://www.itread01.com/content/1548662434.html](https://www.itread01.com/content/1548662434.html)

---

us: is meaning of "user CPU time"  
sy: is meaning of "system CPU time"  
ni: is meaning of" nice CPU time"  
id: is meaning of "idle"  
wa: is meaning of "iowait"   
hi：is meaning of "hardware irq"  
si : is meaning of "software irq"  
st : is meaning of "steal time

---

#### Top 排序

在Linux中，`top`命令可以用来查看系统的实时性能信息。默认情况下，`top`的显示界面按照CPU使用率降序排列进程。但是，你可以通过按键来改变排序方式。以下是一些常用的排序键：

1\. \*\*按CPU使用率排序：\*\*  
\- 按下 `<span style="background-color: #ffff99;">**Shift + P**</span>`

2\. \*\*按内存使用率排序：\*\*  
\- 按下 `<span style="background-color: #ffff99;">Shift + M</span>`

3\. \*\*按累计CPU使用率排序：\*\*  
\- 按下 `t` 键，然后选择 `%CPU`

4\. \*\*按累计内存使用率排序：\*\*  
\- 按下 `t` 键，然后选择 `%MEM`

5\. \*\*按PID（进程ID）排序：\*\*  
\- 按下 `Shift + N`

6\. \*\*按进程名称排序：\*\*  
\- 按下 `c` 键

7\. \*\*按照其他列排序：\*\*  
\- 在`top`的显示界面中，你可以使用左右箭头键来选择不同的列，然后按下 `o` 键来选择要排序的列。

8\. \*\*切换升序/降序排序：\*\*  
\- 在排序之后，你可以按下 `R` 键来切换排序的顺序（升序或降序）。

请注意，这些键仅在`top`运行时有效，按下相应的键后，`top`将根据你的选择重新排序并更新显示。如果你希望在`top`启动时就按照特定的排序方式显示，你可以使用`top`命令的一些参数，例如：

```shell
top -o %CPU # 按照 CPU 使用率降序排列
top -o %MEM # 按照内存使用率降序排列
```

这些是一些基本的排序操作，根据你的需求可以选择适合的排序方式。

---

# 🖥 CPU 使用率指標速查表

<table id="bkmrk-%E6%8C%87%E6%A8%99-%E5%85%A8%E5%90%8D-%E6%84%8F%E7%BE%A9-%E5%88%A4%E6%96%B7%E6%A8%99%E6%BA%96-us-use"><thead><tr><th>指標</th><th>全名</th><th>意義</th><th>判斷標準</th></tr></thead><tbody><tr><td>**us**</td><td>user</td><td>使用者態 CPU（應用程式運算時間）</td><td>- **高代表程式在跑計算**（正常）- 長期 80–90% 可能 CPU 算力不足</td></tr><tr><td>**sy**</td><td>system</td><td>核心態 CPU（系統呼叫/驅動/中斷）</td><td>- 偶爾 5–15% 正常- 長期 &gt;30% 可能系統呼叫太頻繁或 driver 問題</td></tr><tr><td>**id**</td><td>idle</td><td>CPU 閒置時間</td><td>- 高表示 CPU 很空閒- 低（接近 0）表示 CPU 幾乎滿載</td></tr><tr><td>**wa**</td><td>iowait</td><td>CPU 在等 I/O（磁碟/網路）</td><td>- **0–5% 正常**- **&gt;20% 有 I/O 壓力**- **&gt;50% 嚴重瓶頸**，CPU 幾乎都在等磁碟/網路- **100%** = 完全被 I/O 卡住</td></tr></tbody></table>

---

## 📊 看 `top` 的例子

```
%Cpu0 : 12.0 us,  7.0 sy,  0.0 ni,  0.0 id, 81.0 wa,  0.0 hi,  0.0 si,  0.0 st

```

解讀：

- user 12% → 應用程式在跑
- system 7% → kernel 在處理系統呼叫
- idle 0% → CPU 沒閒下來
- wa 81% → CPU 大部分時間都在等磁碟/網路 → **I/O 瓶頸**

---

## 📌 判斷邏輯

1. **us 高** → 程式運算密集（算力不足）
2. **sy 高** → 核心忙，可能 driver、系統呼叫過多
3. **wa 高** → I/O 磁碟/網路瓶頸
4. **id 低** → CPU 幾乎被榨乾

---

## ✅ 快速結論

- **CPU 不夠用** → us 高、id 低、wa 低
- **系統呼叫過多** → sy 高
- **磁碟/網路卡住** → wa 高
- **CPU 很空閒** → id 高

---

要不要我幫你再做一張 **「CPU 狀態 → 問題來源 → 解決方法」的對照表**，讓你排查更直觀？