ZFS文件系统ARC缓存.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STYLEREF 文档题目 第 PAGE 2 页 减少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 11.2系统上增加了一个内核参数,使用百分比来设定: 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 11.2之前的系统中不存在。 内存占用情况及产生的问题 使用以下命令可以查看内存使用明细: echo “::memstat” | mdb -k 在一台16GB的机器上,进行大量IO操作后(充分建立缓存),运行以上命令,如下图: 可以看到“ZFS File Data”一项占据了8.1GB之多,使用51%的物理内存。 ARC缓存是弹性的,其设计思想是尽量多地使用空闲内存来加速(其实Windows Vista之后的版本也使用类似的思想),当有程序申请内存时,释放ARC缓存来满足程序的需求。 这样的机制看上去没有什么问题,而且在大型机及海量数据的情况下的确是一个很好的解决方案。但是这都是为高性能机器准备的,在我们公司使用的四路、两路服务器上也没什么问题,但是到了E32这类低成本方案的机器(4GB内存,奔腾CPU,性能不及我们的笔记本)上就可能导致内存不足。 原因是:应用程序申请较大内存时,ARC缓存来不及释放,导致应用程序申请内存失败而出现错误。如果是Oracle数据库申请内存失败,则会导致数据库退出;如果是系统核心进程申请内存失败,则会导致系统重启或卡死。 建议的配置方法 通常,仅需在4GB内存的低成本机器上进行配置。 上文已经讲了相应的内核参数,所以在不同的系统上可以进行不同的设置,以下方法均已验证有效。 Solaris 11.2之前的版本(比如Solaris 11.0) 通过设置zfs_arc_max内核参数来限制ARC缓存使用量,修改/etc/system文件,在最后加入新的一行,内容如下: set zfs:zfs_arc_max=100000000 含义是将ARC缓存的最大内存使用量限制在100MB(数字不是很精确)。4GB内存的机器建议使用这个限制值,其他内存的机器可以不设置,或放宽到数百兆,或几GB,视自己需求。 Solaris 11.2 Solaris 11.2提供了user_reserve_hint_pct内核参数,这是一个更好的方法。也是修改/etc/system文件,在最后加入新的一样,内容如下: set user_reserve_hint_pct=80 含义是将80%的物理内存留给程序,因为是百分比,所以在不同内存的机器上都可以这么设置。 验证 可以使用kstat -m zfs命令查看c_max属性的值,即zfs_arc_max,但此命令无法查看user_reserve_hint_pct内核参数的作用。 最直接的验证方法为进行大IO操作(比如复制一个大文件),然后使用上文的echo “::memstat” | mdb –k命令查看“ZFS File Data”的内存使用量。 附录 ZFS文件系统简介 ZFS文件系统的英文名称为Zettabyte File System,是第一个128位文件系统,可以说是当前最先进的文件系统,在文件系统的发展史上具有划时代意义。 ZFS最初是由Sun公司为Solaris操作系统开发的文件系统,之后Sun公司开放了其源代码,

文档评论(0)

_______ + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档