IO子系统调优

dmidecode-tprocessor|grepSocket(物理cpu个数)

dmidecode|grepSize|grepMB(物理内存大小)

dmidecode|grepSize|grepMB|wc-l(物理内存个数)

vmstat,iostat,sar

IO,输入输出
IOPS
10k,120-150IOPS
15k,150-200IOPS

每个IO完成的数据量


#vmstat2
procs-----------memory-------------swap-------io------system-------cpu------
rbswpdfreebuffcachesisobiboincsussyidwast
00054108115401609012001831018116016291697050
1005410811544160906000003057378724146200
10054140115521609052000283169409822156300

bi
bo
wa


#iostat-x2

#iostat-d2/dev/sda2
Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtn
sda217.75574.413247.345772343263312

Blk_read/s每秒钟读取了多少扇区的数据,一扇区=512字节
tps每秒钟完成了多少个IO(读和写加起来)


#iostat-dk2/dev/sda6

Device:tpskB_read/skB_wrtn/skB_readkB_wrtn
sda6353.002.0070618.004141236

Device:tpskB_read/skB_wrtn/skB_readkB_wrtn
sda6355.002.0070892.004141784

Device:tpskB_read/skB_wrtn/skB_readkB_wrtn
sda6348.502.0069822.004139644

#iostat-xk2/dev/sda6

Device:rrqm/swrqm/sr/sw/srkB/swkB/s
sda60.0016660.000.50341.502.0068236.00


avgrq-szavgqu-szawaitsvctm%util
399.051.103.232.4784.55

r/s每秒钟完成了多少个读IO
w/s每秒钟完成了多少个写IO

avgrq-sz平均每秒钟完成多少扇区数据的传输(读+写)

avgqu-szIO的平均队列长度

awaitIO请求在队列中等待的时间+服务时间(操作完需要数据),单位毫秒

svctm服务时间,单位毫秒

%util越接近100,就说明利用率越高。有些时候发现超过100,这是四舍五入导致

思考:sda6设备平均读IOPS,写IOPS,每个IO读取多少数据,每个IO写入多少数据

每个IO写入多少数据=wkB/s/w/s=200kb

文件系统的优化:
选择性能更好的文件系统:ext4,xfs,zfs
格式化的时候选择适当参数:块大小
根据存放的文件的平均大小来决定,默认块大小
#dumpe2fs-h/dev/sda1
Blocksize:1024

mkfs.ext3-b4096/dev/sda1

web服务等对时间不太重要,可以取消访问时间更新
mount-onoatime........

内核读取设备的调度算法:

#cat/sys/block/sda/queue/scheduler
noopanticipatorydeadline[cfq]

#echo"deadline">/sys/block/sda/queue/scheduler

#vimgrub.conf
...
kernel/vmlinuz-2.6.18-164.el5roroot=LABEL=/1rhgbquietelevator=deadline
...