理解 Linux 的平均負載和效能監控

發表於2017-06-27

在本文中,我們將解釋 Linux 系統中最關鍵的管理任務之一——關於系統 / CPU 的負載和平均負載的效能監控。

首先來看所有的類 UNIX 系統中兩個重要的表述:

  • 系統負載 / CPU 負載 – 衡量 Linux 系統的 CPU 過載或利用率低的指標,即處於運算狀態或等待狀態的 CPU 核心數。
  • 平均負載 – 通過固定的時間週期如 1、5、15 分鐘計算出的平均的系統負載。

Linux 中,平均負載一般指在核心執行佇列中被標記為執行或不可打斷狀態的程式的平均數。

注意:

  • 幾乎沒有 Linux 或類 Unix 系統不為使用者展示平均負載的值。
  • 完全空閒的 Linux 系統平均負載為 0,不包括空閒程式。
  • 絕大多數類 Unix 系統只統計執行和等待狀態的程式。但是在 Linux 中,平均負載也包括處於不可打斷的睡眠狀態的程式——它們是在等待其它系統資源如磁碟 I/O 等的程式。

如何監測 Linux 系統平均負載

有諸多方式監測系統平均負載,如 uptime,它會展示系統執行時間、使用者數量及平均負載:

平均負載的數字從左到右的含義依次為:

  • 最近 1 分鐘的平均負載為 1.98
  • 最近 5 分鐘的平均負載為 2.15
  • 最近 15 分鐘的平均負載為 2.21

高平均負載意味著系統是過載的:許多程式在等待 CPU 時間。

下一節將介紹平均負載和 CPU 核數的關係。此外,常用的工具 top 和 glances 可以實時顯示 Linux 系統的執行狀態:

Top命令

顯示執行中的Linux程式:

Glances 工具

Glances – Linux系統監測工具:

這些工具中的平均負載是從 /proc/loadavg 檔案中讀取的,也可以直接使用 cat 命令檢視:

在桌面計算機中,可以使用圖形使用者介面工具檢視系統平均負載。

理解系統平均負載和 CPU 核心數的關係

考慮了 CPU 核心數的影響,才能解釋系統負載。

多處理器 Vs 多核處理器

  • 多處理器 – 一個計算機系統中整合兩個或多個物理 CPU
  • 多核處理器 – 單個物理 CPU 有兩個或多個單獨的核並行工作(也叫處理單元)。雙核意味著有兩個處理單元,4 核有 4 個處理單元,以此類推。

此外,Intel 引入了超執行緒技術用來提高平行計算能力。

通過超執行緒技術,在作業系統中,單個物理 CPU 表現的和兩個邏輯 CPU 一樣。(實際在硬體上只有一個 CPU)。

注意,單個 CPU 核同一時間只能執行一個任務,於是產生了多 CPU/處理器、多核 CPU,以及多執行緒技術。

多 CPU 時,多個程式可以同時執行。如今的 Intel CPU 使用了多核心和超執行緒技術。

可以使用 nproc 或 lscpu 命令檢視系統中的處理器單元數量。

也可以使用 grep 命令

為了進一步理解系統負載,需要做一些假設。假設系統負載如下:

在單核系統中意味著:

  • CPU 被充分利用(100%);最近的 1 分鐘有 1 個程式在執行。
  • CPU 有 60% 處於空閒狀態;在最近的 5 分鐘沒有程式等待 CPU 時間。
  • CPU 平均過載了 235%;最近的 15 分鐘平均有 2.35 個程式在等待 CPU 時間。

在雙核系統中意味著:

  • 有一個 CPU 處於完全空閒狀態,另一個 CPU 被使用;最近的 1 分鐘沒有程式等待 CPU 時間。
  • CPU 平均 160% 處於空閒狀態;最近的 5 分鐘沒有程式等待 CPU 時間。
  • CPU 平均過載了 135%;最近的 15 分鐘有 1.35 個程式等待 CPU 時間。

總而言之,如果你是系統管理員,你應該關注高的平均負載。平均負載高於 CPU 核心數意味著需要增加 CPU,反之則意味著 CPU 未被充分利用。

 

相關文章