Linux文件系统性能优化

上一篇 / 下一篇  2012-07-26 09:33:15 / 个人分类:Linux

51Testing软件测试网3c"G/}p#K%T G#_Q

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

LW.[k#?Q2Z&F051Testing软件测试网L[ }3| O;|

  1、Disk相关参数调优51Testing软件测试网 M `U2m:s

#v ^t4~BS$[0  2、文件系统本身参数调优

N+["@R}/u i051Testing软件测试网([i!o\p)]Q

  3、文件系统挂载(mount)参数调优51Testing软件测试网XT(OO1K0e;t Y

!zi W,k,s.{4~'T[0  当然,负载情况不同,需要结合理论分析与充分的测试和实验来得到合理的参数。下面以SAS(Serial attached SCSI)磁盘上的EXT3文件系统为例,给出Linux文件系统性能优化的一般方法。请根据自身情况作适合调整,不要生搬硬套。51Testing软件测试网v!N;zH2|I.ip*{'h

51Testing软件测试网\4F1W(z#r:i!F

  1、Disk相关参数

'ldU.y ]k9UE051Testing软件测试网M~m]9['dVg$i;X

  1.1 Cache mode:启用WCE=1(Write Cache Enable), RCD=0(Read Cache Disable)模式51Testing软件测试网/x7j!Y9ltE'zu!O

A@9{2C8T"kY&bc0  sdparm -s WCE=1, RCD=0 -S /dev/sdb

9gMp N+Z0

xq-Dtw$?wmhA0  1.2 Linux I/O scheduler算法

hNh\u+l {9o%h051Testing软件测试网|/jG Va

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

0|0aW|+v s_6I051Testing软件测试网*H%sp{3NyB6x

  cfq适于桌面应用。

ev:j#r"Yd;D051Testing软件测试网#a tCa@

  echo deadline > /sys/block/sdb/queue/scheduler51Testing软件测试网i3On)A0~l |

51Testing软件测试网7u;Dc6]pI&P

  1.3 deadline调度参数51Testing软件测试网+Xy@9h`.p%s

51Testing软件测试网/~+Ym/F^|-Q

  对于redhat linux建议 read_expire = 1/2 write_expire,对于大量频繁的小文件I/O负载,应当这两者取较小值。更合适的值,需要通过实验测试得到。51Testing软件测试网 ]g:`-}Lm)C Iw

51Testing软件测试网Pj MM o}3|"^N9Ph

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

t[ Q!|vW CLa'I9J0

(A(r2k%lV0  echo 1000 > /sys/block/sdb/queue/iosched/write_expire51Testing软件测试网yT"I[)O+LZAC

51Testing软件测试网/A9Z aD)@9HR:l9A

  1.4 readahead 预读扇区数51Testing软件测试网?"y6J0e`/Q&G5j

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

8RID,Z8~l0

a;XP \{%Ou'c&R0  blockdev --setra 256 /dev/sdb

*OW6|2tD |I.nl051Testing软件测试网,ej$nt0k#t

  2、EXT3文件系统参数

k9tw_&du051Testing软件测试网Ykv"s6H f

  2.1 block size = 4096 (4KB)

4t^h5eWN%R0

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

l'N?0f9o5}JRsI051Testing软件测试网1?7}M%@1y

7}6sK0^5b5L0  2.2 inode size

HVX*L&BC sf051Testing软件测试网[_M&O8e9qef6W

  这是一个逻辑概念,即一个inode所对应的文件相应占用多大物理空间。mkfs.ext3 -i指定,可用文件系统文件大小平均值来设定,可减少磁盘寻址和元数据操作时间。

mb(bL,Ta q5Bt1~051Testing软件测试网/Km`5d-e2fMl~0a sS

  2.3 reserved block

+f%rFp:c&COE4j-a051Testing软件测试网*O1ge r oV(sQ

  mkfs.ext3 -m指定,缺省为5%,可调小该值以增大部分可用存储空间。51Testing软件测试网#u9GftZ6O/\+y

51Testing软件测试网x'V)zUh V1pK

  2.4 disable journal

+Y$w+l4o\4~,ig@0

j;I;@ KL-u0  对数据安全要求不高的应用(如web cache),可以关闭日志功能,以提高I/O性能。

u(x)}L0{L0

1AF x']o5C0  tune2fs -O^has_journal /dev/sdb

z7g,{ItH7{.J2T051Testing软件测试网 X} x@5|S

  3、mount参数51Testing软件测试网e6O+l(te5\9f

&]E8pDY.Fn*W:^0  3.1 noatime, nodirtime

!WWz1pf'l0E7n K051Testing软件测试网!LC&B JH#V

  访问文件目录,不修改访问文件元信息,对于频繁的小文件负载,可以有效提高性能。51Testing软件测试网 C%^+BVf {j

51Testing软件测试网._]"e9Ws M:s

  3.2 async

z*v;|.Y B4rJd0

S$}x$\W pQ0  异步I/O方式,提高写性能。

GQ:PP8Gxd0

0N.dS"g.x5{A0  3.3 data=writeback (if journal)

y0Zn%[6U`0

2i Ly|z*j!HUg q0  日志模式下,启用写回机制,可提高写性能。数据写入顺序不再保护,可能会造成文件系统数据不一致性,重要数据应用慎用。51Testing软件测试网Yylro#i!ZK m

51Testing软件测试网L W&G+iNj?)~8[

  3.4 barrier=0 (if journal)51Testing软件测试网n^2?Kl F*i-Q

51Testing软件测试网$@5I*vX:[1J nh

  barrier=1,可以保证文件系统在日志数据写入磁盘之后才写commit记录,但影响性能。重要数据应用慎用,有可能造成数据损坏。

/w$Tnyd*uPF051Testing软件测试网'P,I!uV-O4ej1cb-Ns

  4、小结51Testing软件测试网"x^+UkET!u` `

D%e] p)\8m4D0\0  以/dev/sdb为例,优化操作方法如下,参数请自行调整。

K1H `@a]&@0

)~&Tg3i o%J@1L'q?0  sdparm -s WCE=1, RCD=0 -S /dev/sdb
#l;l'G"C$yie`].o0  echo deadline > /sys/block/sdb/queue/scheduler
-{Oc,w ~kt0  echo 500 > /sys/block/sdb/queue/iosched/read_expire
2e3k`kt-^B0  echo 1000 > /sys/block/sdb/queue/iosched/write_expire
PYuVcGrg*}0  blockdev --setra 256 /dev/sdb

p&swb~r051Testing软件测试网1SB1c8G^9Ry

  mkfs.ext3 -b 4096 -i 16384 -m 2 /dev/sdb151Testing软件测试网+UGs6q8_+M{NaI
  tune2fs -O^has_journal /dev/sdb1

Z,QH0AG4q8R0

LYGuo {8T:M0  mount /dev/sdb1 /cache1 -o defaults,noatime,nodirtime,async,data=writeback,barrier=0 (if with journal)51Testing软件测试网2p2wLD;NlN
  mount /dev/sdb1 /cache1 -o defaults,noatime,nodirtime,async (if without journal)
51Testing软件测试网,Z)L9ll#@{


TAG:

 

评分:0

我来说两句

Open Toolbar