我正在使用ubuntu Ubuntu 14.04.1 LTS
atopsar -d 30
- 表明系统中的一个硬盘驱动器(sda)被大量使用。这个硬盘只提供mysql数据库。最常用的DB,通过符号链接重定位到另一个硬盘驱动器(sdb,sdd)。现在atopsar
显示sda
的负载几乎相同,其他硬盘驱动器的负载低于5%。
有没有办法知道哪些文件在HDD上大量使用?
可能是mysql InnoDB日志文件(ib_logfile)是碎片化的吗?因此atopsar
显示出如此大的负荷(50%-70%)。在那种情况下可以做些什么?
atopsar -d 30
有一些输出:
08:52:47 disk busy read/s KB/read writ/s KB/writ avque avserv _dsk_
08:53:17 sda 63% 0.0 0.0 50.2 14.6 1.1 12.57 ms
sdb 5% 0.0 0.0 9.4 19.8 4.2 5.81 ms
sdd 2% 0.0 0.0 3.7 18.9 1.4 5.82 ms
08:53:47 sda 60% 0.0 16.0 48.1 15.7 1.0 12.55 ms
sdb 5% 0.0 0.0 6.9 17.5 4.6 7.35 ms
sdd 2% 0.0 0.0 4.7 24.9 1.4 4.06 ms
08:54:17 sda 38% 0.5 16.0 30.6 15.6 1.2 12.25 ms
sdb 3% 0.0 0.0 5.6 18.3 3.3 5.50 ms
sdd 2% 0.0 0.0 3.3 19.2 1.1 4.86 ms
08:54:47 sda 53% 0.0 0.0 42.5 16.5 1.1 12.37 ms
sdb 6% 0.0 0.0 8.7 21.0 5.8 6.37 ms
sdd 2% 0.0 0.0 3.1 23.1 1.3 5.68 ms
08:55:17 sda 51% 0.0 4.0 42.7 16.9 1.1 11.94 ms
sdb 5% 0.0 0.0 9.4 20.5 5.0 5.51 ms
sdd 1% 0.0 0.0 1.5 17.6 1.1 7.73 ms
08:55:47 sda 52% 0.0 0.0 40.6 14.5 1.0 12.85 ms
sdb 5% 0.0 0.0 6.8 19.5 5.4 6.66 ms
sdd 2% 0.0 0.0 4.3 31.3 1.3 4.78 ms
答案 0 :(得分:6)
有sysdig
工具可让您查看系统级活动,就像strace
对单个流程所做的那样:http://www.sysdig.org/
磁盘使用信息有一些示例:https://github.com/draios/sysdig/wiki/Sysdig%20Examples#disk-io
根据磁盘带宽使用情况查看顶级流程
sysdig -c topprocs_file
根据读取+写入字节查看顶部文件
sysdig -c topfiles_bytes
打印apache已读取或写入的顶级文件
sysdig -c topfiles_bytes proc.name=httpd
根据R + W磁盘活动查看顶级目录
sysdig -c fdbytes_by fd.directory "fd.type=file"
在/ tmp目录中查看R + W磁盘活动方面的顶级文件 sysdig -c fdbytes_by fd.filename“fd.directory = / tmp /”
观察名为'passwd'
的所有文件的I / O活动
sysdig -A -c echo_fds "fd.filename=passwd"
Sysdig是现代便捷的工具。对于较旧的Linux,可以使用SystemTap获取类似信息:http://lukas.zapletalovi.com/2014/05/systemtap-as-a-system-wide-strace-tool.html
PS感谢habrahabr.ru关于Sysdig http://habrahabr.ru/company/selectel/blog/222839/
的这篇文章PPS Brendan D. Gregg为他的Linux Performance page创建了这张照片“快速浏览许多工具......”:
答案 1 :(得分:3)
要查找系统中使用最频繁的文件,请使用:sudo pt-ioprofile -cell sizes
输出示例:
total pread read pwrite fsync lseek filename 10862592 0 0 10862592 0 0 /var/mysqldata/mysql/ibdata1 827392 0 0 827392 0 0 /var/mysqllog/mysql/ib_logfile0 ... (other trivial I/O records truncated)
请注意,默认情况下Percona工具包仅附加到mysqld。要找出最常用的文件,您必须将其运行到可能产生此类负载的所有进程。在我的情况下,我确信它是mysql服务器,所以对我来说已经足够了。
请在使用前阅读http://www.percona.com/doc/percona-toolkit/2.0/pt-ioprofile.html。
答案 2 :(得分:1)
尝试使用
进行调查dstat --top-bio
它将为您提供使用大部分IO的进程。 在linux中你有/ proc / diskstats - 它只提供块设备级别的统计信息。 我从未见过确定哪个文件在linux中繁忙的机制。