开源 程序员 Python shell java linux php apache 云计算 Firefox Android google Ubuntu Windows mysql centos 微软 nginx 编程 wordpress

linux-磁盤相關命令

iostat主要用於監控系統設備的IO負載情況,iostat首次運行時顯示自系統啟動開始的各項統計信息,之後運行iostat將顯示自上次運行該命令以後的統計信息。用戶可以通過指定統計的次數和時間來獲得所需的統計信息。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

[root@localhost app]yum list|grep iostat

pcp-import-iostat2pcp.x86_64                3.11.8-7.el7               base   

[root@localhost app]# yum -y install pcp-import-iostat2pcp

[root@localhost app]# iostat

Linux 3.10.0-514.el7.x86_64 (localhost.localdomain)  10/24/2017     _x86_64_    (1 CPU)

 

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           0.44    0.00    0.30    0.04    0.00   99.22

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sda               0.43         9.55        14.19     737417    1095615

scd0              0.00         0.00         0.00         44          0

 

[root@localhost app]#

各個輸出項目的含義如下:

avg-cpu段:總體cpu使用情況統計信息,對於多核cpu,這裏為所有cpu的平均值

    %user: 在用戶級別運行所使用的CPU的百分比.

    %nice: nice操作所使用的CPU的百分比.

    %sys: 在系統級別(kernel)運行所使用CPU的百分比.

    %iowait: CPU等待硬件I/O時,所占用CPU百分比.它指示cpu用於等待io請求完成的時間,主要看iowait的值。

    %idle: CPU空閑時間的百分比.

Device段:各磁盤設備的IO統計信息

    tps:每秒進程下發的IO讀、寫請求數量,該設備每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.)。"一次傳輸"意思是"一次I/O請求"。多個邏輯請求可能會被合並為"一次I/O請求"。"一次傳輸"請求的大小是未知的。

    kB_read/s:每秒從設備(drive expressed)讀取的block數據量(一扇區為512bytes),單位為K;

    kB_wrtn/s:每秒向設備(drive expressed)寫入的block數據量,單位為K;

    kB_read:讀取的block總數據量,單位為K;

    kB_wrtn:寫入的block總數量數據量,單位為K。

語法

    iostat [options] [interval [count]]

 

參數

       -d [facility]表示,顯示設備(磁盤)使用狀態,默認監控所有的硬盤設備,可以指定某一設備,如-d sda。;

       -k某些使用block為單位的列強制使用Kilobytes為單位,默認單位塊

       -m 某些使用block為單位的列強制使用MB為單位,默認單位塊

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

[root@localhost app]# iostat -d -k 1 3  #没1秒一次 刷新3次磁盘的使用状态

Linux 3.10.0-514.el7.x86_64 (localhost.localdomain)  10/25/2017     _x86_64(1 CPU)

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

fd0               0.00         0.00         0.00          4          0

sda               0.26         4.66         7.25     746585    1161425

scd0              0.00         0.00         0.00         44          0

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

fd0               0.00         0.00         0.00          0          0

sda               0.00         0.00         0.00          0          0

scd0              0.00         0.00         0.00          0          0

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

fd0               0.00         0.00         0.00          0          0

sda               0.00         0.00         0.00          0          0

scd0              0.00         0.00         0.00          0          0

 

[root@localhost app]# iostat -d -k 1 

Linux 3.10.0-514.el7.x86_64 (localhost.localdomain)  10/25/2017     _x86_64(1 CPU)

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

fd0               0.00         0.00         0.00          4          0

sda               0.26         4.66         7.25     746585    1161490

scd0              0.00         0.00         0.00         44          0

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

fd0               0.00         0.00         0.00          0          0

sda               0.00         0.00         0.00          0          0

scd0              0.00         0.00         0.00          0          0

 

^C

[root@localhost app]# iostat -d sda 1 4

Linux 3.10.0-514.el7.x86_64 (localhost.localdomain)  10/25/2017     _x86_64(1 CPU)

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sda               0.26         4.66         7.25     746585    1161502

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sda               1.01         0.00         1.01          0          1

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sda               0.00         0.00         0.00          0          0

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sda               0.00         0.00         0.00          0          0

 

[root@localhost app]#

-x 显示和io相关的扩展数据

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

[root@localhost app]# iostat -d sda -x -k 1 1

Linux 3.10.0-514.el7.x86_64 (localhost.localdomain)  10/25/2017     _x86_64_    (1 CPU)

 

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

sda               0.02     0.11    0.12    0.14    0 4.62     7.19    90.47     0.01   26.45   11.86   38.50   2.43   0.06

 

[root@localhost ~]# iostat -x

Linux 3.10.0-327.el7.x86_64 (localhost.localdomain)  01/09/2018     _x86_64_    (8 CPU)

 

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           0.06    0.00    0.02    0.00    0.00   99.92

 

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

sda               0.00     0.00    0.00    0.19     0.20     1.72    19.47     0.00    0.42    2.51    0.36   0.37   0.01

 

[root@localhost ~]#

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

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

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

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

rKB/s:The number of read requests that were issued to the device per second,單位為K;

wKB/s:The number of write requests that were issued to the device per second,單位為K;

r/s 和 w/s 分別是每秒的讀操作和寫操作,而rKB/s 和wKB/s 列以每秒千字節為單位顯示了讀和寫的數據量 如果這兩對數據值都很高的話說明磁盤io操作是很頻繁。

avgrq-sz 平均請求扇區的大小,單位是扇區

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

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

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

svctm    表示平均每次設備I/O操作的服務時間(以毫秒為單位)。如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,如果await的值遠高於svctm的值,則表示I/O隊列等待太長,         系統上運行的應用程序將變慢。

%util: 在統計時間內所有處理IO時間,除以總共統計時間,util = (r/s+w/s) * (svctm/1000),util=(0.12+0.14)*(2.43/1000)=0.0006318,所以該參數暗示了設備的繁忙程度

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

如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。 idle小於70% IO壓力就較大了,一般讀取速度有較多的wait.

-p device | ALL

  與-x選項互斥,用於顯示塊設備及系統分區的統計信息.也可以在-p後指定一個設備名,如:

  # iostat -p hda

  或顯示所有設備

  # iostat -p ALL

-c 獲取cpu部分狀態值

-t    在輸出數據時,打印搜集數據的時間.

-V    打印版本號和幫助信息.

top 命令

    blob.png

Tasks:

total 進程總數

running 正在運行的進程數

sleeping 睡眠的進程數

stopped 停止的進程數

zombie 僵屍進程數

Cpu(s):

us 用戶空間占用CPU百分比

sy 內核空間占用CPU百分比

ni 用戶進程空間內改變過優先級的進程占用CPU百分比

id 空閑CPU百分比

wa 等待輸入輸出的CPU時間百分比

wa 的百分比可以大致的體現出當前的磁盤io請求是否頻繁。如果 wa的數量比較大,說明等待輸入輸出的的io比較多。

vmstat

        vmstat 命令報告關於線程、虛擬內存、磁盤、陷阱和 CPU 活動的統計信息。由 vmstat 命令生成的報告可以用於平衡系統負載活動。系統範圍內的這些統計信息(所有的處理器中)都計算出以百分比表示的平均值,或者計算其總和。

blob.png

Procs

 

 r: 等待運行的進程數 b: 處在非中斷睡眠狀態的進程數 w: 被交換出去的可運行的進程數。此數由 linux 計算得出,但 linux 並不耗盡交換空間

       如果發現等待的進程和處在非中斷睡眠狀態的進程數非常多,並且發送到塊設備的塊數和從塊設備接收到的塊數非常大,那就說明磁盤io比較多。

Memory

  swpd: 虛擬內存使用情況,單位:KB

  free: 空閑的內存,單位KB

  buff: 被用來做為緩存的內存數,單位:KB

Swap

  si: 從磁盤交換到內存的交換頁數量,單位:KB/秒

  so: 從內存交換到磁盤的交換頁數量,單位:KB/秒

  IO

  bi: 發送到塊設備的塊數,單位:塊/秒

  bo: 從塊設備接收到的塊數,單位:塊/秒

System

  in: 每秒的中斷數,包括時鐘中斷

  cs: 每秒的環境(上下文)切換次數

CPU

  按 CPU 的總使用百分比來顯示

  us: CPU 使用時間

  sy: CPU 系統使用時間

  id: 閑置時間

延伸阅读

评论