服務器負載?top命令/CPU使用率/load average計算方法【轉】


轉自:https://www.chenweiliang.com/cwl-1029.html

當我們學會了用Linux VPS 服務器來建站后,有必要了解load average各種負載平均值的含義,因為我們需要使用top命令了解系統的完成狀態,關注變量的實時變化。

要理解這一點,就需要了解以下變量說明。

top 命令 load average 詳解

服務器負載?top命令/CPU使用率/load average計算方法

以下是如何使用它的詳細說明 ▼

top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 191272k total, 173656k used, 17616k free, 22052k buffers
Swap: 192772k total, 0k used, 192772k free, 123988k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd
14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top
1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
  • 統計信息區域的前5行,是整個系統的統計數據。
  • 第1行是任務隊列信息,與uptime命令的執行結果相同。

其內容如下:

  • 01:06:48 當前時間
  • up 1:22 系統運行時間,格式為時:分
  • 1 user 當前登錄用戶數
  • load average: 0.06, 0.60, 0.48 系統負載,即任務隊列的平均長度。
  • 3個數值分別為 1分鍾、5分鍾、15分鍾前到現在的平均值。
  • 第2和第3行是進程和CPU信息。
  •  

當有多個CPU時,此內容可能超過2行。內容如下:

  • 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

以下是最后兩2行內存信息:

  • 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 進程狀態。
  • D=不可中斷的睡眠狀態
  • R=運行
  • S=睡眠
  • T=跟蹤/停止
  • Z=僵屍進程
  • COMMAND 命令名/命令行
  • WCHAN 若該進程在睡眠,則顯示睡眠中的系統函數名
  • Flags 任務標志,參考 sched.h

linux load average 調試說明

在查看了top命令所顯示的狀態后,需要依據其來做優化,但top命令顯示的只是表象,所以我們可以通過iostat或者vmstat命令進一步的觀察。

vmstat 查看系統負載

vmstat
procs -------memory-------- ----swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 100152 2436 97200 289740 0 1 34 45 99 33 0 0 99 0

procs

  • r 列表示運行和等待cpu時間片的進程數,如果長期大於1,說明cpu不足,需提高cpu。
  • b 列表示在等待資源的進程數,比如正在等待I/O、或者內存交換等。

cpu 表示cpu的使用狀態

  • us 列顯示了用戶方式下所花費 CPU 時間的百分比。us的值比較高時,說明用戶進程消耗的cpu時間多,但是如果長期大於50%,需要考慮優化用戶的程序。
  • sy 列顯示了內核進程所花費的cpu時間的百分比。這里us + sy的參考值為80%,如果us+sy 大於 80%說明可能存在CPU不足。
  • wa 列顯示了IO等待所占用的CPU時間的百分比。
  • 這里wa的參考值為30%,如果wa超過30%,說明IO等待嚴重,這可能是磁盤大量隨機訪問造成的,也可能磁盤或者磁盤訪問控制器的帶寬瓶頸造成的(主要是塊操作)。
  • id 列顯示了cpu處在空閑狀態的時間百分比。

以下文章說明了Linux Load Average過高多少合適?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM