OneFS:記憶體使用率
Summary: 本文簡要討論一般記憶體類別,說明哪些記憶體類別可視為可用或「可用」。 提供了有關某些進程和容器可以使用的記憶體數的指南。
Instructions
記憶體不足可能會導致節點重新開機、進程重啟和效能問題。本文簡要說明如何評估節點的可用記憶體,並參考一些技術記憶體準則。在 OneFS 中,記憶體大致分為五個區域或佇列:可用、非活動、有線、活動和緩衝區
可用記憶體
空閒記憶體立即可供使用,且未分配。
最近未使用過非使用中 (Inact) 記憶體,可供分配。
無法使用的記憶體
內核正在使用有線記憶體,無法用於其他分配。
最近已使用活動記憶體,並分配給用戶空間。
緩衝區 (Buf) 記憶體用於磁碟快取。
計算可用記憶體
您可以從命令頂部看到這些記憶體類別。
請注意,預期不會看到快取類別,也不會在「交換」區段中看到任何內容:
# top last pid: 98143; load averages: 0.00, 0.02, 0.00 up 48+04:45:17 16:01:09 643 processes: 1 running, 642 sleeping CPU: 0.0% user, 0.0% nice, 0.2% system, 0.0% interrupt, 99.8% idle Mem: 512M Active, 28G Inact, 11G Wired, 12G Buf, 7530M Free Swap:
如果檢視輸出來源 vmstat -H,您會看到可用記憶體頁 (AVM) 和可用記憶體 (FRE) (以位元組為單位)。
# vmstat -H procs memory page disks faults cpu r b w avm fre flt re pi po fr sr ad4 ad7 in sy cs us sy id 0 14 0 9333548 7713640 863 0 0 0 564 15 0 0 428 903 200 0 0 100
將 AVM 頁面轉換為位元組會顯示可用記憶體 (非使用中 + 可用):9333548 x 4096 = 38230212608 bytes
Convert to GB 38230212608/(1024^3)= 35.6 GB Available Memory
如果您從 top 輸出在此範例中,您有:28GB + 7.35GB = 35.35GB
請注意,頂部輸出已四捨五入,因此可能與來自 vmstat。
處理特定記憶體使用率
虛擬大小或 vsz (SIZE) 是指分配給此程序的記憶體。
在頂部的手冊頁面中,「SIZE是進程的總大小(文本、數據和堆棧)」
駐留集大小(RES) 是指此過程使用的物理內存量。
在頂部的手冊頁中,“RES 是當前駐留記憶體量(SIZE 和 RES 均以 KB 為單位)”top 顯示六個使用最多虛擬記憶體的程序的命令:
# top -o size -n 6 last pid: 26745; load averages: 0.15, 0.20, 0.17 up 3+19:06:14 20:03:26 103 processes: 1 running, 102 sleeping Mem: 152M Active, 23G Inact, 14G Wired, 12G Buf, 10G Free Swap:
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 10244 root 15 60 r112 592M 310M kqread 3 6:35 0.00% nfs 2698 root 11 20 0 585M 125M select 7 34:41 0.00% isi_celog_monitor 2544 root 26 60 r112 506M 70184K kqread 4 0:05 0.00% isi_papi_d 3217 root 2 26 0 439M 48336K kqread 3 0:13 0.00% isi_celog_capture 2676 root 2 52 0 399M 41540K kqread 2 1:46 0.00% isi_celog_capture 26740 root 2 20 0 399M 40168K kqread 6 0:00 0.00% isi_celog_capture
每個節點
的 LW 容器記憶體耗用和開啟檔案的最大值 視 OneFS 版本而定,有一些已發佈的記憶體最大值。將解釋每個節點的打開檔以及 LW 容器中的 SMB 和 NFS 等專案。
請參閱 OneFS 技術規格指南
- LW 容器:頁碼 9~23
在 OneFS 中,三個 lwio 處理容器分別針對 SMB、NFS 和 Swift 處理程序提供一個容器。SMB 容器最多可佔總 RAM 的 20%,但至少為 1 GB,最多為 32 GB。NFS 容器最多可佔總 RAM 的 25%,但至少為 1 GB,最多為 8 GB。Swift 容器為 512 MB。
- 開啟的檔案限制:第 12 頁
每個節點開啟的檔案數上限為 vnodes 在該節點上,如以下公式所示: kern.maxfiles = kern.maxvnodes * 0.9 OneFS 通訊協定精靈,例如輸入/輸出精靈 (lwio),可能會對節點可以打開的檔數施加其他約束。協議守護程式通常會施加此類約束,因為內核對每個進程的記憶體消耗進行了限制。
檢查記憶體使用率與最大值
檢視 lsass 使用的過程 ps:
# ps auwx | egrep "USER|lsass" | grep -v grep USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND root 14689 0.0 0.3 162112 20404 ?? I 20Feb17 0:33.30 lw-container lsass (lsass)
檢查使用 top 命令:
top -n 100 | egrep "SIZE|lsass" PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 14689 root 26 20 0 158M 20764K ucond 2 0:00 0.00% lsass