在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
重新测量了弧的大小 – 我用kstat
validation了这些数字:
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:
并将以下内容添加到zfs:0:arcstats:
所以这可能基本上只是你的脚本的问题。