Linux文件系统性能优化

发表于:2012-7-25 10:03

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:刘爱贵    来源:51Testing软件测试网采编

  由于各种的I/O负载情形各异,Linux系统中文件系统的缺省配置一般来说都比较中庸,强调普遍适用性。然而在特定应用下,这种配置往往在I/O性能方面不能达到最优。因此,如果应用对I/O性能要求较高,除了采用性能更高的硬件(如磁盘、HBA卡、CPU、MEM等)外,我们还可以通过对文件系统进行性能调优,来获得更高的I/O性能提升。总的来说,主要可以从三个方面来做工作

  1、Disk相关参数调优

  2、文件系统本身参数调优

  3、文件系统挂载(mount)参数调优

  当然,负载情况不同,需要结合理论分析与充分的测试和实验来得到合理的参数。下面以SAS(Serial attached SCSI)磁盘上的EXT3文件系统为例,给出Linux文件系统性能优化的一般方法。请根据自身情况作适合调整,不要生搬硬套。

  1、Disk相关参数

  1.1 Cache mode:启用WCE=1(Write Cache Enable), RCD=0(Read Cache Disable)模式

  sdparm -s WCE=1, RCD=0 -S /dev/sdb

  1.2 Linux I/O scheduler算法

  经过实验,在重负载情形下,deadline调度方式对squidI/O负载具有更好的性能表现。其他三种为noop(fifo), as, cfq,noop多用于SAN/RAID存储系统,as多用于大文件顺序读写,

  cfq适于桌面应用。

  echo deadline > /sys/block/sdb/queue/scheduler

  1.3 deadline调度参数

  对于redhat linux建议 read_expire = 1/2 write_expire,对于大量频繁的小文件I/O负载,应当这两者取较小值。更合适的值,需要通过实验测试得到。

  echo 500 > /sys/block/sdb/queue/iosched/read_expire

  echo 1000 > /sys/block/sdb/queue/iosched/write_expire

  1.4 readahead 预读扇区数

  预读是提高磁盘性能的有效手段,目前对顺序读比较有效,主要利用数据的局部性特点。比如在我的系统上,通过实验设置通读256块扇区性能较优。

  blockdev --setra 256 /dev/sdb

  2、EXT3文件系统参数

  2.1 block size = 4096 (4KB)

  mkfs.ext3 -b指定,大的数据块会浪费一定空间,但会提升I/O性能。EXT3文件系统块大小可以为1KB、2KB、4KB。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号