centos8平台使用pidstat監控cpu/內存/io


一,安裝pidstat:

1,安裝

[root@localhost yum.repos.d]# yum install sysstat

 

2,查看版本:

[root@localhost ~]# pidstat -V
sysstat 版本 11.7.3
(C) Sebastien Godard (sysstat <at> orange.fr)

說明:一般會默認安裝,如未安裝則可以用上面的yum命令進行安裝

 

3,如果已安裝,可以查看所屬的rpm包:

[root@yjweb ~]# whereis pidstat
pidstat: /usr/bin/pidstat /usr/share/man/man1/pidstat.1.gz
[root@yjweb ~]# rpm -qf /usr/bin/pidstat
sysstat-11.7.3-2.el8.x86_64

 

說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest

         對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/

 說明:作者:劉宏締 郵箱: 371125307@qq.com

二,最常用的六個參數

 

 -u:監控cpu

 -r:監控內存

 -d:監控硬盤

-w:  顯示每個進程的上下文切換情況

-t:   顯示選擇任務的線程的統計信息

-p:  指定進程id

 

三,常用的用法舉例:

1,監控磁盤 

[root@SearchCacheServer ~]# pidstat -d

 

2,監控cpu

[root@SearchCacheServer ~]# pidstat -u 

 

3,監控內存

[root@SearchCacheServer ~]# pidstat -r

 

4,上下文切換

[root@SearchCacheServer ~]# pidstat -w

 

四,io使用情況的輸出信息意義:

[root@SearchCacheServer ~]# pidstat -d

 

  • PID:進程id

  • kB_rd/s:每秒從磁盤讀取的KB

  • kB_wr/s:每秒寫入磁盤KB

  • kB_ccwr/s:任務取消的寫入磁盤的KB。當任務截斷臟的pagecache的時候會發生。

  • 任務取消的寫入磁盤的kb數。在任務壓縮臟頁緩存時可能發生這種情況。在這種情況下,其他任務發起的IO不會處理。

  • iodelay: 表示 I/O 的延遲(單位是時鍾周期),包括等待同步塊 I/O 和換入塊 I/O 結束的時間

    任務的I/O阻塞延遲,以時鍾周期為單位。包括同步塊I/O和換入塊I/O

  • COMMAND:task的命令名

 

五,查看上下文切換的輸出信息意義:

[root@yjweb ~]$ pidstat -wt

 

上下文切換的輸出信息:

cswch/s:表示每秒自願上下文切換(voluntary context switches)的次數

ncswch/s:表示每秒非自願上下文切換(non voluntary context switches)的次數

 

這兩個概念一定要牢牢記住,因為它們意味着不同的性能問題:

所謂自願上下文切換,是指進程無法獲取所需資源,導致的上下文切換。

比如說, I/O、內存等系統資源不足時,就會發生自願上下文切換。

 

而非自願上下文切換,則是指進程由於時間片已到等原因,被系統強制調度,進而發生的上下文切換。

比如說,大量進程都在爭搶 CPU 時,就容易發生非自願上下文切換。

 

觀察上下文切換的意義:

自願上下文切換變多了,說明進程都在等待資源,有可能發生了 I/O 等其他問題;

非自願上下文切換變多了,說明進程都在被強制調度,也就是都在爭搶 CPU,說明 CPU 的確成了瓶頸;

 

六,顯示線程的統計信息 (-t)

[root@yjweb ~]# pidstat -t -p 17700

 

輸出信息:

  • TGID:主線程的表示

  • TID:線程id

  • %usr:進程在用戶空間占用cpu的百分比

  • %system:進程在內核空間占用cpu的百分比

  • %guest:進程在虛擬機占用cpu的百分比

  • %CPU:進程占用cpu的百分比

  • %wait: 進程或者線程等待的cpu使用率;此值過高,表示出現進程或線程爭搶CPU的情況

  • CPU:處理進程的cpu編號

  • Command:當前進程對應的命令

 

七,查看cpu的使用情況

[root@yjweb ~]# pidstat -u -p 17700

 

說明:輸出內容與 -t相同,但只顯示進程的情況

 

八,查看指定進程的內存使用情況:

[root@yjweb ~]# pidstat -r -p 17700

輸出內容:

  • PID:進程標識符

  • Minflt/s:任務每秒發生的次要錯誤,不需要從磁盤中加載頁

    任務造成的小錯誤的總數。小錯誤指的是還不需要從磁盤中加載一個內存頁。

  • Majflt/s:任務每秒發生的主要錯誤,需要從磁盤中加載頁

    任務造成的大錯誤的總數。大錯誤指的是需要從磁盤中加載一個內存頁。

  • VSZ:

    整個任務使用的虛擬內存大小,以kb為單位

  • RSS:常駐集合大小,非交換區物理內存,使用KB

  • 任務使用的沒有被交換的物理內存,以kb為單位

    %MEM:任務占用的可用物理內存的比例

  • Command:task命令名

 

九,pidstat如何對輸出數據做排序?

#sort: 排序

#-k :  指定排序用哪一列,下面的例子中是第8列:%CPU

#-r : 倒序

[root@blog databak]# pidstat -u | sort -k 8 -r
02:45:17 PM UID PID %usr %system %guest %wait %CPU CPU Command
02:45:17 PM 0 30330 0.12 0.07 0.00 0.00 0.19 2 AliYunDun
02:45:17 PM 1002 17700 0.05 0.02 0.00 0.00 0.06 0 mysqld
02:45:17 PM 0 23413 0.01 0.01 0.00 0.00 0.03 3 aliyun-service
02:45:17 PM 0 8240 0.00 0.01 0.00 0.00 0.01 1 redis-server
02:45:17 PM 0 30315 0.01 0.00 0.00 0.00 0.01 1 AliYunDunUpdate
02:45:17 PM 0 404 0.00 0.00 0.00 0.00 0.00 3 xfsaild/vda1

 

十,查看本地centos的版本

[root@yjweb ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core) 

 


免責聲明!

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



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