1. 程式人生 > 實用技巧 >硬碟實用工具

硬碟實用工具

slabtop

安裝:

yum install procps-ng

slabtop -d 5              //每5s顯示一次
選項 說明
-d n / --delay=n 設定顯示的時間間隔
-s S / --sort=S 設定排序規則。a,以活動物件數目排序;b,以每個slab物件數目排序;c,以快取大小排序;l,以slab數量排序;v,以多動的slab排序;n,以名字排序;o,以物件數目排序;p,以每slab的頁數排序;u,以快取利用率排序
-o /--once 只顯示一次,之後退出
-V / --version 顯示版本資訊,並且退出
--help 顯示幫助資訊,並且退出

sar

-r     Report memory utilization statistics.  The following values are displayed:

kbmemfree : 這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.
kbmemused : 這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.
%memused  : 這個值是kbmemused和記憶體總量(不包括swap)的一個百分比.
kbbuffers :這個值就是free命令中的buffer.
kbcached  :這個值就是free命令中的cache.
kbcommit  :保證當前系統所需要的記憶體,即為了確保不溢位而需要的記憶體(RAM+swap).
%commit   :這個值是kbcommit與記憶體總量(包括swap)的一個百分比.

可參考:https://i.cnblogs.com/posts/edit-done;postId=8945991

pidstat

使用-d選項,我們可以檢視程序IO的統計資訊:

[root@master ~]# pidstat -d 2 2
Linux 3.10.0-693.el7.x86_64 (master)    01/23/2019      _x86_64_        (8 CPU)

09:47:33 AM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
09:47:35 AM     0      1627      0.00      7.92      0.00  etcd

09:47:35 AM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
09:47:37 AM     0      1627      0.00      8.00      0.00  etcd

Average:      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
Average:        0      1627      0.00      7.96      0.00  etcd

iostat

-x     Display extended statistics.
-z     Tell iostat to omit output for any devices for which there was no activity during the sample period.

[root@localhost ~]# iostat -xz 1
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     08/29/2019      _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.05    0.00    0.11   99.81

Device:    rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvda        0.00     0.01    0.78    0.10     2.21     0.70     6.59     0.00    0.36    0.20    1.54   0.14   0.01
dm-0        0.00     0.00    0.18    0.09     0.47     0.69     8.68     0.00    0.94    0.46    1.94   0.17   0.00
dm-1        0.00     0.00    0.17    0.00     0.67     0.00     8.02     0.00    0.08    0.08    0.00   0.08   0.00
rrqm/s: 每秒對該裝置的讀請求被合併次數,檔案系統會對讀取同塊(block)的請求進行合併
wrqm/s: 每秒對該裝置的寫請求被合併次數
r/s: 每秒完成的讀次數
w/s: 每秒完成的寫次數
rkB/s: 每秒讀資料量(kB為單位)
wkB/s: 每秒寫資料量(kB為單位)
avgrq-sz:平均每次IO操作的資料量(扇區數為單位)
avgqu-sz: 平均等待處理的IO請求佇列長度,對於單個磁碟如果值>1表明裝置飽和,對於多個磁碟陣列的邏輯磁碟情況除外
await(r_await、w_await): 平均每次IO請求等待時間(包括等待時間和處理時間,毫秒為單位)
svctm:傳送給裝置 I/O 請求的平均服務時間(ms),如果 svctm 與 await 很接近,表示幾乎沒有 I/O 等待,磁碟效能很好,否則磁碟佇列等待時間較長,磁碟響應較差;
%util:裝置的使用率,表明每秒中用於 I/O 工作時間的佔比,單個磁碟當 %util>60% 的時候效能就會下降(體現在 await 也會增加),當接近100%時候就裝置飽和了,但對於有多個磁碟陣列的邏輯磁碟情況除外;
還有,雖然監測到的磁碟效能比較差,但是不一定會對應用程式的響應造成影響,核心通常使用 I/O asynchronously 技術,使用讀寫快取技術來改善效能,不過這又跟上面的實體記憶體的限制相制約了。

iotop

yum install iotop -y


iotp 拿到的是 TID,我們要轉成 PID,可以通過 readlinklai 找到 PID

readlink -f /proc/*/task/tid/../..

# 找到 PID 之後就可以看這個程序具體的讀寫情況
cat /proc/pid/io

# 還可以通過 lsof 命令來確定具體的檔案讀寫情況
lsof -p pid