OneFS:内存利用率
Summary: 本文简要讨论了一般内存类别,说明了哪些内存类别可以被视为可用或“可用”。 提供了有关某些进程和容器可以使用的内存量的指南。
Instructions
内存不足可能会导致节点重新启动、进程重新启动和性能问题。本文简要介绍了如何评估节点的可用内存,并参考了一些技术内存准则。在 OneFS 中,内存大致分为五个区域或队列:可用内存、非活动内存、有线内存、活动内存和缓冲区
可用内存
可立即使用,不会分配。
非活动 (Inact) 内存最近未使用,可进行分配。
内存不可用
有线内存正由内核使用,不可用于其他分配。
活动内存最近已被使用,并已分配给用户空间。
缓冲区 (Buf) 内存用于磁盘高速缓存。
计算可用内存
这些内存类别可以从命令顶部看到。
请注意,预计不会看到 Cache 类别,也不会在 Swap 部分中看到任何内容:
# 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
如果将 Inact 和 Free 值从 top 在此示例中的输出,您有:28GB + 7.35GB = 35.35GB
请注意,顶部输出已四舍五入,因此它可能不完全匹配 vmstat。
进程特定的内存利用率
虚拟大小或 vsz (SIZE) 是指分配给此进程的内存。
在顶部的手册页中,“SIZE 是进程(文本、数据和堆栈)的总大小”
驻留集大小 (RES) 是指此进程使用的物理内存量。
在顶部的手册页面中,“RES 是驻留内存的当前容量(SIZE 和 RES 均以千字节为单位)”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