Zfs

自從升級到 Solaris 11 後,我的 ARC 大小一直以 119MB 為目標,儘管 RAM 為 30GB。什麼?為什麼?

  • March 11, 2020

在 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/WHPimhfgkstat -n arcstats上粘貼了over的輸出

編輯 3

好吧,現在奇怪了。我知道 flibflob 提到有一個更新檔可以解決這個問題。我還沒有應用這個更新檔(仍在整理內部支持問題),我還沒有應用任何其他軟體更新。

上個星期四,盒子壞了。如在,完全停止響應一切。當我重新啟動它時,它恢復正常,但這是我的圖表現在的樣子。

它似乎已經解決了這個問題。

現在這是適當的啦啦土地的東西。我真的不知道發生了什麼。:(

不幸的是,我無法解決您的問題,但這裡有一些背景資訊:

除此之外,你無能為力。如果您還沒有升級您的 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。

引用自:https://serverfault.com/questions/352144