一、Linux查看IO速度
Linux可以通過`dd`命令來測試磁碟IO的速度,例如測試磁碟寫入速度,執行以下命令:
dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
這裡會將/dev/zero設備中的數據寫入到test文件中,其中`bs`是塊大小,`count`是塊數,`conv`是數據處理方式,`fdatasync`表示將數據同步到磁碟。執行後會看到如下輸出信息:
16384+0 records in 16384+0 records out 1073741824 bytes (1.1 GB) copied, 11.3468 s, 94.6 MB/s
其中`MB/s`表示磁碟寫入速度,此處為94.6MB/s。
二、Linux查看磁碟IO命令
Linux中有多個命令可以查看磁碟IO情況,其中比較常用的有`iostat`、`iotop`和`dstat`。這裡簡單介紹一下這幾個命令。
(1)iostat
iostat -x 1
-iostat命令可以查看磁碟IO使用情況,其中`-x`參數表示顯示更詳細的信息。執行後會顯示如下信息:
avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.01 0.01 0.00 99.99 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.03 0.00 0.04 0.01 1.65 62.33 968.10 0.00 1.71 0.73 0.00
其中比較重要的是`%iowait`和`%util`,前者表示IO等待時間的佔用率,後者表示磁碟的IO使用率。此處`%iowait`為0.01%、`%util`為0%,磁碟的使用情況比較輕。
(2)iotop
iotop
iotop可以實時地查看IO的情況,並且可以根據IO情況進行排序。執行後會顯示如下信息:
Total DISK READ : 20.32 K/s | Total DISK WRITE : 13.39 K/s Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND 57124 be/4 root 0.00 B 24.00 K 0.00 % 0.00 % tumblerd 57689 be/4 test 4.00 K 8.00 K 0.00 % 0.00 % bash
其中顯示了進程的IO情況,包括進程的ID、用戶、讀寫速度等。
(3)dstat
dstat -d
dstat可以給出當前系統的各種狀態信息,其中`-d`參數表示只顯示磁碟相關的信息。執行後會顯示如下信息:
---dsk/sda---- -dsk/sdb-- -dsk/sdc-- -dsk/sdd-- read writ| read writ| read writ| read writ 34M 0 | 44k 0 | 0 0 | 0 0
其中顯示了各個磁碟的讀寫速度情況。
三、Linux查看IO使用情況
Linux可以通過`iostat`命令查看系統的IO使用情況,其中包括磁碟、CPU等方面的信息。如果想要查看某個進程的IO使用情況,可以使用`pidstat`命令。例如想要查看進程ID為1111的進程的IO使用情況,執行以下命令:
pidstat -d 1 1111
其中`-d`參數表示顯示磁碟使用情況,`1`表示每秒更新一次,`1111`表示進程的ID。執行後會顯示如下信息:
Linux 3.10.0-693.11.6.el7.x86_64 (localhost) 08/13/18 _x86_64_ (8 CPU) # Time UID PID kB_rd/s kB_wr/s kB_ccwr/s Command 09:58:43 1000 1111 0.00 32.00 0.00 java 09:58:44 1000 1111 0.00 128.00 0.00 java
其中顯示了進程的ID、磁碟的讀寫速度等信息。
四、Linux查看IO阻塞
Linux可以通過`iostat`命令查看磁碟IO的阻塞情況。例如想要查看磁碟的IO阻塞情況,執行以下命令:
iostat -xz 1
其中`-x`參數表示顯示更詳細的信息,`-z`參數表示將等待時間作為磁碟使用情況的一項。執行後會顯示如下信息:
avg-cpu: %user %nice %system %iowait %steal %idle 0.01 0.00 0.02 0.01 0.00 99.96 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.16 0.00 0.17 0.03 3.28 71.00 1088.82 0.01 34.22 1.30 0.03
其中`%iowait`表示IO等待時間的佔用率,此處為0.01%。如果`%iowait`一直比較高,說明可能存在IO阻塞情況。
五、Linux查看IO情況
Linux可以通過命令`iostat`來查看IO情況,該命令可以顯示設備的IO統計信息。例如想要查看設備sda的IO情況,執行以下命令:
iostat -x 1 sda
其中`-x`參數表示顯示更詳細的信息,`1`表示每秒更新一次,`sda`表示要監控的設備名稱。執行後會顯示如下信息:
avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 0.02 0.00 99.98 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.00 0.01 0.00 0.11 0.00 7.12 0.00 3.19 0.20 0.00
其中顯示了設備的IO情況,包括讀寫速率、等待時間、使用率等信息。如果發現設備的IO使用率比較高,說明設備正在被佔用,需要排查一下原因。
六、Linux查看IO佔用率
Linux可以通過命令`iostat`來查看IO的佔用率,該命令可以顯示設備的IO統計信息。例如想要查看設備sda的IO佔用率,執行以下命令:
iostat -d 1 sda | awk '/sda/ {print $14}'
其中`-d`參數表示只顯示磁碟相關的信息,`1`表示每秒更新一次,`sda`表示要監控的設備名稱。執行後會顯示當前設備的IO使用率。
七、Linux查看IO性能
Linux可以通過命令`fio`來測試磁碟的IO性能,該命令可以模擬多種IO負載場景,例如順序讀寫、隨機讀寫等等。例如模擬4K隨機讀寫負載,執行以下命令:
fio --name=randwrite --ioengine=sync --rw=randwrite --bs=4k --numjobs=16 --size=1g --runtime=300s --time_based
其中`–name`表示任務名稱,`–ioengine`表示IO引擎,`–rw`表示讀寫方式,`–bs`表示塊大小,`–numjobs`表示線程數,`–size`表示數據量,`–runtime`表示運行時間,`–time_based`表示按時間運行而不是按次數運行。執行後會顯示測試結果。
八、Linux查看IO命令
Linux可以通過命令`iostat`、`iotop`、`dstat`等來查看IO情況,同時也可以通過命令`fio`來測試IO性能。這裡再列舉幾個命令:
(1)`cat /proc/diskstats`:查看各個磁碟的統計信息;
(2)`sar -d`:查看磁碟IO使用情況;
(3)`lsof -c `:查看指定進程的打開的文件列表,其中也包含進行讀寫的文件;
(4)`strace -e trace=file `:查看命令執行時涉及到的文件IO操作。
九、Linux查看IO讀寫情況
Linux可以通過命令`iotop`來查看IO讀寫情況,該命令可以實時地顯示進程的IO情況,並且可以按照IO讀寫速度排序。例如執行以下命令:
iotop -a
其中`-a`參數表示顯示所有進程的IO情況,不僅僅是當前用戶的進程。執行後會按照IO讀寫速度進行排序並實時顯示進程的IO情況。
十、Linux查看IO負載情況
Linux可以通過命令`pidstat`來查看進程的IO負載情況,該命令可以顯示進程在不同狀態下的CPU、內存、IO等資源的使用情況。例如想要查看進程ID為1111的進程的IO負載情況,執行以下命令:
pidstat -d 1 1111
其中`-d`參數表示顯示磁碟使用情況,`1`表示每秒更新一次,`1111`表示進程的ID。執行後會顯示如下信息:
Linux 3.10.0-693.11.原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/186404.html