簡介
pidstat主要用于監(jiān)控全部或指定進程占用系統(tǒng)資源的情況琉雳,如CPU样眠,內存、設備IO翠肘、任務切換檐束、線程等。pidstat首次運行時顯示自系統(tǒng)啟動開始的各項統(tǒng)計信息束倍,之后運行pidstat將顯示自上次運行該命令以后的統(tǒng)計信息被丧。用戶可以通過指定統(tǒng)計的次數(shù)和時間來獲得所需的統(tǒng)計信息。pidstat可以監(jiān)控到進程級別的信息绪妹;這就意味著我們更容易定位問題源頭甥桂。
安裝
yum install sysstat -y
命令參數(shù)
pidstat [ 選項 ] [ <時間間隔> ] [ <次數(shù)> ]
常用的參數(shù):
- u:默認的參數(shù),顯示各個進程的cpu使用統(tǒng)計
- r:顯示各個進程的內存使用統(tǒng)計
- d:顯示各個進程的IO使用情況
- p:指定進程號
- w:顯示每個進程的上下文切換情況
- t:顯示選擇任務的線程的統(tǒng)計信息外的額外信息
- T { TASK | CHILD | ALL }
這個選項指定了pidstat監(jiān)控的邮旷。TASK表示報告獨立的task黄选,CHILD關鍵字表示報告進程下所有線程統(tǒng)計信息。ALL表示報告獨立的task和task下面的所有線程婶肩。
注意:task和子線程的全局的統(tǒng)計信息和pidstat選項無關办陷。這些統(tǒng)計信息不會對應到當前的統(tǒng)計間隔,這些統(tǒng)計信息只有在子線程kill或者完成的時候才會被收集律歼。 - V:版本號
- h:在一行上顯示了所有活動民镜,這樣其他程序可以容易解析。
- I:在SMP環(huán)境险毁,表示任務的CPU使用率/內核數(shù)量
- l:顯示命令名和所有參數(shù)
具體用法
1殃恒、pidstat 默認顯示所有進程的cpu使用情況
等同于pidstat -u -p ALL植旧,等同于pidstat -u
[root@vircent7 ~]# pidstat
Linux 3.10.0-1160.45.1.el7.x86_64 (vircent7.kyj) 2021年12月15日 _x86_64_ (4 CPU)
14時19分24秒 UID PID %usr %system %guest %CPU CPU Command
14時19分24秒 0 1 0.00 0.04 0.00 0.04 1 systemd
14時19分24秒 0 2 0.00 0.00 0.00 0.00 0 kthreadd
14時19分24秒 0 6 0.00 0.00 0.00 0.00 0 ksoftirqd/0
14時19分24秒 0 7 0.00 0.00 0.00 0.00 0 migration/0
14時19分24秒 0 9 0.00 0.02 0.00 0.02 3 rcu_sched
- PID:進程ID
- %usr:進程在用戶空間占用cpu的百分比
- %system:進程在內核空間占用cpu的百分比
- %guest:進程在虛擬機占用cpu的百分比
- %CPU:進程占用cpu的百分比
- CPU:處理進程的cpu編號
- Command:當前進程對應的命令
2辱揭、pidstat -r 內存使用情況統(tǒng)計
使用-r選項离唐,pidstat將顯示各活動進程的內存使用統(tǒng)計:
[root@vircent7 ~]# pidstat -r
Linux 3.10.0-1160.45.1.el7.x86_64 (vircent7.kyj) 2021年12月15日 _x86_64_ (4 CPU)
15時09分03秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command
15時09分03秒 0 1 1.02 0.00 128340 6960 0.37 systemd
15時09分03秒 0 591 0.34 0.00 39056 3312 0.18 systemd-journal
15時09分03秒 0 616 0.10 0.00 201128 8128 0.43 lvmetad
15時09分03秒 0 628 0.19 0.00 49052 5504 0.29 systemd-udevd
15時09分03秒 0 721 0.01 0.00 55532 856 0.05 auditd
- minflt/s: 每秒次缺頁錯誤次數(shù)(minor page faults),次缺頁錯誤次數(shù)意即虛擬內存地址映射成物理內存地址產生的page fault次數(shù)
- majflt/s: 每秒主缺頁錯誤次數(shù)(major page faults)问窃,當虛擬內存地址映射成物理內存地址時亥鬓,相應的page在swap中,這樣的page fault為major page fault域庇,一般在內存使用緊張時產生
- VSZ: 該進程使用的虛擬內存(以kB為單位)
- RSS: 該進程使用的物理內存(以kB為單位)
- %MEM: 該進程使用內存的百分比
- Command: 拉起進程對應的命令
3嵌戈、pidstat -d IO情況統(tǒng)計
使用-d選項,我們可以查看進程IO的統(tǒng)計信息:
[root@vircent7 ~]# pidstat -d
Linux 3.10.0-1160.45.1.el7.x86_64 (vircent7.kyj) 2021年12月15日 _x86_64_ (4 CPU)
15時14分13秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
15時14分13秒 0 1 5.25 0.16 0.07 systemd
15時14分13秒 0 509 0.00 0.00 0.00 xfsaild/dm-0
15時14分13秒 0 591 0.07 0.00 0.00 systemd-journal
15時14分13秒 0 616 0.00 0.00 0.00 lvmetad
15時14分13秒 0 628 0.79 0.00 0.00 systemd-udevd
15時14分13秒 0 721 0.01 0.03 0.00 auditd
- kB_rd/s:每秒從磁盤讀取的KB
- kB_wr/s:每秒寫入磁盤KB
- kB_ccwr/s:任務取消的寫入磁盤的KB听皿。當任務截斷臟的pagecache的時候會發(fā)生熟呛。
- COMMAND:task的命令名
4、pidstat -w 顯示每個進程的上下文切換情況
[root@vircent7 ~]# pidstat -w
Linux 3.10.0-1160.45.1.el7.x86_64 (vircent7.kyj) 2021年12月15日 x86_64 (4 CPU)
15時16分24秒 UID PID cswch/s nvcswch/s Command
15時16分24秒 0 1 0.15 0.15 systemd
15時16分24秒 0 2 0.02 0.00 kthreadd
15時16分24秒 0 4 0.00 0.00 kworker/0:0H
15時16分24秒 0 6 0.08 0.00 ksoftirqd/0
- Cswch/s:每秒主動任務上下文切換數(shù)量
- Nvcswch/s:每秒被動任務上下文切換數(shù)量
5尉姨、使用-t和-p選項顯示指定進程的線程
[root@vircent7 ~]# pidstat -r -t -p 2602
Linux 3.10.0-1160.45.1.el7.x86_64 (vircent7.kyj) 2021年12月15日 _x86_64_ (4 CPU)
15時22分19秒 UID TGID TID minflt/s majflt/s VSZ RSS %MEM Command
15時22分19秒 0 2602 - 4.27 0.01 2893612 405348 21.54 java
15時22分19秒 0 - 2602 0.08 0.00 2893612 405348 21.54 |__java
15時22分19秒 0 - 2603 0.24 0.00 2893612 405348 21.54 |__java
15時22分19秒 0 - 2604 0.03 0.00 2893612 405348 21.54 |__java
15時22分19秒 0 - 2605 0.02 0.00 2893612 405348 21.54 |__java
- TGID:主線程id
- TID: 線程id
6庵朝、使用-C和-G選項顯示符合匹配的進程
[root@vircent7 ~]# pidstat -r -C java
Linux 3.10.0-1160.45.1.el7.x86_64 (vircent7.kyj) 2021年12月15日 _x86_64_ (4 CPU)
15時23分49秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command
15時23分49秒 0 2602 4.24 0.01 2893612 405348 21.54 java
對監(jiān)控對象進行篩選
7、設定采樣次數(shù)和間隔
以上所有命令結尾又厉,加上兩個數(shù)字九府,即可設定采樣間隔和采樣次數(shù)
[root@vircent7 ~]# pidstat -r -C java 1 5
Linux 3.10.0-1160.45.1.el7.x86_64 (vircent7.kyj) 2021年12月15日 _x86_64_ (4 CPU)
15時25分54秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command
15時25分55秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command
15時25分56秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command
15時25分57秒 0 2602 2.00 0.00 2893612 405348 21.54 java
15時25分57秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command
15時25分58秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command
平均時間: UID PID minflt/s majflt/s VSZ RSS %MEM Command
平均時間: 0 2602 0.40 0.00 2893612 405348 21.54 java
表示每1秒采集一次數(shù)據(jù),一共采集5次