當(dāng)前位置:首頁 > IT技術(shù) > 移動平臺 > 正文

【Linux】sysstat--系統(tǒng)性能監(jiān)控神器(性能信息收集)--iostat、sar、top、htop
2021-09-28 17:00:23

目錄

??sysstat 工具簡介??

??包含的工具??

??安裝??

??sar 的累計統(tǒng)計??

??sar??

??sar 的命令格式??

??sar 使用舉例??

??iostat??

??iostat 的命令格式??

??iostat 使用舉例??

??iostat 的輸出項說明??

??mpstat??

??mpstat 的命令格式??

??mpstat 使用舉例??

??mpstat 輸出項說明??



sysstat 工具簡介

Linux Sysstat是linux系統(tǒng)免費提供用于收集主機性能的一個軟件包,不是默認(rèn)安裝的,需要自己安裝。

sysstat 是?

Linux 系統(tǒng)中的常用工具包。它的主要用途是觀察服務(wù)負(fù)載,比如CPU和內(nèi)存的占用率、網(wǎng)絡(luò)的使用率以及磁盤寫入和讀取速度等。

sysstat 工具包中包含兩類工具:

即時查看工具:iostat、mpstat、sar

累計統(tǒng)計工具:sar

也就是說,sar 具有這兩種功能。因此,sar 是 sysstat 中的核心工具。

包含的工具

  • iostat

輸出CPU的統(tǒng)計信息和所有I/O設(shè)備的輸入輸出(I/O)統(tǒng)計信息

  • mpstat

關(guān)于CPU的詳細(xì)信息(單獨輸出或者分組輸出)

  • pidstat

關(guān)于運行中的進(jìn)程/任務(wù)、CPU、內(nèi)存等的統(tǒng)計信息

  • sar

保存并輸出不同系統(tǒng)資源(CPU、內(nèi)存、IO、網(wǎng)絡(luò)、內(nèi)核等)的詳細(xì)信息

  • sadc

系統(tǒng)活動數(shù)據(jù)收集器,用于收集sar工具的后端數(shù)據(jù)

  • sa1

系統(tǒng)收集并存儲sadc數(shù)據(jù)文件的二進(jìn)制數(shù)據(jù),與sadc工具配合使用

  • sa2

配合sar工具使用,產(chǎn)生每日的摘要報告

  • sadf

用于以不同的數(shù)據(jù)格式(CVS或者XML)來格式化sar工具的輸出

  • sysstat

sysstat 工具包的 man 幫助頁面。

  • nfsiostat

NFS(Network File System)的I/O統(tǒng)計信息

  • cifsiostat

CIFS(Co

安裝

  • CentOS
    通過yum安裝:
    yum install sysstat
    或者通過rpm包安裝:
    wget -c http://pagesperso-orange.fr/sebastien.godard/sysstat-11.7.3-1.x86_64.rpm sudo rpm -Uvh sysstat-11.7.3-1.x86_64.rpm
    推薦rpm包方式安裝,因為能隨時安裝最新版本。
  • Ubuntu
    apt-get install sysstat

查看是否成功安裝:

mpstat -V
sysstat version 9.0.4
(C) Sebastien Godard (sysstat <at> orange.fr)

sar 的累計統(tǒng)計

為了實現(xiàn) sar 的累計統(tǒng)計,系統(tǒng)必須周期地記錄當(dāng)時的信息,這是通過調(diào)用 /usr/lib/

sa/ 中的三個工具實現(xiàn)的:

  • sa1 :收集并存儲每天系統(tǒng)動態(tài)信息到一個二進(jìn)制的文件中,用作 sadc 的前端程序
  • sa2 :收集每天的系統(tǒng)活躍信息寫入總結(jié)性的報告,用作 sar 的前端程序
  • sadc :系統(tǒng)動態(tài)數(shù)據(jù)收集工具,收集的數(shù)據(jù)被寫入一個二進(jìn)制的文件中,它被用作 sar 工具的后端

定時統(tǒng)計任務(wù)

如果是用??yum??或??apt-get??方式安裝,默認(rèn)已經(jīng)在??/etc/cron.d/sysstat??中配置好了計劃日志;如果是編譯安裝或沒有,可以手動配置,內(nèi)容大致如下:

# Run system activity accounting tool every 10 minutes

*/10 * * * * root? /usr/lib64/sa/sa1 1 1

# 0 * * * *? root? /usr/lib64/sa/sa1 600 6 &

# Generate a daily summary of process accounting at 23:53

53 23 * * * root? /usr/lib64/sa/sa2 -A

(紅色部分改為sa1和sa2實際所在地址,用yum和apt-get安裝sysstat后可以用命令 man sa1和man sa2 或find / -name sa1可以查看其所在的實際地址)

統(tǒng)計的日志文件會存放在??/var/log/sa??這個目錄下。每10分鐘就進(jìn)行一次日志的記錄,在23:53對一天的日志進(jìn)行匯總。

改為1分鐘一次:*/1? * * * * root /usr/lib64/sa/sa1 1 1

  • ??/usr/lib64/sa/sa1??是一個可以使用 cron 進(jìn)行調(diào)度生成二進(jìn)制日志文件的 shell 腳本
  • ??/usr/lib64/sa/sa2??是一個可以將二進(jìn)制日志文件轉(zhuǎn)換為用戶可讀的編碼方式的 shell 腳本

可能會碰到的問題:

安裝后首次執(zhí)行??sar??會報如下錯誤:

(看到在這:/var/log/sysstat/--------------------------------------------------sar log存放目錄)

無法打開 /var/log/sa/sa25: 沒有那個文件或目錄

原因是安裝完??sysstat??后,定時任務(wù)還沒生成那個文件。此處的 25 指的是日期??梢允謩由晌募?/p>

(在守護(hù)進(jìn)程 /etc/rc.d/init.d/sysstat 中使用???/usr/lib/sa/sadc -F -L -???命令創(chuàng)建當(dāng)日記錄文件,文件為???/
var/
log/sa/saDD?
?,其中 DD 為當(dāng)天的日期。)

sudo sar -o 5  #每5秒記錄一條信息,生成當(dāng)日文件saDD

sar

在使用 Linux 系統(tǒng)時,常常會遇到各種各樣的問題,比如系統(tǒng)容易死機或者運行速度突然變慢,這時我們常常猜測:是否硬盤空間不足,是否內(nèi)存不足,是否 I/O 出現(xiàn)瓶頸,還是系統(tǒng)的核心參數(shù)出了問題?這時,我們應(yīng)該考慮使用 sar 工具對系統(tǒng)做一個全面了解,分析系統(tǒng)的負(fù)載狀況。

sar(System Activity Reporter)是系統(tǒng)活動情況報告的縮寫。sar 工具將對系統(tǒng)當(dāng)前的狀態(tài)進(jìn)行取樣,然后通過計算數(shù)據(jù)和比例來表達(dá)系統(tǒng)的當(dāng)前運行狀態(tài)。它的特點是可以連續(xù)對系統(tǒng)取樣,獲得大量的取樣數(shù)據(jù);取樣數(shù)據(jù)和分析的結(jié)果都可以存入文件,所需的負(fù)載很小。 sar 是目前 Linux 上最為全面的系統(tǒng)性能分析工具之一,可以從多方面對系統(tǒng)的活動進(jìn)行報告,包括:文件的讀寫情況、系統(tǒng)調(diào)用的使用情況、磁盤I/O、CPU效率、內(nèi)存使用狀況、進(jìn)程活動及IPC有關(guān)的活動等。為了提供不同的信息,sar 提供了豐富的選項、因此使用較為復(fù)雜。

sar 的命令格式

sar 的命令格式為:

sar  [ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i interval ] [ -p ] [ -q ]
[ -r ] [ -R ] [ -t ] [ -u ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } ]
[ -x { pid | SELF | ALL } ] [ -X { pid | SELF | ALL } ]
[ -I { irq | SUM | ALL | XALL } ] [ -P { cpu | ALL } ]
[ -o [ filename ] | -f [ filename ] ]
[ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ]
[ interval [ count ] ]

其中:

  • interval : 為取樣時間間隔
  • count : 為輸出次數(shù),若省略此項,默認(rèn)值為 1

常用選項:

選項

說明

-A

等價于 -bBcdqrRuvwWy -I SUM -I XALL -n ALL -P ALL

-b

顯示I/O和傳送速率的統(tǒng)計信息

-B

輸出內(nèi)存頁面的統(tǒng)計信息

-c

輸出進(jìn)程統(tǒng)計信息,每秒創(chuàng)建的進(jìn)程數(shù)

-d

輸出每一個塊設(shè)備的活動信息

-i interval

指定間隔時長,單位為秒

-p

顯示友好設(shè)備名字,以方便查看,也可以和-d 和-n 參數(shù)結(jié)合使用,比如 -dp 或-np

-q

輸出進(jìn)程隊列長度和平均負(fù)載狀態(tài)統(tǒng)計信息

-r

輸出內(nèi)存和交換空間的統(tǒng)計信息

-R

輸出內(nèi)存頁面的統(tǒng)計信息

-t

讀取 /var/log/sa/saDD 的數(shù)據(jù)時顯示其中記錄的原始時間,如果沒有這個參數(shù)使用用戶的本地時間

-u

輸出CPU使用情況的統(tǒng)計信息

-v

輸出inode、文件和其他內(nèi)核表的統(tǒng)計信息

-V

輸出版本號信息

-w

輸出系統(tǒng)交換活動信息

-W

輸出系統(tǒng)交換的統(tǒng)計信息

-y

輸出TTY設(shè)備的活動信息

-n {DEV|EDEV|NFS|NFSD|SOCK|ALL}

分析輸出網(wǎng)絡(luò)設(shè)備狀態(tài)統(tǒng)計信息。

DEV

報告網(wǎng)絡(luò)設(shè)備的統(tǒng)計信息

EDEV

報告網(wǎng)絡(luò)設(shè)備的錯誤統(tǒng)計信息

NFS

報告 NFS 客戶端的活動統(tǒng)計信息

NFSD

報告 NFS 服務(wù)器的活動統(tǒng)計信息

SOCK

報告網(wǎng)絡(luò)套接字(sockets)的使用統(tǒng)計信息

ALL

報告所有類型的網(wǎng)絡(luò)活動統(tǒng)計信息

-x {pid|SELF|ALL}

輸出指定進(jìn)程的統(tǒng)計信息。

pid

用 pid 指定特定的進(jìn)程

SELF

表示 sar 自身

ALL

表示所有進(jìn)程

-X {pid|SELF|ALL}

輸出指定進(jìn)程的子進(jìn)程的統(tǒng)計信息

-I {irq|SUM|ALL|XALL}

輸出指定中斷的統(tǒng)計信息。

irq

指定中斷號

SUM

指定輸出每秒接收到的中斷總數(shù)

ALL

指定輸出前16個中斷

XALL

指定輸出全部的中斷信息

-P {cpu|ALL}

輸出指定 CPU 的統(tǒng)計信息

-o filename

將輸出信息保存到文件 filename

-f filename

從文件 filename 讀取數(shù)據(jù)信息。filename 是使用-o 選項時生成的文件。

-s hh:mm:ss

指定輸出統(tǒng)計數(shù)據(jù)的起始時間

-e hh:mm:ss

指定輸出統(tǒng)計數(shù)據(jù)的截至?xí)r間,默認(rèn)為18:00:00

sar 使用舉例

從 /var/log/sa/saDD 中讀取累計統(tǒng)計信息

1、輸出CPU使用情況的統(tǒng)計信息

[root@cnetos5 ~]# sar
[root@cnetos5 ~]# sar -u
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM CPU %user %nice %system %iowait %steal %idle
12:10:01 AM all 0.02 0.00 0.14 0.01 0.00 99.84
12:20:01 AM all 0.02 0.00 0.12 0.01 0.00 99.86
12:30:01 AM all 0.01 0.00 0.12 0.01 0.00 99.86
Average: all 0.03 0.00 0.13 0.01 0.00 99.84

輸出項說明:

CPU

all 表示統(tǒng)計信息為所有 CPU 的平均值。

%user

顯示在用戶級別(application)運行使用 CPU 總時間的百分比。

%nice

顯示在用戶級別,用于nice操作,所占用 CPU 總時間的百分比。

%system

在核心級別(kernel)運行所使用 CPU 總時間的百分比。

%iowait

顯示用于等待I/O操作占用 CPU 總時間的百分比。

%steal

管理程序(hypervisor)為另一個虛擬進(jìn)程提供服務(wù)而等待虛擬 CPU 的百分比。

%idle

顯示 CPU 空閑時間占用 CPU 總時間的百分比。

  1. 若 %iowait 的值過高,表示硬盤存在I/O瓶頸
  2. 若 %idle 的值高但系統(tǒng)響應(yīng)慢時,有可能是 CPU 等待分配內(nèi)存,此時應(yīng)加大內(nèi)存容量
  3. 若 %idle 的值持續(xù)低于 10,則系統(tǒng)的 CPU 處理能力相對較低,表明系統(tǒng)中最需要解決的資源是 CPU。

2、顯示I/O和傳送速率的統(tǒng)計信息

[root@cnetos5 ~]# sar -b
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM tps rtps wtps bread/s bwrtn/s
12:10:01 AM 1.58 0.00 1.58 0.00 16.71
12:20:01 AM 1.09 0.00 1.09 0.00 10.85
12:30:01 AM 1.08 0.00 1.08 0.00 10.74
Average: 1.24 0.00 1.24 0.00 12.70

輸出項說明:

tps

每秒鐘物理設(shè)備的 I/O 傳輸總量

rtps

每秒鐘從物理設(shè)備讀入的數(shù)據(jù)總量

wtps

每秒鐘向物理設(shè)備寫入的數(shù)據(jù)總量

bread/s

每秒鐘從物理設(shè)備讀入的數(shù)據(jù)量,單位為 塊/s

bwrtn/s

每秒鐘向物理設(shè)備寫入的數(shù)據(jù)量,單位為 塊/s

3、輸出內(nèi)存頁面的統(tǒng)計信息

[root@cnetos5 ~]# sar -B
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM pgpgin/s pgpgout/s fault/s majflt/s
12:10:01 AM 0.00 4.17 9.74 0.00
12:20:01 AM 0.00 2.71 2.24 0.00
12:30:01 AM 0.00 2.69 2.25 0.00
Average: 0.00 3.17 4.07 0.00

輸出項說明:

pgpgin/s

每秒鐘從磁盤讀入的系統(tǒng)頁面的 KB 總數(shù)

pgpgout/s

每秒鐘向磁盤寫出的系統(tǒng)頁面的 KB 總數(shù)

fault/s

系統(tǒng)每秒產(chǎn)生的頁面失效(major + minor)數(shù)量

majflt/s

系統(tǒng)每秒產(chǎn)生的頁面失效(major)數(shù)量

4、輸出每秒創(chuàng)建的進(jìn)程數(shù)的進(jìn)程統(tǒng)計信息

[root@cnetos5 ~]# sar -c
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM proc/s
12:10:01 AM 0.05
12:20:01 AM 0.03
12:30:01 AM 0.03
Average: 0.03

輸出項說明:

proc/s

每秒鐘創(chuàng)建的進(jìn)程數(shù)

5、輸出網(wǎng)絡(luò)設(shè)備狀態(tài)的統(tǒng)計信息

[root@cnetos5 ~]# sar -n DEV |grep eth0
12:00:01 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
12:10:01 AM eth0 0.59 0.92 41.57 893.98 0.00 0.00 0.00
12:20:01 AM eth0 0.55 0.88 37.50 859.56 0.00 0.00 0.00
12:30:01 AM eth0 0.55 0.86 38.17 871.98 0.00 0.00 0.00
Average: eth0 0.29 0.42 21.05 379.29 0.00 0.00 0.00

輸出項說明:

IFACE

網(wǎng)絡(luò)設(shè)備名

rxpck/s

每秒接收的包總數(shù)

txpck/s

每秒傳輸?shù)陌倲?shù)

rxbyt/s

每秒接收的字節(jié)(byte)總數(shù)

txbyt/s

每秒傳輸?shù)淖止?jié)(byte)總數(shù)

rxcmp/s

每秒接收壓縮包的總數(shù)

txcmp/s

每秒傳輸壓縮包的總數(shù)

rxmcst/s

每秒接收的多播(multicast)包的總數(shù)

6、輸出網(wǎng)絡(luò)設(shè)備狀態(tài)的統(tǒng)計信息(查看網(wǎng)絡(luò)設(shè)備故障)

[root@cnetos5 ~]# sar -n EDEV |egrep 'eth0|IFACE'
12:00:01 AM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
12:10:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:20:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:30:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

輸出項說明:

IFACE

網(wǎng)絡(luò)設(shè)備名

rxerr/s

每秒接收的壞包總數(shù)

txerr/s

傳輸包時每秒發(fā)生錯誤的總數(shù)

coll/s

傳輸包時每秒發(fā)生沖突(collision)的總數(shù)

rxdrop/s

接收包時,由于缺乏緩存,每秒丟棄(drop)包的數(shù)量

txdrop/s

傳輸包時,由于缺乏緩存,每秒丟棄(drop)包的數(shù)量

txcarr/s

傳輸包時,每秒發(fā)生的傳輸錯誤(carrier-error)的數(shù)量

rxfram/s

接收包時,每秒發(fā)生幀校驗錯誤(frame alignment error)的數(shù)量

rxfifo/s

接收包時,每秒發(fā)生隊列(FIFO)一出錯誤的數(shù)量

txfifo/s

傳輸包時,每秒發(fā)生隊列(FIFO)一出錯誤的數(shù)量

7、輸出進(jìn)程隊列長度和平均負(fù)載狀態(tài)統(tǒng)計信息

[root@cnetos5 ~]# sar -q
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
12:10:01 AM 0 85 0.02 0.01 0.00
12:20:01 AM 0 85 0.01 0.00 0.00
12:30:01 AM 0 85 0.03 0.01 0.00
Average: 0 85 0.01 0.00 0.00

輸出項說明:

runq-sz

運行隊列的長度(等待運行的進(jìn)程數(shù))

plist-sz

進(jìn)程列表中進(jìn)程(processes)和線程(threads)的數(shù)量

ldavg-1

最后1分鐘的系統(tǒng)平均負(fù)載(System load average)

ldavg-5

過去5分鐘的系統(tǒng)平均負(fù)載

ldavg-15

過去15分鐘的系統(tǒng)平均負(fù)載

8、輸出內(nèi)存和交換空間的統(tǒng)計信息

[root@cnetos5 ~]# sar -r
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
12:10:01 AM 262068 253408 49.16 43884 156456 1048568 0 0.00 0
12:20:01 AM 261572 253904 49.26 44580 156448 1048568 0 0.00 0
12:30:01 AM 260704 254772 49.42 45124 156472 1048568 0 0.00 0
Average: 259551 255925 49.65 46453 156470 1048568 0 0.00 0

輸出項說明:

kbmemfree

可用的空閑內(nèi)存數(shù)量,單位為 KB

kbmemused

已使用的內(nèi)存數(shù)量(不包含內(nèi)核使用的內(nèi)存),單位為 KB

%memused

已使用內(nèi)存的百分?jǐn)?shù)

kbbuffers

內(nèi)核緩沖區(qū)(buffer)使用的內(nèi)存數(shù)量,單位為 KB

kbcached

內(nèi)核高速緩存(cache)數(shù)據(jù)使用的內(nèi)存數(shù)量,單位為 KB

kbswpfree

可用的空閑交換空間數(shù)量,單位為 KB

kbswpused

已使用的交換空間數(shù)量,單位為 KB

%swpused

已使用交換空間的百分?jǐn)?shù)

kbswpcad

交換空間的高速緩存使用的內(nèi)存數(shù)量

9、輸出內(nèi)存頁面的統(tǒng)計信息

[root@cnetos5 ~]# sar -R
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM frmpg/s bufpg/s campg/s
12:10:01 AM -0.10 0.23 0.01
12:20:01 AM -0.21 0.29 -0.00
12:30:01 AM -0.36 0.23 0.01
Average: -0.21 0.22 0.00

輸出項說明:

frmpg/s

每秒系統(tǒng)中空閑的內(nèi)存頁面(memory page freed)數(shù)量

bufpg/s

每秒系統(tǒng)中用作緩沖區(qū)(buffer)的附加內(nèi)存頁面(additional memory page)數(shù)量

campg/s

每秒系統(tǒng)中高速緩存的附加內(nèi)存頁面(additional memory pages cached)數(shù)量

10、輸出inode、文件和其他內(nèi)核表的信息

[root@cnetos5 ~]# sar -v
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM dentunusd file-sz inode-sz super-sz %super-sz dquot-sz %dquot-sz rtsig-sz %rtsig-sz
12:10:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00
12:20:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00
12:30:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00
Average: 7253 589 5125 0 0.00 0 0.00 0 0.00

輸出項說明:

dentunusd

目錄高速緩存中未被使用的條目數(shù)量

file-sz

文件句柄(file handle)的使用數(shù)量

inode-sz

i節(jié)點句柄(inode handle)的使用數(shù)量

super-sz

由內(nèi)核分配的超級塊句柄(super block handle)數(shù)量

%super-sz

已分配的超級塊句柄占總超級塊句柄的百分比

dquot-sz

已經(jīng)分配的磁盤限額條目數(shù)量

%dquot-sz

分配的磁盤限額條目數(shù)量占總磁盤限額條目的百分比

rtsig-sz

已排隊的 RT 信號的數(shù)量

%rtsig-sz

已排隊的 RT 信號占總 RT 信號的百分比

11、輸出系統(tǒng)交換活動信息

[root@cnetos5 ~]# sar -w
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM cswch/s
12:10:01 AM 44.74
12:20:01 AM 44.41
12:30:01 AM 44.41
Average: 44.50

輸出項說明:

cswch/s

每秒的系統(tǒng)上下文切換數(shù)量

12、 輸出系統(tǒng)交換的統(tǒng)計信息

[root@cnetos5 ~]# sar -W
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM pswpin/s pswpout/s
12:10:01 AM 0.00 0.00
12:20:01 AM 0.00 0.00
12:30:01 AM 0.00 0.00
Average: 0.00 0.00

輸出項說明:

pswpin/s

每秒系統(tǒng)換入的交換頁面(swap page)數(shù)量

pswpout/s

每秒系統(tǒng)換出的交換頁面(swap page)數(shù)量

13、輸出TTY設(shè)備的活動信息

[root@cnetos5 ~]# sar -y
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM TTY rcvin/s xmtin/s framerr/s prtyerr/s brk/s ovrun/s
12:10:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00
12:10:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00
12:20:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00
12:20:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00
12:30:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00
12:30:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00
………………
Average: 0 0.00 0.00 0.00 0.00 0.00 0.00
Average: 1 0.00 0.00 0.00 0.00 0.00 0.00

輸出項說明:

TTY

TTY 串行設(shè)備號

rcvin/s

每秒接收的中斷數(shù)量

xmtin/s

每秒傳送的中斷數(shù)量

framerr/s

每秒發(fā)生的幀錯誤數(shù)(frame error)量

prtyerr/s

每秒發(fā)生的奇偶校驗錯誤(parity error)數(shù)量

brk/s

每秒發(fā)生的暫停(break)數(shù)量

ovrun/s

每秒發(fā)生的溢出錯誤(overrun error)數(shù)量

14、顯示全面的累計統(tǒng)計信息

# sar -A

15、默認(rèn)配置不提供的累計統(tǒng)計信息

[root@cnetos5 ~]# sar -d
Requested activities not available in file
[root@cnetos5 ~]# sar -x ALL
Requested activities not available in file
[root@cnetos5 ~]# sar -X ALL
Requested activities not available in file

  1. 默認(rèn)情況下,為了防止統(tǒng)計數(shù)據(jù)文件 /var/log/sa/saDD 迅速增大,/usr/lib/sa/sadc 沒有記錄每個塊設(shè)備的統(tǒng)計信息。
  2. 可以在 -d -x -X 參數(shù)后添加取樣參數(shù)獲得即時統(tǒng)計信息。
  3. 帶有 -x -X 選項的 sar 命令從來不能記錄到二進(jìn)制統(tǒng)計數(shù)據(jù)文件 。

查看即時統(tǒng)計信息

1、使用取樣選項查看即時統(tǒng)計信息

例如:每30秒取樣一次,連續(xù)取樣5次

# sar -n DEV 30 5
# sar -u 30 5

2、輸出和讀取統(tǒng)計信息文件

例如:

# sar -u  30 5 -o sar-dump-001
# sar -u -f sar-dump-001

3、輸出每一個塊設(shè)備的活動信息

# sar -dp 5 2
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

07:12:11 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:12:16 AM sda 0.40 0.00 17.56 44.00 0.00 1.00 1.00 0.04
07:12:16 AM sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

07:12:16 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:12:21 AM sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:12:21 AM sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: sda 0.20 0.00 8.78 44.00 0.00 1.00 1.00 0.02
Average: sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

輸出項說明:

DEV

正在監(jiān)視的塊設(shè)備

tps

每秒鐘物理設(shè)備的 I/O 傳輸總量

rd_sec/s

每秒從設(shè)備讀取的扇區(qū)(sector)數(shù)量

wr_sec/s

每秒向設(shè)備寫入的扇區(qū)(sector)數(shù)量

avgrq-sz

發(fā)給設(shè)備請求的平均扇區(qū)數(shù)

avgqu-sz

發(fā)給設(shè)備請求的平均隊列長度

await

設(shè)備 I/O 請求的平均等待時間(單位為毫秒)

svctm

設(shè)備 I/O 請求的平均服務(wù)時間(單位為毫秒)

%util

在 I/O 請求發(fā)送到設(shè)備期間,占用 CPU 時間的百分比。用于體現(xiàn)設(shè)備的帶寬利用率。

  1. avgqu-sz 的值較低時,設(shè)備的利用率較高。
  2. 當(dāng) %util 的值接近 100% 時,表示設(shè)備帶寬已經(jīng)占滿。

要判斷一個系統(tǒng)瓶頸問題,有時需要幾個 sar 命令選項結(jié)合起來使用,例如:

  • 懷疑CPU存在瓶頸,可用?sar -u?和?sar -q?deng 等來查看
  • 懷疑內(nèi)存存在瓶頸,可用?sar -B、sar -r?和?sar -W?等來查看
  • 懷疑I/O存在瓶頸,可用???sar -b??、??sar -u???和???sar -d???等來查看iostat iostat 的命令格式 iostat 用于輸出CPU和磁盤I/O相關(guān)的統(tǒng)計信息。命令格式為:iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ] ] [ interval [ count ] ] 其中:
  • interval : 為取樣時間間隔
  • count : 為輸出次數(shù),若指定了取樣時間間隔且省略此項,將不斷產(chǎn)生統(tǒng)計信息
  • 常用選項:
選項說明-c僅顯示CPU統(tǒng)計信息。與-d選項互斥。-d僅顯示磁盤統(tǒng)計信息。與-c選項互斥。-k以KB為單位顯示每秒的磁盤請求數(shù)。默認(rèn)單位塊。-m以MB為單位顯示每秒的磁盤請求數(shù)。默認(rèn)單位塊。-p {device|ALL}用于顯示塊設(shè)備及系統(tǒng)分區(qū)的統(tǒng)計信息。與-x選項互斥。-t在輸出數(shù)據(jù)時,打印搜集數(shù)據(jù)的時間。-V打印版本號信息。-x輸出擴(kuò)展信息。
  • iostat 使用舉例
  • 下面給出幾個例子:
    # 顯示一條包括所有的CPU和設(shè)備吞吐率的統(tǒng)計信息# iostat Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 avg-cpu: %user %nice %system %iowait %steal %idle 0.10 0.04 0.37 0.07 0.00 99.42 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 1.44 16.79 10.58 800430 504340 sdb 0.01 0.07 0.00 3314 8 sdc 0.86 8.56 0.00 407892 24 # 每隔5秒顯示一次設(shè)備吞吐率的統(tǒng)計信息(單位為 塊/s) iostat -d 5 # 每隔5秒顯示一次設(shè)備吞吐率的統(tǒng)計信息(單位為 KB/s),共輸出3次 iostat -dk 5 3 # 每隔2秒顯示一次 sda 及上面所有分區(qū)的統(tǒng)計信息,共輸出5次 iostat -p sda 2 5 # 每隔2秒顯示一次 sda 和 sdb 兩個設(shè)備的擴(kuò)展統(tǒng)計信息,共輸出6次 iostat -x sda sdb 2 6 Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 avg-cpu: %user %nice %system %iowait %steal %idle 0.10 0.04 0.37 0.07 0.00 99.42 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.17 0.84 0.96 0.47 16.67 10.56 19.01 0.01 7.11 1.25 0.18 sdb 0.00 0.00 0.01 0.00 0.07 0.00 5.16 0.00 0.22 0.19 0.00 ………… >iostat -t 5 -x > iostat.out -t是輸出時間和日期,5是代表5秒一次,-x是詳細(xì)情況都輸出 主要查看cpu的idle和磁盤的util

    iostat 的輸出項說明

rrqm/s: 每秒對該設(shè)備的讀請求被合并次數(shù),文件系統(tǒng)會對讀取同塊(block)的請求進(jìn)行合并

wrqm/s: 每秒對該設(shè)備的寫請求被合并次數(shù)

r/s: 每秒完成的讀次數(shù)

w/s: 每秒完成的寫次數(shù)

rkB/s: 每秒讀數(shù)據(jù)量(kB為單位)

wkB/s: 每秒寫數(shù)據(jù)量(kB為單位)

avgrq-sz:平均每次IO操作的數(shù)據(jù)量(扇區(qū)數(shù)為單位)

avgqu-sz: 平均等待處理的IO請求隊列長度

await: 平均每次IO請求等待時間(包括等待時間和處理時間,毫秒為單位)

svctm: 平均每次IO請求的處理時間(毫秒為單位)

%util: 采用周期內(nèi)用于IO操作的時間比率,即IO隊列非空的時間比率

?

對于以上示例輸出,我們可以獲取到以下信息:

每秒向磁盤上寫30M左右數(shù)據(jù)(wkB/s值)

每秒有91次IO操作(r/s+w/s),其中以寫操作為主體

平均每次IO請求等待處理的時間為120.57毫秒,處理耗時為6.33毫秒

等待處理的IO請求隊列中,平均有11.79個請求駐留

?

以上各值之間也存在聯(lián)系,我們可以由一些值計算出其他數(shù)值,例如:

util = (r/s+w/s) * (svctm/1000)

對于上面的例子有:util = (1+90)*(6.33/1000) = 0.57603

rrqm/s:每秒這個設(shè)備相關(guān)的讀取請求有多少被Merge了(當(dāng)系統(tǒng)調(diào)用需要讀取數(shù)據(jù)的時候,VFS將請求發(fā)到各個FS,如果FS發(fā)現(xiàn)不同的讀取請求讀取的是相同Block的數(shù)據(jù),F(xiàn)S會將這個請求合并Merge);

wrqm/s:每秒這個設(shè)備相關(guān)的寫入請求有多少被Merge了。

r/s: 該設(shè)備的每秒完成的讀請求數(shù)(merge合并之后的)

w/s: ?該設(shè)備的每秒完成的寫請求數(shù)(merge合并之后的)

rKB/s:每秒發(fā)送給該設(shè)備的總讀請求數(shù) #rMB/s

wKB/s:每秒發(fā)送給該設(shè)備的總寫請求數(shù)?#wMB/s

avgrq-sz 平均請求扇區(qū)的大小

avgqu-sz 是平均請求隊列的長度。毫無疑問,隊列長度越短越好。 ?

await:每一個IO請求的處理的平均時間(單位是微秒毫秒)。這里可以理解為IO的響應(yīng)時間,一般地系統(tǒng)IO響應(yīng)時間應(yīng)該低于5ms,如果大于10ms就比較大了。

這個時間包括了隊列時間和服務(wù)時間,也就是說,一般情況下,await大于svctm,它們的差值越小,則說明隊列時間越短,反之差值越大,隊列時間越長,說明系統(tǒng)出了問題。

r_await:讀IO的響應(yīng)時間

w_await:寫IO的響應(yīng)時間

svctm: 表示平均每次設(shè)備I/O操作的服務(wù)時間(以毫秒為單位)。如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,如果await的值遠(yuǎn)高于svctm的值,

則表示I/O隊列等待太長,系統(tǒng)上運行的應(yīng)用程序?qū)⒆兟?/p>

%util: 在統(tǒng)計時間內(nèi)所有處理IO時間,除以總共統(tǒng)計時間。例如,如果統(tǒng)計間隔1秒,該設(shè)備有0.8秒在處理IO,而0.2秒閑置,那么該設(shè)備的%util = 0.8/1 = 80%,所以該參數(shù)暗示了設(shè)備的繁忙程度。

一般地,如果該參數(shù)是100%表示設(shè)備已經(jīng)接近滿負(fù)荷運行了(當(dāng)然如果是多磁盤,即使%util是100%,因為磁盤的并發(fā)能力,所以磁盤使用未必就到了瓶頸)。

rsec/s:每秒讀取的扇區(qū)數(shù);

wsec/:每秒寫入的扇區(qū)數(shù)。

  • avg-cpu 部分輸出項說明:
%user在用戶級別運行所使用的 CPU 的百分比。%nicenice 操作所使用的 CPU 的百分比。%system在核心級別(kernel)運行所使用 CPU 的百分比。%iowaitCPU 等待硬件 I/O 所占用 CPU 的百分比。%steal當(dāng)管理程序(hypervisor)為另一個虛擬進(jìn)程提供服務(wù)而等待虛擬 CPU 的百分比。%idleCPU 空閑時間的百分比。
  • Device 部分基本輸出項說明:
tps每秒鐘物理設(shè)備的 I/O 傳輸總量。Blk_read讀入的數(shù)據(jù)總量,單位為塊。Blk_wrtn寫入的數(shù)據(jù)總量,單位為塊。kB_read讀入的數(shù)據(jù)總量,單位為KB。kB_wrtn寫入的數(shù)據(jù)總量,單位為KB。MB_read讀入的數(shù)據(jù)總量,單位為MB。MB_wrtn寫入的數(shù)據(jù)總量,單位為MB。Blk_read/s每秒從驅(qū)動器讀入的數(shù)據(jù)量,單位為 塊/s。Blk_wrtn/s每秒向驅(qū)動器寫入的數(shù)據(jù)量,單位為 塊/s。kB_read/s每秒從驅(qū)動器讀入的數(shù)據(jù)量,單位為KB/s。kB_wrtn/s每秒向驅(qū)動器寫入的數(shù)據(jù)量,單位為KB/s。MB_read/s每秒從驅(qū)動器讀入的數(shù)據(jù)量,單位為MB/s。MB_wrtn/s每秒向驅(qū)動器寫入的數(shù)據(jù)量,單位為MB/s。
  • Device 部分?jǐn)U展輸出項說明:
rrqm/s將讀入請求合并后,每秒發(fā)送到設(shè)備的讀入請求數(shù)。wrqm/s將寫入請求合并后,每秒發(fā)送到設(shè)備的寫入請求數(shù)。r/s每秒發(fā)送到設(shè)備的讀入請求數(shù)。w/s每秒發(fā)送到設(shè)備的寫入請求數(shù)。rsec/s每秒從設(shè)備讀入的扇區(qū)數(shù)。wsec/s每秒向設(shè)備寫入的扇區(qū)數(shù)。rkB/s每秒從設(shè)備讀入的數(shù)據(jù)量,單位為 KB/s。wkB/s每秒向設(shè)備寫入的數(shù)據(jù)量,單位為 KB/s。rMB/s每秒從設(shè)備讀入的數(shù)據(jù)量,單位為?MB/s。wMB/s每秒向設(shè)備寫入的數(shù)據(jù)量,單位為?MB/s。avgrq-sz發(fā)送到設(shè)備的請求的平均大小,單位為扇區(qū)。avgqu-sz發(fā)送到設(shè)備的請求的平均隊列長度。awaitI/O請求平均執(zhí)行時間。包括發(fā)送請求和執(zhí)行的時間。單位為毫秒。svctm發(fā)送到設(shè)備的I/O請求的平均執(zhí)行時間。單位為毫秒。%util在I/O請求發(fā)送到設(shè)備期間,占用CPU時間的百分比。用于顯示設(shè)備的帶寬利用率。當(dāng)這個值接近100%時,表示設(shè)備帶寬已經(jīng)占滿。
  • mpstat
  • mpstat 的命令格式
  • mpstat 輸出每一個 CPU 的運行狀況,為多處理器系統(tǒng)中的 CPU 利用率提供統(tǒng)計信息。命令格式為:mpstat [ -P { cpu | ALL } ] [ -V ] [ interval [ count ] ]其中:
  • interval : 為取樣時間間隔。指定0則輸出自系統(tǒng)啟動后的一個統(tǒng)計信息。
  • count : 為輸出次數(shù)。若指定了取樣時間間隔且省略此項,將不斷產(chǎn)生統(tǒng)計信息。
  • 常用選項:
選項說明-P {cpu|ALL}指定 CPU。用 CPU-ID 指定,CPU-ID 是從0開始的,即第一個CPU為0。ALL 表示所有CPU。-V輸出版本號信息。
  • mpstat 使用舉例
  • 下面給出幾個例子:
    # 輸出所有 CPU 使用情況的統(tǒng)計信息。# mpstat Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 10:39:06 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 10:39:06 AM all 0.10 0.04 0.31 0.06 0.04 0.01 0.00 99.45 1012.99 # 輸出第一個 CPU 使用情況的統(tǒng)計信息。 # mpstat -P 0 Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 10:41:03 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 10:41:03 AM 0 0.09 0.02 0.40 0.09 0.08 0.01 0.00 99.32 1012.79 # 每隔2秒輸出所有CPU的統(tǒng)計信息,共輸出5次。 # mpstat 2 5 # 每隔2秒輸出一次所有CPU的統(tǒng)計信息,共輸出5次。 # mpstat -P ALL 2 5 # 每隔2秒輸出一次第二個CPU的統(tǒng)計信息,共輸出5次。 # mpstat -P 1 2 5
    mpstat 輸出項說明

CPU在多CPU系統(tǒng)里,每個CPU有一個ID號,第一個CPU為0。all表示統(tǒng)計信息為所有CPU的平均值。%user顯示在用戶級別運行所占用CPU總時間的百分比。%nice顯示在用戶級別,用于nice操作,所占用CPU總時間的百分比。%sys顯示在kernel級別運行所占用CPU總時間的百分比。注意:這個值并不包括服務(wù)中斷和softirq。%iowait顯示用于等待I/O操作時,占用CPU總時間的百分比。%irq顯示用于中斷操作,占用CPU總時間的百分比。%soft顯示用于softirq操作,占用CPU總時間的百分比。%steal管理程序(hypervisor)為另一個虛擬進(jìn)程提供服務(wù)而等待虛擬 CPU 的百分比。%idle顯示CPU在空閑狀態(tài),占用CPU總時間的百分比。intr/s顯示CPU每秒接收到的中斷總數(shù)。

?

11.33 kSar 命令

11.33.1 命令詳解

sar 命令的輸出能夠用于識別服務(wù)器瓶頸。但是,分析 sar 命令提供的信息可能比較困難,所以要使用 kSar 工具。kSar 工具可以將 sar 命令的輸出繪制成基于時間周期的、易于理解的圖表。
官網(wǎng)介紹:
https://github.com/vlsi/ksar

11.33.2 kSar使用

本文摘自 :https://blog.51cto.com/l

開通會員,享受整站包年服務(wù)立即開通 >