是否有一个好的命令行实用程序来监视Linux上的硬盘负载?类似于top,但是随后监视磁盘活动。 cpu使用情况。

更具体地说,我怀疑对于某些(重负载)服务器,在对运行在其上的程序的各个部分进行了几次优化之后,现在的瓶颈仅仅是登录到磁盘上的文件。但是我发现很难评估服务器可以处理的流量。

我的理想工具是打印“您现在正在使用35%的磁盘带宽”的工具。有什么想法吗?

评论

完美的问题,正是我在寻找=)

可以直接读取sysfs,例如/ sys / block / sda / stat。字段#1给出读取总数,字段#5是写入总数,字段#9是正在进行的I / O操作数。请参阅kernel.org/doc/Documentation/iostats.txt中的更多内容。这些值的长度是无符号的,并且可以包装。

这是一个非常好的问题,因为我们一直在Plesk服务器上与这个问题作斗争。但是,缺少的是如何使用SNMP?登录并检查内容是可以的,但是确实需要历史数据。

unix.stackexchange.com/questions/55212/…

#1 楼

您可以使用iostat工具对此进行很好的测量。

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64


磁盘利用率在最后一栏中列出。定义为


向设备发出I / O请求的CPU时间百分比(设备的带宽利用率)。当该值接近100%时,发生设备饱和。


评论


如果有的话,它驻留在Debian中的哪个软件包中? apt-cache dump没有为iostat启用任何功能

– hBy2Py
2015年1月25日,1:15

@Brian:它在sysstat包中(无论如何都通过yum ...)

–乔
15年4月29日在22:01



在RHEL 6.5上找不到此。这可用于RHEL吗?

– az
2015年12月10日,下午2:26

这项工作无需延迟就可以进行吗?尝试运行单个实例以从中获取数据可能获得了相同的数量,因为它无法进行采样???

–野生
17年7月3日在18:56

@Hazok它是RHEL 6.5上sysstat RPM的一部分。

–一般
17年7月26日在16:26

#2 楼

iotop是top的一个版本,用于查看每个进程正在使用的IO。在标准的ubuntu仓库中;我不知道它是否在RHEL或Fedora中,但是应该在。



对于较旧的内核(例如CentOS 5.x或RHEL 5.x),不支持iotop,请改用topio(在此处记录:http://yong321.freeshell.org/freeware/pio.html#linux。它依靠/ proc // io进行io统计,并提供与iotop类似的功能。请参阅链接。有关更多详细信息。

评论


确实,Ubuntu默认未安装它,因此可能会出现以下问题:sudo apt-get install iotop来获取它

– Moshe
09年5月18日在15:05

iotop要求内核高于2.6.20,不幸的是,该内核排除了RedHat el4和el5。

–戴夫·切尼
09年5月19日在1:58

从RedHat 5.4开始,使iotop工作所需的位已被反向移植。请享用!

–戴夫·切尼
2010-2-22在8:27

它在Fedora中:)。

–杰米
17年9月5日14:38在

#3 楼

正如sastanin在评论中建议的那样,您可以直接处理/sys/block/sda/stat/proc/diskstats中给出的值。当没有其他提到的工具可用且您无法轻松安装它们时,这可能会有所帮助。

例如(IIUC)这样的内容(以bash表示)应提供每秒的读取次数:

OLD=`awk '{print }' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print }' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done


请参阅https://www.kernel.org/doc/Documentation/iostats.txt和https://www.kernel.org/doc/Documentation /block/stat.txt以获取文档。

#4 楼

您应该先看看atop,它将iotop / top / iftop的功能全部集中在一个地方,并突出显示系统上的关键部分。

#5 楼

我建议您看一下nmon工具。它将向您显示许多系统参数的实时负载,以及将数据记录到文件中以供日后阅读。它是这里提供的免费工具:

#6 楼

找出总带宽是多少,您可以使用
hdparm -T /dev/sda测试缓冲区高速缓存(fileio)性能
hdparm -t /dev/sda测试设备读取性能

示例:我的笔记本电脑获得82MB每秒从SATA磁盘/秒和高速缓存2GB /秒。
我的dekstop从高速缓存中获得12GB /秒,从HW RAID阵列获得500MB /秒。
我怀疑最后一个数字可能会翻倍服务器级硬件。

将预读设置为大于256,最适合4096对我来说

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  


在不同的块大小和不同的读取时间读取1GB -aheads

评论


欢迎来到顺丰。您可以在帖子中使用高亮显示代码,方法是在字符串两边加上反引号或缩进段落。

–ℝaphink
2012年2月22日10:00

两件事-1)--setra现在是-a,以及2),根据strace,hdparm-{T,t}命令仅发出磁盘读取,因此是非破坏性的。 (有关互联网建议的标准免责声明适用)

– i336_
16年5月30日在10:29

#7 楼

用于显示硬盘负载的标准工具是iostat

它不会告诉您正在使用的磁盘空间百分比百分比,因为它不知道磁盘有多少带宽。无论如何,对于大批量连续数据传输,磁盘仅具有制造商报价的数字。

#8 楼

我认为RRDtool应该在这里执行您想要的操作,它使用守护程序来转储系统数据,然后允许您随意处理它。我经常用它来生成图形等以测量系统负载。

#9 楼

htop是检查过程信息的好工具。您可以添加或删除列,其中包括进程的读写速度。