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耗尽.
|