Linux:如何确定应用程序正在执行顺序还是随机磁盘 I/O?

Linux:如何确定应用程序正在执行顺序还是随机磁盘 I/O?

每个人都知道数据库往往会执行大量小型随机 I/O,而 Kafka 等大数据则倾向于执行大型顺序 I/O,但如果我以系统管理员的身份处理这个问题,而不做任何假设,我如何确定正在运行的应用程序在我的系统上做什么,或者我的系统是否在观察?如果不知道应用程序是如何编写的,我如何确定它是否主要在做顺序的或者随机的I/O,从而使我更容易选择正确类型的磁盘等进行部署?

我可以使用iostat获取每个 IOP 的平均请求大小 (avgrq-rz) 和 IOPS 数量 (r/s + w/s)。如何确定这些是否大多顺序的或者随机的

答案1

是的,实际上您可以使用几个工具来监控这一点。例如您提到的 iotop 和 iostat 命令。

根据您的发行版,您可以使用以下任一方法安装 iotop:

$ sudo apt-get 安装 iotop或者

$ yum 安装 iotop

运行:root@tomcat-1-vm:/# iotop(查看正在运行的磁盘 I/O 进程列表)

总磁盘读取量 : 0.00 B/s | 总磁盘写入量 : 0.00 B/s
实际磁盘读取:0.00 B/s | 实际磁盘写入:0.00 B/s
  TID PRIO 用户磁盘读取磁盘写入 SWAPIN IO> 命令                                                                                  
24576 be/4 www-data 0.00 B/s 0.00 B/s 0.00 % 0.00 % apache2 -k 启动
    1 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % 初始化
    2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
    3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
24580 be/4 www-data 0.00 B/s 0.00 B/s 0.00 % 0.00 % apache2 -k 启动
    5 be/0 根 0.00 B/秒 0.00 B/秒 0.00 % 0.00 % [kworker/0:0H]
    6 be/4 根 0.00 B/秒 0.00 B/秒 0.00 % 0.00 % [kworker/u2:0]
    7 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched]
    8 be/4 根 0.00 B/秒 0.00 B/秒 0.00 % 0.00 % [rcu_bh]
    9 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [迁移/0]
   10 be/0 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [lru-添加-排水]
   11 rt/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [看门狗/0]
   12 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [cpuhp/0]
   13 be/4 根 0.00 B/秒 0.00 B/秒 0.00 % 0.00 % [kdevtmpfs]
   14 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [netns]
   15 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khungtaskd]

您也可以通过传递 o 短语来显示 I/O 活动

例如:root@tomcat-1-vm:/# iotop -o

总磁盘读取速度:0.00 B/s | 总磁盘写入速度:11.91 K/s
实际磁盘读取:0.00 B/s | 实际磁盘写入:11.91 K/s
  TID PRIO 用户磁盘读取磁盘写入 SWAPIN IO> 命令                                                            
  835 be/4 tomcat8 0.00 B/s 7.94 K/s 0.00 % 0.00 % java -Djava.util.logging.config.fi~he.catalina.startup.Bootstrap 启动
 1371 be/4 tomcat8 0.00 B/s 3.97 K/s 0.00 % 0.00 % java -Djava.util.logging.config.fi~he.catalina.startup.Bootstrap 启动

要了解有关磁盘 I/O 输出的更多信息,您可以查看proc 文件系统页面

同样,根据发行版的不同,您可以按如下方式安装 iostat:

$ sudo apt-get 安装 sysstat或者

$ yum 安装 sysstat

运行:root@tomcat-1-vm:/# iostat -dx 5

Linux 4.9.0-6-amd64 (tomcat-1-vm) 2018 年 5 月 29 日 _x86_64_ (1 CPU)

设备:rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
平均日均线 0.00 0.22 0.01 0.31 0.31 3.67 24.34 0.00 12.56 8.50 12.73 4.04 0.13

设备:rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

设备:rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
平均日均线 0.00 0.40 0.00 0.40 0.00 3.21 16.00 0.01 18.00 0.00 18.00 18.00 0.72

设备:rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 25.30 0.00 5546.18 438.41 4.38 173.17 0.00 173.17 3.14 7.95

设备:rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 2.81 0.00 0.40 0.00 12.83 64.00 0.00 0.00 0.00 0.00 0.00 0.00

设备:rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
平均日均线 0.00 1.20 0.00 4.21 0.00 21.64 10.29 0.03 7.24 0.00 7.24 0.38 0.16

您也可以参考以下内容iostat 示例帖子您可以包含更多报告的选项。

另一个可用的命令是 dstat。

例如:root@tomcat-1-vm:/# sudo apt-get install dstat

root@tomcat-1-vm:/# dstat -tdD 总计,sda,sdb,sdc,md1 60
----系统---- -dsk/总----dsk/sda--
     时间 | 读出:读出
29-05 23:58:15| 318B 3797B: 318B 3797B
29-05 23:59:15| 0 473千:0 473千
29-05

相关内容