平时我们top查看内存使用(KiB Mem),CPU负载(load average),那个显示的是硬盘呢?
%Cpu(s): 0.5 us, 0.2 sy, 0.0 ni, 96.7 id, 2.6 wa, 0.0 hi, 0.0 si, 0.0 st
CPU的wa(wait等待)越大代表硬盘、内存读写等待时间,一般内存比硬盘读写快一个数量级,基本都是在等硬盘,所以此参数代码了读写硬盘占用的时间。
iostat
内容如下:
Linux 4.15.0-39-generic (meta) 2018年11月28日 _x86_64_ (192 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
14.82 0.42 2.11 1.00 0.00 81.66
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 5.86 82.71 34.19 59681841 24675644
sdb 117.56 13315.72 24360.58 9608928051 17579146244
sde 204.25 29266.28 23924.47 21119211024 17264441872
主要看%iowait才1%,一般超过30%系统会出现严重卡顿。
目前只有每夫硬盘的读写,没有具体的使用比例,我们加个参数x,来显示额外的信息:
iostat -x
但显示某一瞬间的信息,并不可靠,我们显示连续每秒的信息来查看
iostat -x 1
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
sde 286.00 0.00 41984.00 0.00 0.00 0.00 0.00 0.00 0.78 0.00 0.22 146.80 0.00 0.70 20.00
dm-1 286.00 0.00 41984.00 0.00 44.00 0.00 13.33 0.00 40.25 0.00 11.34 146.80 0.00 3.50 100.00
dm-2 330.00 0.00 41984.00 0.00 0.00 0.00 0.00 0.00 68.17 0.00 22.16 127.22 0.00 3.03 100.00
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。我的就是这样,两个阵列分别运行了6个宏基因组的mapping任务,已经任务明显过多。硬盘IO在排队了。
idle小于70% IO压力就较大了,一般读取速度有较多的wait.
Report virtual memory statistics
同时可以结合vmstat 查看查看b参数(等待资源的进程数)
vmstat -d可显示硬盘读写和IO情况
vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
sde 130752213 0 42359808536 886801996 17078301 0 34548674352 695411672 0 65583
dm-0 66370216 2387381 19217074465 287887528 19080834 4008437 36414704144 864322260 0 95689
dm-1 130702343 8617378 42358952673 1604942360 17127648 846529 34548674352 846300416 0 202846
压力测试
我们虚拟复制一个2G的文件测试读写速度
time dd if=/dev/zero bs=1M count=2048 of=direct_2G
048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 1.82934 s, 1.2 GB/s
real 0m1.832s
user 0m0.000s
sys 0m1.828s
如果你知道有程序在磨你的硬盘,但是你又不能确定是哪一个程序在磨你的硬盘,那么就用 iotop来帮助你吧。
此命令需要管理员权限
安装
sudo apt install iotop
运行
sudo iotop
显示你每个任务详细的硬盘读写情况,和IO使用比例。可见单个程序都要把硬盘读写占满了,果然硬盘是分析的瓶颈。
Total DISK READ : 44.32 M/s | Total DISK WRITE : 770.54 M/s
Actual DISK READ: 44.43 M/s | Actual DISK WRITE: 781.66 M/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
109502 be/4 meta 7.35 M/s 19.11 M/s 0.00 % 93.93 % kneaddata
109504 be/4 meta 8.24 M/s 21.60 M/s 0.00 % 93.29 % kneaddata
108146 be/4 root 3.56 K/s 0.00 B/s 0.00 % 91.21 % [kworker/u385:2]
https://blog.csdn.net/i_am_jojo/article/details/7698458
为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外2400+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。
学习扩增子、宏基因组科研思路和分析实战,关注“宏基因组”
点击阅读原文,跳转最新文章目录阅读
https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA