每个人都知道数据库往往会执行大量小型随机 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