當前位置:首頁 > IT技術 > 移動平臺 > 正文

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

目錄

??sysstat 工具簡介??

??包含的工具??

??安裝??

??sar 的累計統計??

??sar??

??sar 的命令格式??

??sar 使用舉例??

??iostat??

??iostat 的命令格式??

??iostat 使用舉例??

??iostat 的輸出項說明??

??mpstat??

??mpstat 的命令格式??

??mpstat 使用舉例??

??mpstat 輸出項說明??



sysstat 工具簡介

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

sysstat 是?

Linux 系統中的常用工具包。它的主要用途是觀察服務負載,比如CPU和內存的占用率、網絡的使用率以及磁盤寫入和讀取速度等。

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

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

累計統計工具:sar

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

包含的工具

  • iostat

輸出CPU的統計信息和所有I/O設備的輸入輸出(I/O)統計信息

  • mpstat

關于CPU的詳細信息(單獨輸出或者分組輸出)

  • pidstat

關于運行中的進程/任務、CPU、內存等的統計信息

  • sar

保存并輸出不同系統資源(CPU、內存、IO、網絡、內核等)的詳細信息

  • sadc

系統活動數據收集器,用于收集sar工具的后端數據

  • sa1

系統收集并存儲sadc數據文件的二進制數據,與sadc工具配合使用

  • sa2

配合sar工具使用,產生每日的摘要報告

  • sadf

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

  • sysstat

sysstat 工具包的 man 幫助頁面。

  • nfsiostat

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

  • 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 的累計統計

為了實現 sar 的累計統計,系統必須周期地記錄當時的信息,這是通過調用 /usr/lib/

sa/ 中的三個工具實現的:

  • sa1 :收集并存儲每天系統動態信息到一個二進制的文件中,用作 sadc 的前端程序
  • sa2 :收集每天的系統活躍信息寫入總結性的報告,用作 sar 的前端程序
  • sadc :系統動態數據收集工具,收集的數據被寫入一個二進制的文件中,它被用作 sar 工具的后端

定時統計任務

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

# 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可以查看其所在的實際地址)

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

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

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

可能會碰到的問題:

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

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

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

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

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

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

sar

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

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

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 : 為輸出次數,若省略此項,默認值為 1

常用選項:

選項

說明

-A

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

-b

顯示I/O和傳送速率的統計信息

-B

輸出內存頁面的統計信息

-c

輸出進程統計信息,每秒創建的進程數

-d

輸出每一個塊設備的活動信息

-i interval

指定間隔時長,單位為秒

-p

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

-q

輸出進程隊列長度和平均負載狀態統計信息

-r

輸出內存和交換空間的統計信息

-R

輸出內存頁面的統計信息

-t

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

-u

輸出CPU使用情況的統計信息

-v

輸出inode、文件和其他內核表的統計信息

-V

輸出版本號信息

-w

輸出系統交換活動信息

-W

輸出系統交換的統計信息

-y

輸出TTY設備的活動信息

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

分析輸出網絡設備狀態統計信息。

DEV

報告網絡設備的統計信息

EDEV

報告網絡設備的錯誤統計信息

NFS

報告 NFS 客戶端的活動統計信息

NFSD

報告 NFS 服務器的活動統計信息

SOCK

報告網絡套接字(sockets)的使用統計信息

ALL

報告所有類型的網絡活動統計信息

-x {pid|SELF|ALL}

輸出指定進程的統計信息。

pid

用 pid 指定特定的進程

SELF

表示 sar 自身

ALL

表示所有進程

-X {pid|SELF|ALL}

輸出指定進程的子進程的統計信息

-I {irq|SUM|ALL|XALL}

輸出指定中斷的統計信息。

irq

指定中斷號

SUM

指定輸出每秒接收到的中斷總數

ALL

指定輸出前16個中斷

XALL

指定輸出全部的中斷信息

-P {cpu|ALL}

輸出指定 CPU 的統計信息

-o filename

將輸出信息保存到文件 filename

-f filename

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

-s hh:mm:ss

指定輸出統計數據的起始時間

-e hh:mm:ss

指定輸出統計數據的截至時間,默認為18:00:00

sar 使用舉例

從 /var/log/sa/saDD 中讀取累計統計信息

1、輸出CPU使用情況的統計信息

[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 表示統計信息為所有 CPU 的平均值。

%user

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

%nice

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

%system

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

%iowait

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

%steal

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

%idle

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

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

2、顯示I/O和傳送速率的統計信息

[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

每秒鐘物理設備的 I/O 傳輸總量

rtps

每秒鐘從物理設備讀入的數據總量

wtps

每秒鐘向物理設備寫入的數據總量

bread/s

每秒鐘從物理設備讀入的數據量,單位為 塊/s

bwrtn/s

每秒鐘向物理設備寫入的數據量,單位為 塊/s

3、輸出內存頁面的統計信息

[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

每秒鐘從磁盤讀入的系統頁面的 KB 總數

pgpgout/s

每秒鐘向磁盤寫出的系統頁面的 KB 總數

fault/s

系統每秒產生的頁面失效(major + minor)數量

majflt/s

系統每秒產生的頁面失效(major)數量

4、輸出每秒創建的進程數的進程統計信息

[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

每秒鐘創建的進程數

5、輸出網絡設備狀態的統計信息

[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

網絡設備名

rxpck/s

每秒接收的包總數

txpck/s

每秒傳輸的包總數

rxbyt/s

每秒接收的字節(byte)總數

txbyt/s

每秒傳輸的字節(byte)總數

rxcmp/s

每秒接收壓縮包的總數

txcmp/s

每秒傳輸壓縮包的總數

rxmcst/s

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

6、輸出網絡設備狀態的統計信息(查看網絡設備故障)

[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

網絡設備名

rxerr/s

每秒接收的壞包總數

txerr/s

傳輸包時每秒發生錯誤的總數

coll/s

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

rxdrop/s

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

txdrop/s

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

txcarr/s

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

rxfram/s

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

rxfifo/s

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

txfifo/s

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

7、輸出進程隊列長度和平均負載狀態統計信息

[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

運行隊列的長度(等待運行的進程數)

plist-sz

進程列表中進程(processes)和線程(threads)的數量

ldavg-1

最后1分鐘的系統平均負載(System load average)

ldavg-5

過去5分鐘的系統平均負載

ldavg-15

過去15分鐘的系統平均負載

8、輸出內存和交換空間的統計信息

[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

可用的空閑內存數量,單位為 KB

kbmemused

已使用的內存數量(不包含內核使用的內存),單位為 KB

%memused

已使用內存的百分數

kbbuffers

內核緩沖區(buffer)使用的內存數量,單位為 KB

kbcached

內核高速緩存(cache)數據使用的內存數量,單位為 KB

kbswpfree

可用的空閑交換空間數量,單位為 KB

kbswpused

已使用的交換空間數量,單位為 KB

%swpused

已使用交換空間的百分數

kbswpcad

交換空間的高速緩存使用的內存數量

9、輸出內存頁面的統計信息

[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

每秒系統中空閑的內存頁面(memory page freed)數量

bufpg/s

每秒系統中用作緩沖區(buffer)的附加內存頁面(additional memory page)數量

campg/s

每秒系統中高速緩存的附加內存頁面(additional memory pages cached)數量

10、輸出inode、文件和其他內核表的信息

[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

目錄高速緩存中未被使用的條目數量

file-sz

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

inode-sz

i節點句柄(inode handle)的使用數量

super-sz

由內核分配的超級塊句柄(super block handle)數量

%super-sz

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

dquot-sz

已經分配的磁盤限額條目數量

%dquot-sz

分配的磁盤限額條目數量占總磁盤限額條目的百分比

rtsig-sz

已排隊的 RT 信號的數量

%rtsig-sz

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

11、輸出系統交換活動信息

[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

每秒的系統上下文切換數量

12、 輸出系統交換的統計信息

[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

每秒系統換入的交換頁面(swap page)數量

pswpout/s

每秒系統換出的交換頁面(swap page)數量

13、輸出TTY設備的活動信息

[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 串行設備號

rcvin/s

每秒接收的中斷數量

xmtin/s

每秒傳送的中斷數量

framerr/s

每秒發生的幀錯誤數(frame error)量

prtyerr/s

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

brk/s

每秒發生的暫停(break)數量

ovrun/s

每秒發生的溢出錯誤(overrun error)數量

14、顯示全面的累計統計信息

# sar -A

15、默認配置不提供的累計統計信息

[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. 默認情況下,為了防止統計數據文件 /var/log/sa/saDD 迅速增大,/usr/lib/sa/sadc 沒有記錄每個塊設備的統計信息。
  2. 可以在 -d -x -X 參數后添加取樣參數獲得即時統計信息。
  3. 帶有 -x -X 選項的 sar 命令從來不能記錄到二進制統計數據文件 。

查看即時統計信息

1、使用取樣選項查看即時統計信息

例如:每30秒取樣一次,連續取樣5次

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

2、輸出和讀取統計信息文件

例如:

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

3、輸出每一個塊設備的活動信息

# 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

正在監視的塊設備

tps

每秒鐘物理設備的 I/O 傳輸總量

rd_sec/s

每秒從設備讀取的扇區(sector)數量

wr_sec/s

每秒向設備寫入的扇區(sector)數量

avgrq-sz

發給設備請求的平均扇區數

avgqu-sz

發給設備請求的平均隊列長度

await

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

svctm

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

%util

在 I/O 請求發送到設備期間,占用 CPU 時間的百分比。用于體現設備的帶寬利用率。

  1. avgqu-sz 的值較低時,設備的利用率較高。
  2. 當 %util 的值接近 100% 時,表示設備帶寬已經占滿。

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

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

    iostat 的輸出項說明

rrqm/s: 每秒對該設備的讀請求被合并次數,文件系統會對讀取同塊(block)的請求進行合并

wrqm/s: 每秒對該設備的寫請求被合并次數

r/s: 每秒完成的讀次數

w/s: 每秒完成的寫次數

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

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

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

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

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

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

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

?

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

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

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

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

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

?

以上各值之間也存在聯系,我們可以由一些值計算出其他數值,例如:

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

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

rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了(當系統調用需要讀取數據的時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的數據,FS會將這個請求合并Merge);

wrqm/s:每秒這個設備相關的寫入請求有多少被Merge了。

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

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

rKB/s:每秒發送給該設備的總讀請求數 #rMB/s

wKB/s:每秒發送給該設備的總寫請求數?#wMB/s

avgrq-sz 平均請求扇區的大小

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

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

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

r_await:讀IO的響應時間

w_await:寫IO的響應時間

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

則表示I/O隊列等待太長,系統上運行的應用程序將變慢。

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

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

rsec/s:每秒讀取的扇區數;

wsec/:每秒寫入的扇區數。

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

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

?

11.33 kSar 命令

11.33.1 命令詳解

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

11.33.2 kSar使用

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

開通會員,享受整站包年服務
国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码