调整电梯(elevator)算法设置
ext3文件系统和ext2文件系统有一些不同,这种不同表现在多方面。高级用户可以调整文件系统和I/O系统参数来改进性能。这里主要介绍性能调试的一些基本方法。当然,所有的性能调试都需要针对特定的应用程序;这里没有适合所有状况的性能调试方法。但是,我们会尽力提供一些具有普遍意义的有用信息。
Linux 的大多数块设备驱动程序都使用了“电梯式(elevator)”算法来调度块I/O操作。我们可以使用程序/sbin/elvtune调整吞吐量(throughput)和延迟时间(latency)的值,来达到最佳效果。对于给定的负载,ext3要达到和ext2文件系统同样的效果,需要提供给/sbin/elvtune更小的延迟时间数值。
在某些情况下,希望牺牲延迟时间来换取最大吞吐量的企图,会导致吞吐量下降和延迟时间的增加(在这种情况下,/sbin/elvtune使用大的读延迟时间(-r)和写延迟时间(-w))。这种结果主要是由于以下原因:
在ext2文件系统中,每30秒调度一次写操作;而ext3文件系统每5秒就调度一次写操作。这样做是为了防止日志操作对系统吞吐量产生明显的影响,同时也保持磁盘上数据的时效性。
因为ext3文件系统记录所有元数据的变化情况,所以atime(文件最后访问时间)的变化情况对文件系统的影响更大了。如果想禁止更新atime,你可以使用noatime参数来装载(mount)文件系统。虽然,atime不是元数据更新的唯一来源,但是对很多系统,尤其是那些带有大量可访问文件,同时又被大量访问的服务器来说,元数据更新大多数都是由于atime更新。在这些系统中,关闭atime更新可以明显的降低延迟时间和提高吞吐量。
为了调试我们的缺省文件系统ext3,Red Hat已经把缺省的读和写延迟时间降低了一半(从8192读和16384写降到4096读和8192写)。我们希望在普通的应用中,你可以不需要改变这些数值。在我们的测试中,我们所提供的缺省数值已经表现出很好的效果。但是,为了适应特殊的应用程序,我们建议你基于自己的应用使用多个数值来测试系统性能。一般情况下,我们建议你把读延迟时间(-r)设置为写延迟时间(-w)的一半。
例如,你可以执行命令:/sbin/elvtune –r 1024 –w 2048 /dev/sdd 来改变设备/dev/sdd(包括/dev/sdd上的所有分区)的电梯算法设置。对一个分区的电梯算法设置的改变将会影响该分区所在的设备,因为一个设备上的所有分区共享相同的电梯算法(elevator)设置参数。
一旦你发现所设置的延迟时间和吞吐量参数,最适合自己的应用程序集,你可以把对程序/sbin/elvtune的调用命令加到文件/etc/rc.d/rc.local脚本的末尾,这样系统在每次启动时都会自动设置这些参数。
阅读(815) | 评论(0) | 转发(0) |