辨别服务器硬盘,科学网—查看服务器硬盘负载——判断硬盘是否为瓶颈 - 刘永鑫的博文...

top

平时我们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

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 1Device            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.

vmstat

Report virtual memory statistics

同时可以结合vmstat 查看查看b参数(等待资源的进程数)

vmstat -d可显示硬盘读写和IO情况vmstat -ddisk- ------------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_2G048+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

如果你知道有程序在磨你的硬盘,但是你又不能确定是哪一个程序在磨你的硬盘,那么就用 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]

参考文献

猜你喜欢

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外2400+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。

7bc52bb07b08e5e9b742c8f28088edc7.png

学习扩增子、宏基因组科研思路和分析实战,关注“宏基因组”