您的位置:

Linux查看IO

一、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.