自從升級到 Solaris 11 後,我的 ARC 大小一直以 119MB 為目標,儘管 RAM 為 30GB。什麼?為什麼?
在 Solaris 11 發布之前,我在 Solaris 11 Express 上執行了一個 NAS/SAN 機器。盒子是帶有 D2700 的 HP X1600。總共有 12 個 1TB 7200 SATA 磁碟,12 個 300GB 10k SAS 磁碟在單獨的 zpool 中。總記憶體為 30GB。提供的服務包括 CIFS、NFS 和 iSCSI。
一切都很好,我的 ZFS 記憶體使用圖如下所示:
大約 23GB 的相當健康的 Arc 大小 - 使用可用記憶體進行記憶體。
但是,當它發佈時,我升級到了 Solaris 11。現在,我的圖表如下所示:
的部分輸出
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
是 Ben Rockwood 的,產生上述統計數據的相關行是: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
: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。查看圖表,自安裝 Solaris 11 以來,它的目標值完全相同(根據 cacti 為 124.91M,根據
arc_summary.pl
- 認為差異只是 1024/1000 舍入問題)。看起來核心正在零努力將目標大小轉換為任何不同的大小。目前大小隨著系統(大型)需求與目標大小的衝突而波動,看起來平衡在 700 到 1000MB 之間。所以現在的問題有點尖銳——為什麼 Solaris 11 將我的 ARC 目標大小硬設置為 119MB,我該如何更改它?我應該提高最小尺寸看看會發生什麼嗎?
我已經在http://pastebin.com/WHPimhfg
kstat -n arcstats
上粘貼了over的輸出編輯 3
好吧,現在奇怪了。我知道 flibflob 提到有一個更新檔可以解決這個問題。我還沒有應用這個更新檔(仍在整理內部支持問題),我還沒有應用任何其他軟體更新。
上個星期四,盒子壞了。如在,完全停止響應一切。當我重新啟動它時,它恢復正常,但這是我的圖表現在的樣子。
它似乎已經解決了這個問題。
現在這是適當的啦啦土地的東西。我真的不知道發生了什麼。:(
不幸的是,我無法解決您的問題,但這裡有一些背景資訊:
- ARC 目標大小似乎不是固定值。我在 Solaris 11 機器上遇到了同樣的問題,每次重新啟動後,目標大小似乎鎖定在 ~100 到 ~500MB 之間的值。
- 如http://mail.opensolaris.org/pipermail/zfs-discuss/2012-January/050655.html中所述,至少有 3 個人面臨同樣的問題
- 在“My Oracle Support”( https://support.oracle.com )上還有一個未解決的錯誤報告 (7111576 )。如果您的伺服器具有有效的支持契約,您應該送出服務請求並參考該錯誤。截至目前,任何錯誤修復似乎仍在進行中……
除此之外,你無能為力。如果您還沒有升級您的 zpool/zfs 版本,您可以嘗試引導到舊的 Solaris 11 Express 引導環境並執行該環境,直到 Oracle 最終決定發布修復該問題的 SRU。
**編輯:**由於上面已經討論了性能下降的問題:這完全取決於你在做什麼。自從升級到 Solaris 11 11/11 以來,我在 Solaris 11 NFS 共享上看到了可怕的延遲。但是,與您的系統相比,我的主軸相對較少,並且嚴重依賴 ARC 和 L2ARC 記憶體按預期工作(請注意,該問題還會導致 L2ARC 無法增長到任何合理的大小)。這當然不是統計數據被誤解的問題。
即使您可能不太依賴 ARC/L2ARC,您也可以通過使用dd多次讀取一個大文件(通常適合您的 RAM)來重現它。您可能會注意到,第一次讀取文件實際上比連續讀取同一文件要快(由於荒謬的 ARC 大小和無數記憶體驅逐)。
**編輯:**我現在已經設法從 Oracle 收到一個 IDR 更新檔來解決這個問題。如果您的系統受到支持,您應該索取 CR 7111576 的 IDR 更新檔。該更新檔適用於帶有 SRU3 的 Solaris 11 11/11。