我有一个6磁盘RAID 10的linux数据库(MySQL)服务器(戴尔2950),默认的IO调度程序是CFQ。然而,据我所读和听到的,当底层RAID控制器也进行重新排序/调度时,不需要像CFQ这样的调度程序;相反,由于它没有考虑到底层RAID配置,性能实际上可能会随着CFQ而下降。主要关注的是减少CPU使用和提高吞吐量。此外,我还看到了对数据库使用noop/deadline IO调度器的建议,主要是因为数据库的R/W访问的性质。
因此,问题是在这种情况下是否应该使用noop或截止日期调度程序而不是CFQ。
发布于 2010-04-16 14:31:05
每个工作量都是不同的。因此,对于这个问题,没有一个合适的答案。为了使事情变得更复杂,大多数IO调度程序都具有可调性。因此,您能做的最好的事情就是尽可能接近实际的工作负载基准测试。只要您的测试是可重复的,它就应该有效。
您可以在不重新启动的情况下动态更改IO调度程序,这使得使用io调度程序的实验变得很容易。要做到这一点,请使用像这个echo anticipatory | sudo tee /sys/block/sdb/queue/scheduler这样的命令,用选择的调度器替换预期,用正确的块设备替换sdb。如果您以root用户身份登录,也可以执行echo anticipatory > /sys/block/sdb/queue/scheduler。我使用发球的方法,这样我就可以使用sudo了。
和minaev一样,我对繁忙文件服务器的截止日期也很幸运。我们没有任何数据库,因为它主要是一个计算集群的图像处理。但他们将饱和2 GigE链接,并加载该服务器48小时一次。
在处理外部RAID数组时,我也使用了NOOP。我所说的外部的意思是RAID控制器是自我包含在外部底盘中的,而服务器只是把它看作SCSI驱动器。如果RAID控制器在服务器中,那么我认为您仍然希望避免NOOP。但是,你应该能够找出什么最适合你,通过一些基准。
发布于 2010-04-16 14:07:54
不确定它是否有用,但这里有一篇来自红帽杂志的有趣文章:为红帽企业Linux4和2.6内核选择I/O Scheduler。我通常将调度程序设置为截止日期,它在我的服务器上正常工作,但我必须承认,我没有任何数字可以证明截止日期确实更好。
https://serverfault.com/questions/133029
复制相似问题