溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

操作系統(tǒng)性能監(jiān)控之CPU監(jiān)控

發(fā)布時間:2020-06-17 15:33:05 來源:網(wǎng)絡 閱讀:4395 作者:feelgood3000 欄目:軟件技術

操作系統(tǒng)性能監(jiān)控

服務端程序除了應用本身性能外,依賴與服務器本身的性能,今天學習了如何監(jiān)測服務器性能。包括:CPU、內(nèi)存、網(wǎng)絡IO和磁盤使用率。
操作系統(tǒng)性能監(jiān)控之CPU監(jiān)控
今天先看看如何監(jiān)測CPU。

CPU監(jiān)控

CPU使用率

vmstat命令

oot@SSP001:[/root]vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0  79484 90085784 591052 79229448    0    0     0     6    0    0  1  1 97  0  0

其中CPU部分代表cpu的監(jiān)測數(shù)據(jù)。
具體含義如下:

名稱 含義 英文
us 用戶態(tài)CPU時間(百分比) user time
sy 系統(tǒng)態(tài)CPU時間(百分比) system time
id 空閑CPU時間(百分比) Time spent idle
wa 等待IO的CPU時間 Time spent waiting for IO
st 不知道什么鬼,忽略 Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.

參數(shù)中需要注意的是如果wa很高,代表IO等待時間很高,有可能是磁盤IO出現(xiàn)瓶頸。

mpstat

[root@Hwseeker-Adx02 ~]# mpstat  -P ALL 10 1
Linux 2.6.32-573.3.1.el6.x86_64 (Hwseeker-Adx02)    2018年01月23日     _x86_64_    (24 CPU)

16時45分03秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
16時45分13秒  all    1.96    0.00    0.68    0.00    0.00    0.15    0.00    0.00   97.21
16時45分13秒    0    8.32    0.00    1.83    0.00    0.00    0.20    0.00    0.00   89.64
16時45分13秒    1    2.21    0.00    0.60    0.00    0.00    0.20    0.00    0.00   96.98
16時45分13秒    2    2.23    0.00    0.61    0.00    0.00    0.30    0.00    0.00   96.86
16時45分13秒    3    3.25    0.00    1.32    0.00    0.00    0.61    0.00    0.00   94.82
16時45分13秒    4    0.20    0.00    0.20    0.00    0.00    0.00    0.00    0.00   99.60
16時45分13秒    5    6.38    0.00    2.13    0.00    0.00    1.01    0.00    0.00   90.49
16時45分13秒    6    1.20    0.00    0.40    0.00    0.00    0.00    0.00    0.00   98.40
16時45分13秒    7    0.60    0.00    0.60    0.00    0.00    0.10    0.00    0.00   98.69
16時45分13秒    8    0.60    0.00    0.40    0.00    0.00    0.00    0.00    0.00   98.99
16時45分13秒    9    0.20    0.00    0.10    0.00    0.00    0.00    0.00    0.00   99.70
16時45分13秒   10    1.10    0.00    0.20    0.00    0.00    0.00    0.00    0.00   98.70
16時45分13秒   11    0.50    0.00    0.40    0.00    0.00    0.00    0.00    0.00   99.10
16時45分13秒   12    2.92    0.00    0.70    0.00    0.00    0.10    0.00    0.00   96.27
16時45分13秒   13    0.50    0.00    0.50    0.00    0.00    0.10    0.00    0.00   98.90
16時45分13秒   14    6.90    0.00    1.93    0.00    0.00    0.61    0.00    0.00   90.57
16時45分13秒   15    5.99    0.00    1.42    0.00    0.00    0.61    0.00    0.00   91.98
16時45分13秒   16    0.10    0.00    0.10    0.00    0.00    0.00    0.00    0.00   99.80
16時45分13秒   17    0.71    0.00    0.81    0.00    0.00    0.10    0.00    0.00   98.38
16時45分13秒   18    0.40    0.00    0.30    0.00    0.00    0.00    0.00    0.00   99.30
16時45分13秒   19    0.60    0.00    0.50    0.00    0.00    0.00    0.00    0.00   98.89
16時45分13秒   20    0.30    0.00    0.40    0.00    0.00    0.00    0.00    0.00   99.30
16時45分13秒   21    0.20    0.00    0.30    0.00    0.00    0.00    0.00    0.00   99.50
16時45分13秒   22    0.30    0.00    0.30    0.00    0.00    0.00    0.00    0.00   99.40
16時45分13秒   23    1.31    0.00    0.40    0.00    0.00    0.00    0.00    0.00   98.29

mpstat可以查看每個cpu的狀態(tài),可以發(fā)現(xiàn)應用中一些線程比其他線程消耗了更多CPU周期,還是所有線程基本平分CPU周期。如果是所有線程平分CPU周期,代表應用擴展性很好。
mpstat命令具體使用方法可以自行百度。這里我們需要關注的還是%usr/%sys/%iowait這幾個字段。

top命令

[root@Hwseeker-Adx02 ~]# top
top - 16:51:46 up 762 days, 16:33,  1 user,  load average: 0.65, 0.40, 0.29
Tasks: 598 total,   1 running, 596 sleeping,   0 stopped,   1 zombie
Cpu(s):  1.6%us,  0.7%sy,  0.0%ni, 97.5%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:  132119192k total, 130669000k used,  1450192k free,  1157188k buffers
Swap: 131071996k total,  4017704k used, 127054292k free, 88117860k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
36660 root      20   0 24.3g 4.7g  13m S 16.8  3.7   4401:08 java
36888 root      20   0 24.4g 4.7g  13m S 14.8  3.8   4332:33 java
52318 root      20   0 2353m 1.0g  39m S  5.9  0.8  67399:27 firefox
 5631 root      20   0 1252m  29m 1924 S  2.0  0.0  22434:02 main
21114 root      20   0  150m  13m 1364 S  2.0  0.0 664:08.76 redis-server

top命令不僅能監(jiān)控用戶態(tài)CPU、系統(tǒng)態(tài)cpu、空閑率,而且還會按照cpu使用率把進程列出來,使用起來很方便。

CPU程序調度隊列

運行隊列中是哪些正在等待可用CPU的輕量級進程。對于判斷CPU是否滿負荷運轉很有幫助。

對于調度隊列長度,該如何處理呢?

  1. 在很長一段時間里,運行隊列的長度一直都超過cpu的核數(shù)的一倍,就需要關注,但不需要立即采取行動。
  2. 如果長時間是cpu核數(shù)的3~4倍或更高,就需要立即采取行動。
    解決方法:
    1.增加cpu
    2.分析運行中的應用,改進使用率。如減少垃圾收集的頻度。

    vmstat

    oot@SSP001:[/root]vmstat
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
    r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
    0  0  79484 90085784 591052 79229448    0    0     0     6    0    0  1  1 97  0  0

    其中r列就是隊列長度。

本博文內(nèi)容為《Java性能優(yōu)化權威指南》的讀書筆記整理而來

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI