1 / 5
文档名称:

ZFS文件系统ARC缓存.doc

格式:doc   大小:42KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ZFS文件系统ARC缓存.doc

上传人:慢慢老师 2022/2/26 文件大小:42 KB

下载得到文件列表

ZFS文件系统ARC缓存.doc

文档介绍

文档介绍:减少ZFS文件系统ARC缓存的方法
第 1 页
减少ZFS文件系统ARC缓存的方法
ARC缓存简介
减少ZFS文件系统ARC缓存的方法
第 1 页
减少ZFS文件系统ARC缓存的方法
ARC缓存简介
ZFS文件系统是Solaris 11系统的默认文件系统,ZFS文件系统简介可见附录。
ZFS使用在内存中建立缓存的方式来提升性能,这种做法在海量数据时尤为有效。ZFS的缓存使用ARC(Adjustable Replacement Cache)算法,它是基于IBM的Megiddo和Modha提出的ARC淘汰算法演化而来的。所以这个缓存通常被称为ARC缓存。
Solaris系统中有两个内核参数来限制ARC缓存的大小:
zfs_arc_min:确定ARC缓存的最小大小,设置单位为字节。默认64MB。
zfs_arc_max:确定ARC缓存的最大大小,设置单位为字节。默认在内存少于4 GB的系统上为物理内存的 75%,在内存大于4 GB的系统上为物理内存减去1 GB。
这两个内核参数都是使用容量单位来设定的,并不能根据物理内存的大小来自动调节,所以在Solaris ,使用百分比来设定:
user_reserve_hint_pct:设置留给应用程序的物理内存百分比。查阅Oracle官方文档,并没有给出详细的说明,经试验,默认值应为0,且zfs_arc_min、zfs_arc_max参数依然有效,即user_reserve_hint_pct参数确定的ARC缓存占用量低于zfs_arc_min时,取zfs_arc_min的容量;高于zfs_arc_max时,取zfs_arc_max的容量。该参数在Solaris 。
内存占用情况及产生的问题
使用以下命令可以查看内存使用明细:
echo “::memstat” | mdb -k
在一台16GB的机器上,进行大量IO操作后(充分建立缓存),运行以上命令,如下图:

第 2 页
可以看到“ZFS File Data”,使用51%的物理内存。
ARC缓存是弹性的,其设计思想是尽量多地使用空闲内存来加速(其实Windows Vista之后的版本也使用类似的思想),当有程序申请内存时,释放ARC缓存来满足程序的需求。
这样的机制看上去没有什么问题,而且在大型机及海量数据的情况下的确是一个很好的解决方案。但是这都是为高性能机器准备的,在我们公司使用的四路、两路服务器上也没什么问题,但是到了E32这类低成本方案的机器(4GB内存,奔腾CPU,性能不及我们的笔记本)上就可能导致内存不足。
原因是:应用程序申请较大内存时,ARC缓存来不及释放,导致应用程序申请内存失败而出现错误。如果是Oracle数据库申请内存失