探索系统中大量使用的文件

时间:2014-09-09 06:17:33

标签: performance ubuntu file-io load

我正在使用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

3 个答案:

答案 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创建了这张照片“快速浏览许多工具......”:

Brendan D. Gregg about linux performance and tracing

答案 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)

来自https://dba.stackexchange.com/questions/21209/innodb-high-disk-write-i-o-on-ibdata1-file-and-ib-logfile0

请注意,默认情况下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中繁忙的机制。

相关问题