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

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

目錄

??sysstat 工具簡(jiǎn)介??

??包含的工具??

??安裝??

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

??sar??

??sar 的命令格式??

??sar 使用舉例??

??iostat??

??iostat 的命令格式??

??iostat 使用舉例??

??iostat 的輸出項(xiàng)說(shuō)明??

??mpstat??

??mpstat 的命令格式??

??mpstat 使用舉例??

??mpstat 輸出項(xiàng)說(shuō)明??



sysstat 工具簡(jiǎn)介

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

sysstat 是?

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

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

即時(shí)查看工具:iostat、mpstat、sar

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

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

包含的工具

  • iostat

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

  • mpstat

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

  • pidstat

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

  • sar

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

  • sadc

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

  • sa1

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

  • sa2

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

  • sadf

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

  • sysstat

sysstat 工具包的 man 幫助頁(yè)面。

  • nfsiostat

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

  • cifsiostat

CIFS(Co

安裝

  • CentOS
    通過(guò)yum安裝:
    yum install sysstat
    或者通過(guò)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包方式安裝,因?yàn)槟茈S時(shí)安裝最新版本。
  • Ubuntu
    apt-get install sysstat

查看是否成功安裝:

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

sar 的累計(jì)統(tǒng)計(jì)

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

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

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

定時(shí)統(tǒng)計(jì)任務(wù)

如果是用??yum??或??apt-get??方式安裝,默認(rèn)已經(jīng)在??/etc/cron.d/sysstat??中配置好了計(jì)劃日志;如果是編譯安裝或沒(méi)有,可以手動(dòng)配置,內(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實(shí)際所在地址,用yum和apt-get安裝sysstat后可以用命令 man sa1和man sa2 或find / -name sa1可以查看其所在的實(shí)際地址)

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

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

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

可能會(huì)碰到的問(wèn)題:

安裝后首次執(zhí)行??sar??會(huì)報(bào)如下錯(cuò)誤:

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

無(wú)法打開(kāi) /var/log/sa/sa25: 沒(méi)有那個(gè)文件或目錄

原因是安裝完??sysstat??后,定時(shí)任務(wù)還沒(méi)生成那個(gè)文件。此處的 25 指的是日期??梢允謩?dòng)生成文件:

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

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

常用選項(xiàng):

選項(xiàng)

說(shuō)明

-A

等價(jià)于 -bBcdqrRuvwWy -I SUM -I XALL -n ALL -P ALL

-b

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

-B

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

-c

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

-d

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

-i interval

指定間隔時(shí)長(zhǎng),單位為秒

-p

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

-q

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

-r

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

-R

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

-t

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

-u

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

-v

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

-V

輸出版本號(hào)信息

-w

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

-W

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

-y

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

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

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

DEV

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

EDEV

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

NFS

報(bào)告 NFS 客戶端的活動(dòng)統(tǒng)計(jì)信息

NFSD

報(bào)告 NFS 服務(wù)器的活動(dòng)統(tǒng)計(jì)信息

SOCK

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

ALL

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

-x {pid|SELF|ALL}

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

pid

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

SELF

表示 sar 自身

ALL

表示所有進(jìn)程

-X {pid|SELF|ALL}

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

-I {irq|SUM|ALL|XALL}

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

irq

指定中斷號(hào)

SUM

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

ALL

指定輸出前16個(gè)中斷

XALL

指定輸出全部的中斷信息

-P {cpu|ALL}

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

-o filename

將輸出信息保存到文件 filename

-f filename

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

-s hh:mm:ss

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

-e hh:mm:ss

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

sar 使用舉例

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

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

[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

輸出項(xiàng)說(shuō)明:

CPU

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

%user

顯示在用戶級(jí)別(application)運(yùn)行使用 CPU 總時(shí)間的百分比。

%nice

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

%system

在核心級(jí)別(kernel)運(yùn)行所使用 CPU 總時(shí)間的百分比。

%iowait

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

%steal

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

%idle

顯示 CPU 空閑時(shí)間占用 CPU 總時(shí)間的百分比。

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

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

[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

輸出項(xiàng)說(shuō)明:

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)存頁(yè)面的統(tǒng)計(jì)信息

[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

輸出項(xiàng)說(shuō)明:

pgpgin/s

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

pgpgout/s

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

fault/s

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

majflt/s

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

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

[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

輸出項(xiàng)說(shuō)明:

proc/s

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

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

[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

輸出項(xiàng)說(shuō)明:

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)計(jì)信息(查看網(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

輸出項(xiàng)說(shuō)明:

IFACE

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

rxerr/s

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

txerr/s

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

coll/s

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

rxdrop/s

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

txdrop/s

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

txcarr/s

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

rxfram/s

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

rxfifo/s

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

txfifo/s

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

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

[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

輸出項(xiàng)說(shuō)明:

runq-sz

運(yùn)行隊(duì)列的長(zhǎng)度(等待運(yùn)行的進(jìn)程數(shù))

plist-sz

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

ldavg-1

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

ldavg-5

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

ldavg-15

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

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

[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

輸出項(xiàng)說(shuō)明:

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)存頁(yè)面的統(tǒng)計(jì)信息

[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

輸出項(xiàng)說(shuō)明:

frmpg/s

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

bufpg/s

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

campg/s

每秒系統(tǒng)中高速緩存的附加內(nèi)存頁(yè)面(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

輸出項(xiàng)說(shuō)明:

dentunusd

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

file-sz

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

inode-sz

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

super-sz

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

%super-sz

已分配的超級(jí)塊句柄占總超級(jí)塊句柄的百分比

dquot-sz

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

%dquot-sz

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

rtsig-sz

已排隊(duì)的 RT 信號(hào)的數(shù)量

%rtsig-sz

已排隊(duì)的 RT 信號(hào)占總 RT 信號(hào)的百分比

11、輸出系統(tǒng)交換活動(dò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

輸出項(xiàng)說(shuō)明:

cswch/s

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

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

[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

輸出項(xiàng)說(shuō)明:

pswpin/s

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

pswpout/s

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

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

[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

輸出項(xiàng)說(shuō)明:

TTY

TTY 串行設(shè)備號(hào)

rcvin/s

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

xmtin/s

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

framerr/s

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

prtyerr/s

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

brk/s

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

ovrun/s

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

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

# sar -A

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

[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)計(jì)數(shù)據(jù)文件 /var/log/sa/saDD 迅速增大,/usr/lib/sa/sadc 沒(méi)有記錄每個(gè)塊設(shè)備的統(tǒng)計(jì)信息。
  2. 可以在 -d -x -X 參數(shù)后添加取樣參數(shù)獲得即時(shí)統(tǒng)計(jì)信息。
  3. 帶有 -x -X 選項(xiàng)的 sar 命令從來(lái)不能記錄到二進(jìn)制統(tǒng)計(jì)數(shù)據(jù)文件 。

查看即時(shí)統(tǒng)計(jì)信息

1、使用取樣選項(xiàng)查看即時(shí)統(tǒng)計(jì)信息

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

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

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

例如:

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

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

# 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

輸出項(xiàng)說(shuō)明:

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ǐng)求的平均扇區(qū)數(shù)

avgqu-sz

發(fā)給設(shè)備請(qǐng)求的平均隊(duì)列長(zhǎng)度

await

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

svctm

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

%util

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

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

要判斷一個(gè)系統(tǒng)瓶頸問(wèn)題,有時(shí)需要幾個(gè) sar 命令選項(xiàng)結(jié)合起來(lái)使用,例如:

  • 懷疑CPU存在瓶頸,可用?sar -u?和?sar -q?deng 等來(lái)查看
  • 懷疑內(nèi)存存在瓶頸,可用?sar -B、sar -r?和?sar -W?等來(lái)查看
  • 懷疑I/O存在瓶頸,可用???sar -b??、??sar -u???和???sar -d???等來(lái)查看iostat iostat 的命令格式 iostat 用于輸出CPU和磁盤I/O相關(guān)的統(tǒng)計(jì)信息。命令格式為:iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ] ] [ interval [ count ] ] 其中:
  • interval : 為取樣時(shí)間間隔
  • count : 為輸出次數(shù),若指定了取樣時(shí)間間隔且省略此項(xiàng),將不斷產(chǎn)生統(tǒng)計(jì)信息
  • 常用選項(xiàng):
選項(xiàng)說(shuō)明-c僅顯示CPU統(tǒng)計(jì)信息。與-d選項(xiàng)互斥。-d僅顯示磁盤統(tǒng)計(jì)信息。與-c選項(xiàng)互斥。-k以KB為單位顯示每秒的磁盤請(qǐng)求數(shù)。默認(rèn)單位塊。-m以MB為單位顯示每秒的磁盤請(qǐng)求數(shù)。默認(rèn)單位塊。-p {device|ALL}用于顯示塊設(shè)備及系統(tǒng)分區(qū)的統(tǒng)計(jì)信息。與-x選項(xiàng)互斥。-t在輸出數(shù)據(jù)時(shí),打印搜集數(shù)據(jù)的時(shí)間。-V打印版本號(hào)信息。-x輸出擴(kuò)展信息。
  • iostat 使用舉例
  • 下面給出幾個(gè)例子:
    # 顯示一條包括所有的CPU和設(shè)備吞吐率的統(tǒng)計(jì)信息# 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)計(jì)信息(單位為 塊/s) iostat -d 5 # 每隔5秒顯示一次設(shè)備吞吐率的統(tǒng)計(jì)信息(單位為 KB/s),共輸出3次 iostat -dk 5 3 # 每隔2秒顯示一次 sda 及上面所有分區(qū)的統(tǒng)計(jì)信息,共輸出5次 iostat -p sda 2 5 # 每隔2秒顯示一次 sda 和 sdb 兩個(gè)設(shè)備的擴(kuò)展統(tǒng)計(jì)信息,共輸出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是輸出時(shí)間和日期,5是代表5秒一次,-x是詳細(xì)情況都輸出 主要查看cpu的idle和磁盤的util

    iostat 的輸出項(xiàng)說(shuō)明

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

wrqm/s: 每秒對(duì)該設(shè)備的寫請(qǐng)求被合并次數(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請(qǐng)求隊(duì)列長(zhǎng)度

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

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

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

?

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

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

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

平均每次IO請(qǐng)求等待處理的時(shí)間為120.57毫秒,處理耗時(shí)為6.33毫秒

等待處理的IO請(qǐng)求隊(duì)列中,平均有11.79個(gè)請(qǐng)求駐留

?

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

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

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

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

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

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

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

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

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

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

avgqu-sz 是平均請(qǐng)求隊(duì)列的長(zhǎng)度。毫無(wú)疑問(wèn),隊(duì)列長(zhǎng)度越短越好。 ?

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

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

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

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

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

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

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

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

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

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

  • avg-cpu 部分輸出項(xiàng)說(shuō)明:
%user在用戶級(jí)別運(yùn)行所使用的 CPU 的百分比。%nicenice 操作所使用的 CPU 的百分比。%system在核心級(jí)別(kernel)運(yùn)行所使用 CPU 的百分比。%iowaitCPU 等待硬件 I/O 所占用 CPU 的百分比。%steal當(dāng)管理程序(hypervisor)為另一個(gè)虛擬進(jìn)程提供服務(wù)而等待虛擬 CPU 的百分比。%idleCPU 空閑時(shí)間的百分比。
  • Device 部分基本輸出項(xiàng)說(shuō)明:
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ū)動(dòng)器讀入的數(shù)據(jù)量,單位為 塊/s。Blk_wrtn/s每秒向驅(qū)動(dòng)器寫入的數(shù)據(jù)量,單位為 塊/s。kB_read/s每秒從驅(qū)動(dòng)器讀入的數(shù)據(jù)量,單位為KB/s。kB_wrtn/s每秒向驅(qū)動(dòng)器寫入的數(shù)據(jù)量,單位為KB/s。MB_read/s每秒從驅(qū)動(dòng)器讀入的數(shù)據(jù)量,單位為MB/s。MB_wrtn/s每秒向驅(qū)動(dòng)器寫入的數(shù)據(jù)量,單位為MB/s。
  • Device 部分?jǐn)U展輸出項(xiàng)說(shuō)明:
rrqm/s將讀入請(qǐng)求合并后,每秒發(fā)送到設(shè)備的讀入請(qǐng)求數(shù)。wrqm/s將寫入請(qǐng)求合并后,每秒發(fā)送到設(shè)備的寫入請(qǐng)求數(shù)。r/s每秒發(fā)送到設(shè)備的讀入請(qǐng)求數(shù)。w/s每秒發(fā)送到設(shè)備的寫入請(qǐng)求數(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ǐng)求的平均大小,單位為扇區(qū)。avgqu-sz發(fā)送到設(shè)備的請(qǐng)求的平均隊(duì)列長(zhǎng)度。awaitI/O請(qǐng)求平均執(zhí)行時(shí)間。包括發(fā)送請(qǐng)求和執(zhí)行的時(shí)間。單位為毫秒。svctm發(fā)送到設(shè)備的I/O請(qǐng)求的平均執(zhí)行時(shí)間。單位為毫秒。%util在I/O請(qǐng)求發(fā)送到設(shè)備期間,占用CPU時(shí)間的百分比。用于顯示設(shè)備的帶寬利用率。當(dāng)這個(gè)值接近100%時(shí),表示設(shè)備帶寬已經(jīng)占滿。
  • mpstat
  • mpstat 的命令格式
  • mpstat 輸出每一個(gè) CPU 的運(yùn)行狀況,為多處理器系統(tǒng)中的 CPU 利用率提供統(tǒng)計(jì)信息。命令格式為:mpstat [ -P { cpu | ALL } ] [ -V ] [ interval [ count ] ]其中:
  • interval : 為取樣時(shí)間間隔。指定0則輸出自系統(tǒng)啟動(dòng)后的一個(gè)統(tǒng)計(jì)信息。
  • count : 為輸出次數(shù)。若指定了取樣時(shí)間間隔且省略此項(xiàng),將不斷產(chǎn)生統(tǒng)計(jì)信息。
  • 常用選項(xiàng):
選項(xiàng)說(shuō)明-P {cpu|ALL}指定 CPU。用 CPU-ID 指定,CPU-ID 是從0開(kāi)始的,即第一個(gè)CPU為0。ALL 表示所有CPU。-V輸出版本號(hào)信息。
  • mpstat 使用舉例
  • 下面給出幾個(gè)例子:
    # 輸出所有 CPU 使用情況的統(tǒng)計(jì)信息。# 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 # 輸出第一個(gè) CPU 使用情況的統(tǒng)計(jì)信息。 # 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)計(jì)信息,共輸出5次。 # mpstat 2 5 # 每隔2秒輸出一次所有CPU的統(tǒng)計(jì)信息,共輸出5次。 # mpstat -P ALL 2 5 # 每隔2秒輸出一次第二個(gè)CPU的統(tǒng)計(jì)信息,共輸出5次。 # mpstat -P 1 2 5
    mpstat 輸出項(xiàng)說(shuō)明

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

?

11.33 kSar 命令

11.33.1 命令詳解

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

11.33.2 kSar使用

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

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