linux查看系統負載情況


系統平均負載

是指處於運行或不可打擾狀態的進程的平均數。處於運行,表示運行態,占用CPU,或就緒態,等待CPU調度;不可打擾,表示阻塞,正在等待I/O。

linux系統中查看負載情況一般使用uptime命令(w命令和top命令)

一、uptime命令

# uptime
14:07:35 up 112 days, 20:54,  1 user,  load average: 0.00, 0.01, 0.05

內容解析:

  • 14:07:35 : 當前時間
  • up 112 days, 20:54 :系統運行時長
  • 1 user :當前有1個用戶登錄了系統
  • load average: 0.00, 0.01, 0.05 :系統在過去的1分鍾內,5分鍾內,15分鍾內的平均負載

平均負載解析
查看邏輯CPU核心數: grep 'model name' /proc/cpuinfo | wc -l

# grep 'model name' /proc/cpuinfo | wc -l
1

運行結果表示,有1個邏輯CPU核心。 以1個CPU核心為例,假設CPU每分鍾最多處理100個進程 --

  • load = 0,沒有進程需要CPU
  • load = 0.5,CPU處理了50個進程
  • load = 1,CPU處理了100個進程,這是CPU已被占滿,但系統還是能順暢運行
  • load = 1.5,CPU處理了100個進程,還有50個進程正在排隊等着CPU處理,這是CPU已經超負荷工作了。
    為了讓系統順暢運行,load值最好不要超過1.0,這樣就沒有進程需要等待了,所有進程都能在第一時間得到處理。

一般情況下,0.7是一個比較理想的值。

另外,load值的健康狀態還跟系統CPU核心數相關,如果CPU核心數為2,那么load健康值應該為2,依次類推。

評價系統的負載一般采用15分鍾內的那個平均負載值。

二、w命令

[root@localhost ~]# w
 14:35:48 up 112 days, 21:22,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.4.2.107       14:06    4.00s  0.02s  0.01s w

第1行:與uptime命令相同
第2行以下:當前登錄的用戶列表

三、top命令

[root@localhost ~]# top
top - 14:40:59 up 112 days, 21:27,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  98 total,   1 running,  97 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880604 total,   753448 free,   301416 used,  2825740 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  3249396 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                  
 5074 root      20   0  161884   2184   1544 R  0.3  0.1   0:00.02 top                                                                      
    1 root      20   0  128004   5548   3116 S  0.0  0.1  29:47.57 systemd                                                                  
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.98 kthreadd                                                                 
    3 root      20   0       0      0      0 S  0.0  0.0   1:02.55 ksoftirqd/0                                                              
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                                                             
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0

第1行:與uptime命令相同
第2行:進程數信息

  • Tasks: 98 total 總共有98個進程
  • 1 running 1個進程正在占用CPU
  • 97 sleeping 97個睡眠進程
  • 0 stopped 0個停止的進程
  • 0 zombie 0個僵屍進程
    第3行:CPU使用率
  • us(user) 非nice用戶占用的CPU
  • sy(system) 內核、內核進程占用CPU的比率
  • ni(nice) 用戶進程空間內改變過優先級的進程占用的CPU比率
  • id(idle) CPU空閑比率,如果系統緩慢而這個值很高,說明系統慢的原因不是CPU負載高
  • wa(iowait) CPU等待執行I/O操作的時間比率,該指標可以用來排查磁盤I/O的問題,通常結合wa和id判斷
  • hi(Hardware IRQ) CPU處理硬件中斷所占時間的比率
  • si(Software Interrupts) CPU處理軟件中斷所占時間的比率
  • st(steal) 流逝的時間,虛擬機中的其他任務所占CPU時間的比率

一些情形說明:

  • 用戶進程us占比高,I/O操作wa低: 說明系統緩慢的原因在於進程占用大量CPU,通常還會伴有較低的空閑占比id,說明CPU空轉時間很少。
  • I/O操作wa低,空閑比率id高: 可以排除CPU資源瓶頸的可能。
  • I/O操作wa高:說明I/O占用了大量的CPU時間,需要檢查交換空間的使用,交換空間位於磁盤上,性能遠低於內存,當內存耗盡開始使用交換空間時,將會給性能帶來嚴重的影響,所以對於性能要求較高的服務器,一般建議關閉交換空間。另一方面,如果內存充足,但wa很高,說明需要檢查哪個進程占用了大量的I/O資源。

四、iostat命令

iostat 命令可以查看系統區分的I/O使用情況。

[root@localhost ~]# iostat
-bash: iostat: command not found
[root@localhost ~]# yum install -y sysstat
...安裝過程
[root@localhost ~]# iostat
Linux 3.10.0-957.27.2.el7.x86_64 (localhost.localdomain) 	12/27/2019 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.09    0.00    0.00   99.90

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.04         7.27         2.76   70737928   26794216
dm-0              0.02         0.06         0.25     610596    2392246
dm-1              0.00         0.00         0.00       2604          0
dm-2              0.02         7.21         2.51   70107584   24386816

avg-cpu:
%user 在用戶級別運行所使用的CPU比率
%nice nice操作所使用的CPU比率
%system 在系統級別(kernel)運行所使用的CPU比率
%iowait CPU等待硬件I/O時,所占用的CPU比率
%steal 其他任務所占CPU時間的比率
%idle CPU空閑時間的比率

值得注意的IO指標:
Device 磁盤名稱
tps 每秒I/O傳輸請求量
kB_read/s 每秒讀取的block數
kB_wrtn/s 每秒寫入的block數
kB_read 讀取block的總數
kB_wrtn 寫入block的總數

五、iotop命令

iotop命令類似top命令,但是現實的是各個進程的I/O情況,對於定位I/O操作較重的進程有較大的作用。

[root@localhost ~]# yum install -y iotop
[root@localhost ~]# iotop
Total DISK READ :	0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:	0.00 B/s | Actual DISK WRITE:       0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                       
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 22
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
 1027 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % sshd -D
    5 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]

可以看到不同任務的讀寫強度。

六、sysstat工具

查看歷史監控數據可以使用sysstat工具的sar命令:可以記錄系統CPU的負載,I/O狀況和內存使用記錄。

sysstat的配置文件在: /etc/sysconfig/sysstat
sysstat的日志文件在: /var/log/sa/ 統計信息每10分鍾記錄一次,每天的23:59分會分割統計文件。該操作在/etc/cron.d/sysstat 文件中配置。

sar -u 查看當天CPU使用情況
sar -r 查看當天內存使用情況
sar -b 查看當天IO統計記錄

[root@localhost ~]# yum install -y sysstat
[root@localhost ~]# sar
Linux 3.10.0-957.27.2.el7.x86_64 (localhost.localdomain) 	12/27/2019 	_x86_64_	(1 CPU)

03:40:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:50:01 PM     all      0.00      0.00      0.04      0.00      0.00     99.96
...
Average:        all      0.02      0.00      0.05      0.00      0.00     99.93


[root@localhost ~]# sar -r
Linux 3.10.0-957.27.2.el7.x86_64 (localhost.localdomain) 	12/27/2019 	_x86_64_	(1 CPU)

03:40:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
03:50:01 PM    743604   3137000     80.84       100   2677828    878216     14.69    507828   2406620         0
04:00:01 PM    743548   3137056     80.84       100   2677836    878216     14.69    507836   2406620         0
...
Average:       742369   3138235     80.87       100   2678556    878239     14.69    508025   2407157         0

kbmemfree             這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間
kbmemused             這個值和free命令中的used值基本一致,所以它包括buffer和cache的空間
%memused              這個值是kbmemused和內存總量(不包括swap)的一個百分比
kbbuffers             這個值是free命令中的buffer
kbcached              這個值是free命令中的cache
kbcommit              保證當前系統所需要的內存,即為了確保不溢出而需要的內存(RAM+swap)
%commit               這個值是kbcommit與內存總量(包括swap)的一個百分比



[root@localhost ~]# sar -b
Linux 3.10.0-957.27.2.el7.x86_64 (localhost.localdomain) 	12/27/2019 	_x86_64_	(1 CPU)

03:40:01 PM       tps      rtps      wtps   bread/s   bwrtn/s
03:50:01 PM      0.08      0.01      0.07      1.30      0.71
04:00:01 PM      0.06      0.00      0.06      0.00      0.49
...
Average:         0.12      0.00      0.12      0.85      1.79

tps            每秒鍾物理設備的 I/O 傳輸總量
rtps           每秒鍾從物理設備讀入的數據總量
wtps           每秒鍾向物理設備寫入的數據總量
bread/s        每秒鍾從物理設備讀入的數據量,單位為:塊/s
bwrtn/s        每秒鍾向物理設備寫入的數據量,單位為:塊/s


免責聲明!

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



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