我专注于MySQL InnoDB日志文件(ib_logfile0,ib_logfile0)HDD - sda
。并且atopsar显示此硬盘负载
atopsar -d 60
:
13:02:10 disk busy read/s KB/read writ/s KB/writ avque avserv _dsk 13:03:10 sda 59% 4.4 4.0 45.3 6.2 1.0 11.88 ms 13:04:10 sda 60% 4.5 4.0 45.6 6.1 1.0 11.98 ms 13:05:10 sda 58% 4.2 4.0 44.7 6.0 1.0 11.94 ms
dstat -tdD total,sda 60
:
----system---- -dsk/total----dsk/sda-- time | read writ: read writ 24-09 13:11:24| 23k 912k:9689B 391k 24-09 13:12:24| 33k 971k: 16k 270k 24-09 13:13:24| 16k 893k: 14k 235k 24-09 13:14:24| 18k 963k: 16k 254k
pt-ioprofile -cell sizes
:
total pread read pwrite write fsync open close lseek fcntl filename 905728 0 0 905728 0 0 0 0 0 0 /var/mysqllog/mysql/ib_logfile0
每秒200-400Kb似乎没有显示繁忙> 50%。特别考虑到HDD上的唯一文件是MySQL InnoDB日志文件和(来自InnoDB blog)。:
重做日志文件以循环方式使用。这意味着重做日志是从第一个重做日志文件的开头到结尾写入的,然后继续写入下一个日志文件,依此类推,直到它到达最后一个重做日志文件。写入最后一个重做日志文件后,将再次从第一个重做日志文件写入重做日志。
所以问题是为什么负载如此之大,是否真的是HDD的物理能力?
似乎是计算负载(所有请求,读取+写入)* avserv / 1000。对于第一个atopsar线计算如下:(4.4 + 45.3)* 11.88 / 1000 = 0.59