自升级到Solaris 11以来,尽pipe拥有30GB内存,但我的ARC大小始终为119MB。 什么? 为什么?

在Solaris 11发布之前,我在Solaris 11 Express上运行了NAS / SAN盒。 盒子是一个带有D2700的HP X1600。 在所有的12x 1TB 7200 SATA磁盘中,12x 300GB 10k SAS磁盘在不同的zpools中。 总RAM是30GB。 提供的服务是CIFS,NFS和iSCSI。

一切都很好,我有一个ZFS内存使用情况图如下所示:

一个相当健康的弧大小约23GB – 利用可用内存进行caching。

不过,当我出现时,我升级到了Solaris 11。 现在,我的graphics如下所示:

arc_summary.pl部分输出是:

 System Memory: Physical RAM: 30701 MB Free Memory : 26719 MB LotsFree: 479 MB ZFS Tunables (/etc/system): ARC Size: Current Size: 915 MB (arcsize) Target Size (Adaptive): 119 MB (c) Min Size (Hard Limit): 64 MB (zfs_arc_min) Max Size (Hard Limit): 29677 MB (zfs_arc_max) 

它的目标是119MB,而坐在915MB。 它有30GB的玩。 为什么? 他们改变了什么吗?

编辑

为了澄清, arc_summary.pl是本洛克伍德的,而产生上述统计的相关线是:

 my $mru_size = ${Kstat}->{zfs}->{0}->{arcstats}->{p}; my $target_size = ${Kstat}->{zfs}->{0}->{arcstats}->{c}; my $arc_min_size = ${Kstat}->{zfs}->{0}->{arcstats}->{c_min}; my $arc_max_size = ${Kstat}->{zfs}->{0}->{arcstats}->{c_max}; my $arc_size = ${Kstat}->{zfs}->{0}->{arcstats}->{size}; 

Kstat条目在那里,我只是从他们中得到奇数值。

编辑2

我刚刚用arc_summary.pl重新测量了弧的大小 – 我用kstatvalidation了这些数字:

 System Memory: Physical RAM: 30701 MB Free Memory : 26697 MB LotsFree: 479 MB ZFS Tunables (/etc/system): ARC Size: Current Size: 744 MB (arcsize) Target Size (Adaptive): 119 MB (c) Min Size (Hard Limit): 64 MB (zfs_arc_min) Max Size (Hard Limit): 29677 MB (zfs_arc_max) 

打击我的是目标大小是119MB。 看图,它的目标是完全相同的值(根据arc_summary.pl,根据仙人掌arc_summary.pl ,认为差异只是1024/1000四舍五入问题),自Solaris 11安装以来。 它看起来像内核正在努力将目标大小转移到任何不同的东西。 目前的规模是随着系统(大)的需求与目标规模的对抗而波动的,而且看起来平衡在700到1000MB之间。

所以现在问题更加尖锐了 – 为什么Solaris 11将我的ARC目标大小设置为119MB,我该如何改变它? 我应该提高最小尺寸,看看会发生什么?

我在http://pastebin.com/WHPimhfg卡住了kstat -n arcstats的输出

编辑3

好吧,现在怪异。 我知道flibflob提到有一个补丁来解决这个问题。 我还没有应用这个补丁(仍然排除内部支持问题),我没有应用任何其他的软件更新。

上个星期四,箱子坠毁了。 如在,完全停止响应一切。 当我重新启动它,它恢复正常,但这是我的图现在看起来像。

似乎已经解决了这个问题。

这是现在拉拉土地的东西。 我几乎不知道发生了什么事。 🙁

不幸的是我不能解决你的问题,但是这里有一些背景信息:

  • ARC目标大小似乎不是一个固定值。 我在Solaris 11机器上遇到同样的问题,每次重新启动后,目标大小似乎都locking在〜100到500MB之间。

  • 至less有三个人面临同样的问题,正如http://mail.opensolaris.org/pipermail/zfs-discuss/2012-January/050655.html

  • 在“我的Oracle支持”( https://support.oracle.com )上也有一个开放的错误报告(7111576)。 如果您的服务器在有效的支持合同下,则应提交服务请求并引用该错误。 截至目前,任何错误修正仍然似乎正在进行中…

除此之外,你可以做的不多。 如果您尚未升级zpool / zfs版本,则可以尝试启动到旧的Solaris 11引导环境,然后运行该环境,直到Oracle最终决定发布修复此问题的SRU。

编辑:由于性能下降的问题已经在上面讨论过了:这一切都取决于你在做什么。 自升级到Solaris 11 11/11以来,我在Solaris 11 NFS共享中看到了可怕的延迟。 但是,与您的系统相比,我的主轴数量相对较less,并且严重依赖于ARC和L2ARCcaching,因此可以按预期工作(请注意,问题也会导致L2ARC不能增长到合理的大小)。 这当然不是曲解统计的问题。

即使你不太依赖于ARC / L2ARC,你也可以通过使用dd多次读取一个大文件(通常适合你的RAM)来重现它。 您可能会注意到,第一次读取文件实际上比同一文件的任何连续读取都快(由于ARC大小和无数的caching逐出)。

编辑:我现在已经设法从甲骨文收到一个IDR修补程序,解决了这个问题。 如果您的系统受支持,则应该要求为CR 7111576提供IDR修补程序。此修补程序适用于带有SRU3的Solaris 11 11/11。

他们改变了kstats。

Oracle Solaris 11已经从zfs中删除了以下统计信息:0:arcstats:

  • evict_l2_cached
  • evict_l2_eligible
  • evict_l2_ineligible
  • evict_skip
  • hdr_size
  • l2_free_on_write
  • l2_size recycle_miss

并将以下内容添加到zfs:0:arcstats:

  • buf_size
  • meta_limit
  • meta_max
  • meta_used

所以这可能基本上只是你的脚本的问题。