[20141203]學習使用pidstat.txt

lfree發表於2014-12-03

[20141203]學習使用pidstat.txt

#  rpm -qif `which pidstat`
Name        : sysstat                      Relocations: (not relocatable)
Version     : 9.0.4                             Vendor: CentOS
Release     : 18.el6                        Build Date: Tue 19 Jul 2011 08:43:17 PM CST
Install Date: Sun 17 Jun 2012 12:32:32 PM CST      Build Host: c6b5.bsys.dev.centos.org
Group       : Applications/System           Source RPM: sysstat-9.0.4-18.el6.src.rpm
Size        : 825089                           License: GPLv2+
Signature   : RSA/SHA1, Mon 26 Sep 2011 12:25:37 PM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <>
URL         :
Summary     : The sar and iostat system monitoring commands
Description :
This package provides the sar and iostat commands for Linux. Sar and
iostat enable system monitoring of disk, network, and other IO
activity.

--竟然和前幾天看sar命令在同一個包裡面,比對才知道好像rh 4.X版本沒有這個命令,僅僅在centos 6.X才存在。順便學習看看。
--能使用它來檢測程式以及生成報表,也能檢測特定的程式號或者系統的全部程式。並且也是sysstat軟體包的一部分,自己很少使用它。

1.檢視特定的命令相關程式:

#  pidstat -C oracle
Linux 2.6.32-220.17.1.el6.x86_64 (xxxxxx)     12/03/2014      _x86_64_        (24 CPU)

04:10:12 PM       PID    %usr %system  %guest    %CPU   CPU  Command
04:10:12 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:10:12 PM      4323    0.00    0.00    0.00    0.00    21  oracle
04:10:12 PM      4325    0.00    0.00    0.00    0.00    13  oracle
04:10:12 PM      4327    0.00    0.00    0.00    0.00    17  oracle
04:10:12 PM      4329    0.00    0.00    0.00    0.00    13  oracle
04:10:12 PM      4331    0.00    0.00    0.00    0.00    13  oracle
04:10:12 PM      4333    0.00    0.00    0.00    0.00    13  oracle
...


2.檢測特定程式號。
#  pidstat -p  4321 1
64 (xxxxxx)     12/03/2014      _x86_64_        (24 CPU)

04:12:33 PM       PID    %usr %system  %guest    %CPU   CPU  Command
04:12:34 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:12:35 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:12:36 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:12:37 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:12:38 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:12:39 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:12:40 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:12:41 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:12:42 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:12:43 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:12:44 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:12:45 PM      4321    0.00    0.00    0.00    0.00     0  oracle
04:12:46 PM      4321    0.00    0.00    0.00    0.00     0  oracle

--後面的參數列示間隔事件(單位秒),實現連續檢測。

3.顯示I/O Statistics,使用-d選項,後面的參數列示間隔時間。
#  pidstat -p  4335 -d 1
Linux 2.6.32-220.17.1.el6.x86_64 (xxxxxx)     12/03/2014      _x86_64_        (24 CPU)

04:17:48 PM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
04:17:49 PM      4335      0.00      0.00      0.00  oracle
04:17:50 PM      4335      0.00      0.00      0.00  oracle
04:17:51 PM      4335      0.00     32.00      0.00  oracle
04:17:52 PM      4335      0.00      0.00      0.00  oracle
04:17:53 PM      4335      0.00      0.00      0.00  oracle
04:17:54 PM      4335      0.00     32.00      0.00  oracle
04:17:55 PM      4335      0.00      0.00      0.00  oracle
04:17:56 PM      4335      0.00      0.00      0.00  oracle
04:17:57 PM      4335      0.00     32.00      0.00  oracle
04:17:58 PM      4335      0.00      0.00      0.00  oracle
04:17:59 PM      4335      0.00      0.00      0.00  oracle
04:18:00 PM      4335      0.00     32.00      0.00  oracle
04:18:01 PM      4335      0.00      0.00      0.00  oracle
04:18:02 PM      4335      0.00      0.00      0.00  oracle
04:18:03 PM      4335      0.00     32.00      0.00  oracle
04:18:04 PM      4335      0.00      0.00      0.00  oracle
04:18:05 PM      4335      0.00      0.00      0.00  oracle

#  ps -ef | grep 4335 | grep -v grep
oracle    4335     1  0 Nov21 ?        00:01:24 ora_ckpt_xxxxxx

--可以發現oracle的ckpt程式每3秒寫1次。應該是控制檔案。必須按ctrl+c退出。
--可以在後面再增加一個引數,限制執行的次數,然後退出。其他以下的命令具有相似的作用。

4.顯示Paging Activity,使用-r引數,後面的參數列示間隔時間。

#  pidstat -p  4335 -r 1
Linux 2.6.32-220.17.1.el6.x86_64 (xxxxxx)     12/03/2014      _x86_64_        (24 CPU)

04:20:34 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
04:20:35 PM      4335      0.00      0.00 3296996  15608   0.05  oracle
04:20:36 PM      4335      0.00      0.00 3296996  15608   0.05  oracle
04:20:37 PM      4335      0.00      0.00 3296996  15608   0.05  oracle
04:20:38 PM      4335      0.00      0.00 3296996  15608   0.05  oracle
04:20:39 PM      4335      0.00      0.00 3296996  15608   0.05  oracle
04:20:40 PM      4335      0.00      0.00 3296996  15608   0.05  oracle
04:20:41 PM      4335      0.00      0.00 3296996  15608   0.05  oracle
04:20:42 PM      4335      0.00      0.00 3296996  15608   0.05  oracle
04:20:43 PM      4335      0.00      0.00 3296996  15608   0.05  oracle


5.顯示執行命令的完成引數,使用-l引數。
#  pidstat   -p   3930  -l
Linux 2.6.32-220.17.1.el6.x86_64 (xxxxxx)     12/03/2014      _x86_64_        (24 CPU)

04:23:37 PM       PID    %usr %system  %guest    %CPU   CPU  Command
04:23:37 PM      3930    0.00    0.00    0.00    0.00     1  /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit

#  pidstat   -p   3930
Linux 2.6.32-220.17.1.el6.x86_64 (xxxxxx)     12/03/2014      _x86_64_        (24 CPU)

04:23:45 PM       PID    %usr %system  %guest    %CPU   CPU  Command
04:23:45 PM      3930    0.00    0.00    0.00    0.00     1  tnslsnr

#  pidstat -C  tnslsnr -l
Linux 2.6.32-220.17.1.el6.x86_64 (xxxxxx)     12/03/2014      _x86_64_        (24 CPU)

04:24:27 PM       PID    %usr %system  %guest    %CPU   CPU  Command
04:24:27 PM      3930    0.00    0.00    0.00    0.00     1  /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit


6.顯示特定程式的子程式使用-T引數。

後面引數:CHILD ALL TASK

#  pidstat  -T CHILD | head
Linux 2.6.32-220.17.1.el6.x86_64 (xxxxxx)     12/03/2014      _x86_64_        (24 CPU)

04:34:22 PM       PID    usr-ms system-ms  guest-ms  Command
04:34:22 PM         1  33373890  26414510         0  init
04:34:22 PM         3      1150      6330         0  migration/0
04:34:22 PM         4        10    340620         0  ksoftirqd/0
04:34:22 PM         6      3680      5690         0  watchdog/0
04:34:22 PM         7      1820      4360         0  migration/1
04:34:22 PM         8         0        20         0  migration/1
04:34:22 PM         9        10    297100         0  ksoftirqd/1

7.以樹型格式顯示使用-t引數。

#  pidstat -C tnslsnr -t -l
Linux 2.6.32-220.17.1.el6.x86_64 (xxxxxx)     12/03/2014      _x86_64_        (24 CPU)

04:37:51 PM      TGID       TID    %usr %system  %guest    %CPU   CPU  Command
04:37:51 PM      3930         -    0.00    0.00    0.00    0.00     1  /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit
04:37:51 PM         -      3930    0.00    0.00    0.00    0.00     1  |__/u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit
04:37:51 PM         -      3931    0.00    0.00    0.00    0.00    15  |__/u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit

8.顯示全部統計在一行,使用-h引數:
--很奇怪很少有命令引數使用-h,一般使用它作為幫助。
--前面提到-r 顯示Paging Activity,-d 顯示磁碟IO -u 顯示cpu使用。
--如果執行 pidstat -rud 是分開顯示,不直觀。加入-h引數解決這個問題。

[root@xxxxxx IP=100.89 ~ 99]#  pidstat -p 4335 1 -rdu -h
Linux 2.6.32-220.17.1.el6.x86_64 (xxxxxx)     12/03/2014      _x86_64_        (24 CPU)

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
1417596299      4335    0.00    0.00    0.00    0.00     1      0.00      0.00 3296996  15608   0.05      0.00      0.00      0.00  oracle

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
1417596300      4335    0.00    0.00    0.00    0.00     1      0.00      0.00 3296996  15608   0.05      0.00      0.00      0.00  oracle

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
1417596301      4335    0.00    0.00    0.00    0.00     1      0.00      0.00 3296996  15608   0.05      0.00     32.00      0.00  oracle

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
1417596302      4335    0.00    0.00    0.00    0.00     1      0.00      0.00 3296996  15608   0.05      0.00      0.00      0.00  oracle

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
1417596303      4335    0.00    0.00    0.00    0.00     1      0.00      0.00 3296996  15608   0.05      0.00      0.00      0.00  oracle

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
1417596304      4335    0.00    0.00    0.00    0.00     1      0.00      0.00 3296996  15608   0.05      0.00     32.00      0.00  oracle

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
1417596305      4335    0.00    0.00    0.00    0.00     1      0.00      0.00 3296996  15608   0.05      0.00      0.00      0.00  oracle

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
1417596306      4335    0.00    0.00    0.00    0.00     1      0.00      0.00 3296996  15608   0.05      0.00      0.00      0.00  oracle

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
1417596307      4335    0.00    0.00    0.00    0.00     1      0.00      0.00 3296996  15608   0.05      0.00     32.00      0.00  oracle

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
1417596308      4335    0.00    0.00    0.00    0.00     1      0.00      0.00 3296996  15608   0.05      0.00      0.00      0.00  oracle

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
1417596309      4335    0.00    0.00    0.00    0.00     1      0.00      0.00 3296996  15608   0.05      0.00      0.00      0.00  oracle

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
1417596310      4335    0.00    0.00    0.00    0.00     1      0.00      0.00 3296996  15608   0.05      0.00     32.00      0.00  oracle

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-1355429/,如需轉載,請註明出處,否則將追究法律責任。

相關文章