标题: Linux 性能调优的方法 [打印本页] 作者: brain2007 时间: 2009-08-07 16:47 标题: Linux 性能调优的方法
本篇将继续讲述 Linux 性能调优的方法 7 文件系统的调优
总体而言,所有数据都要从磁盘获取并都要保存到磁盘。磁盘访问速度通常以毫秒来计算,比其它组件要慢上千倍(如内存、PCI 操作是以纳秒或者微秒来计算的)。Linux 文件系统定义了数据存储和访问的方式。
Linux 可用的文件系统有多种,它们的性能和可扩展性各不相同。除了保存和管理磁盘数据,文件系统还负责保证数据的完整性。新版的 Linux 缺省安装已经包括日志文件系统(journaling file systems),日志文件系统可防止系统崩溃时导致的数据不一致问题。对文件系统元数据(metadata)的更改都被保存在一份单独的日志里,当发生系统崩溃时可以根据日志正确地恢复数据。除此之外,日志使系统重新启动时不必进行文件系统的检查,从而缩短了恢复时间。
同其他方面的计算一样,性能和完整性是相互平衡的。然而,因 Linux 服务器多用于企业环境及数据中心,因此要求具备更高的可用性。
这里,我们将介绍 Red Hat Enterprise Linux AS和 SUSE LINUX Enterprise Server 的文件系统及其性能调优。
7.1 安装 x 的发行版本对 CPU、硬盘和内存方面均有明确的安装要求。然而,对于如何设置磁盘子系统的说明远远不够。由于 Linux 服务器被广泛的应用于各种环境,数据中心的服务器整合,我们首先要回答的问题就是:“该服务器的功能是什么?”
磁盘子系统可能是整个服务器系统性能的主要方面。了解服务器的功能是判断I/O 子系统对性能产生多大影响的关键。
另外,许多第三方厂家兼容 Ext3 file systems,如 PartitionMagic。 7.3 ReiserFS:SUSE LINUX 的缺省文件系统
从SUSE LINUX 7.1 开始,缺省安装的文件系统即为由 Hans Reiser 开发的ResierFS。在其设计之初便包括如下性能方面的考虑 From its initial design, key performance
aspects have included:
日志文件系统(Journaling)的设计提高了可靠性和恢复速度。
使用平衡树数据结构可以同时存储内容数据和安全元数据,使其获得更快的访问速度。
有效地利用磁盘空间,与其他文件系统不同,ResierFS 不依赖于数据块的大小。Efficient use of disk space because, unlike other file systems, this file system
does not rely on block sizes.
目前 SUSE LINUX Enterprise Server 8 的 ReiserFS 为 V3.6,下一代文件系统是 Reiser4。Reiser4 提供的是不间断的文件系统,通过实现“atomic”文件系统避免系统崩溃,保证完成 I/O 操作;使用新的访问算法来获取2到5倍的性能提高。
提示:Red Hat Enterprise Linux AS 不支持 ReiserFS 7.4 通过 Linux kernel 对文件系统调优
缺省文件系统的设置或许适合大多数应用环境。尽管如此,我们还是提供了如下几个提高磁盘性能的方法: 访问时间更新
linux 文件系统当文件被访问,创建,更新的时候会保留纪录。默认的,当文件读写操作的时候,系统会更新 last-time-read 属性。因为写操作是比较耗费资源的操作减少不必要的 i/o 可以整体上提高磁盘性能。
在挂接文件系统的时候,加入 noatime 参数可以禁止 inode 节点访问时间的修改。如果文件更新时间对于特定的应用不是很重要的话,比如 web 服务,就可以把 noatime 参数加入 /etc/fstab 文件中。
比如:
/dev/sdb1 /mountlocation ext3 defaults,noatime 1 2
推荐利用单独的分区作为挂接点并打开 noatime 开关 Tuning the elevator algorithm(调整阶梯算法)
磁盘 I/O 阶梯算法产生于 V2.4 kernel。它是通过控制 I/O 请求获得服务前在队列中等待时间,来调整块 I/O 的运算法则。
这是由调整阶梯算法的读写值实现的。通过增加延迟(更大的读、写值),I/O 请求在队列中等待更长时间,给 I/O scheduler更好地完成 I/O 操作,改进性能。
对应用于大量磁盘 I/O 的 Linux 服务器,要在吞吐量和延迟方面找到一个合理的平衡点。Linux文件系统使用块设备,因此改进块读写的频率可以改进文件系统的性能。一个准则是,小缓存、平横的长延迟读写有利于大量磁盘I/O的 Linux 服务器。阶梯算法的调整是一个交互的过程,首先要获得基准性能曲线然后改动设置,观察效果。Example 10-1 给出了如何用/sbin/elvtune 命令显示当前设置以及如何改动读写队列的数值。
提示:Red Hat 建议您将读延迟(-r)调整为写延迟(-w)的一半。
做过改动之后,确保 /sbin/elvtune call 被加到 /etc/rc.d/rc.local(Red Hat)或者 /etc/init.d/boot.local(SUSE LINUX)中,使设置在系统重新启动后生效。
redhat 推荐调整升降算法来让读延迟是写延迟的一半
注意:2.6 核心的 linux 指出elvtune 命令已经作废,取而代之的是调整/sys/block 结构 选择 Ext3 文件系统的日志模式
Ext3文件系统可选三种日志模式,使用 mount 命令来完成: