Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24853118
  • 博文数量: 271
  • 博客积分: 10025
  • 博客等级: 上将
  • 技术积分: 3358
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-12 15:28
文章分类

全部博文(271)

文章存档

2010年(71)

2009年(164)

2008年(36)

我的朋友

分类:

2009-09-23 14:05:39

如何调整文件系统缓冲区

Document #: 1811088I26002

Body:
[标题] 如何调整文件系统缓冲区

环境:(产品AIX V5.2及以上版本,平台pSeries)

问题描述: 本文介绍了如何调整文件系统缓冲区.

解答:

1. 简介:
当文件系统被mount时,将被分配一个缓冲池(bufstructs).
当文件系统缺少可用的buffer时,读写I/O请求需排队等待,直到已提交的IO完成且释放buffer.

2. 如何确定buffer瓶颈:
AIX V5.2及以后的版本,确定文件系统buffer是否存在瓶颈,可以使用"vmstat -v"命令:
JFS -> 2888 filesystem I/Os blocked with no fsbuf
NFS -> 9832 client filesystem I/Os blocked with no fsbuf
JFS2 -> 8066 external pager filesystem I/Os blocked with no fsbuf

3. 相关参数及调整建议:
(1) JFS
- ioo: numfsbufs
- 需重新mount文件系统方生效

(2) JFS2
- ioo: j2_nBufferPerPagerDevice
j2_dynamicBufferPrellocation
- j2_nBufferPerPagerDevice: jfs2文件系统初始分配的buffer个数.
j2_dynamicBufferPrellocation: 当buffer低时,分配多少个16KB的buffer.
- AIX V5.3 ML4开始, JFS2的buffer是动态的,不需要重新mount.
- 通常,系统中不会每一个文件系统都忙,而j2_nBufferPerPagerDevice是
应用于每个文件系统,如果提高j2_nBufferPerPagerDevice将会使空闲的
FS也拥有大量的buffer,浪费资源.
所以如果发现'filesystem I/Os blocked with no fsbuf'过高,建议调整
j2_dynamicBufferPrellocation,这样只有繁忙的FS会得到更多的buffer.

(3) NFS
- nfso: nfs_v2_vm_pdts, nfs_v3_vm_pdts, nfs_v4_vm_pdts
nfs_v2_vm_bufs, nfs_v3_vm_bufs, nfs_v4_vm_bufs
- 系统对每一种NFS版本分配一个缓冲池,同版本NFS共用这个缓冲池.
- vm_pdts: 缓冲池的个数;
vm_bufs: 每个缓冲池的大小,最大5000.
- vm_pdts和vm_bufs都需要在NFS文件系统mount之前设置.

最后, 适当增加文件系统buffer数量,可以改善系统性能.
但请注意,由于文件系统buffer位于kernel heap,
所以对于32位内核系统,若将buffer值调得过高,可能引起kernel heap耗尽.

阅读(4122) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~