AIX系统内存占用率的计算 您所在的位置:网站首页 iqoo7系统占用内存 AIX系统内存占用率的计算

AIX系统内存占用率的计算

2024-07-03 14:59| 来源: 网络整理| 查看: 265

1、现象、问题描述 在系统监控时,经常会监控系统内存占用率,其目的为避免系统因为在动态分配内存时因为实际内存不够而使用swap空间,使用swap空间将使用系统性能下降,系统不稳定。 在Linux系统中,系统内存占用率可以通过free命令,计算得出: /home/jcxia> free total used free shared buffers cached Mem: 24672800 17895600 6777200 0 232996 14706928 -/+ buffers/cache: 2955676 21717124 Swap: 21727904 0 21727904 其中: total――指系统所有的物理内存大小 used――已经使用的物理内存大小 free――空闲的物理内存大小 buffers――文件系统缓存占用的物理内存,指要写入物理磁盘的数据占用的内存。 cached――文件系统缓存占用的物理内存,指从物理磁盘读入供以后使用的数据占用的内存。 实际系统中,文件系统缓存可能占用大量的物理内存,Linux下计算物理内存空闲率时,通常将buffers与cached内存当作可使用的内存。即实际系统内存占用率计算: ( total – (free + buffer + cached) ) * 100/ total 在AIX系统下,没有free命令,与之类似的的命令是svmon –G # svmon -G size inuse free pin virtual memory 4100096 420275 3679821 271614 398980 pg space 1048576 1109 work pers clnt pin 271614 0 0 in use 398980 0 21295 其中: size――报告了 RAM 的大小,单位是大小为 4k 的页面。 inuse ――报告了进程所使用的 RAM 中的页面数,加上属于一个已终止的进程但仍位于 RAM 中的持久页面的数目。 free ――报告了空闲列表中页面的数目。 pin ――报告了物理内存 (RAM) 中固定的页面数。固定的页面不能被调出。 paging space ――报告了分页空间的实际使用情况(单位是大小为 4k 的页面)。 与Linux不同的是,svmon只能是root用户才能使用。但有一些脚本并不运行在root用户下,那怎么样才能在普通用户下计算系统内存占用率呢? 在巡检工具及watchdog脚本中,AIX下的空闲内存计算通常通过free * 100/ total。与Linux系统一样,AIX的文件系统也占用了大量的内存,free值很小是很正常的。 因此这里有两个问题: l AIX下的内存占用率应该怎么计算? l AIX下普通用户怎么获取内存占用信息? 2、关键过程、根本原因分析 首先想到的办法是通过另外的属主是root用户的脚本,设置其Set-id位,使其执行时有效用户ID为root用户的ID,然后在脚本中执行svmon,没有成功。 然后,想想能不能搞清楚svmon每项输出的含义,并找找有没有普通用户能执行的相关的命令,并根据相关的输出计算得出。 先来分析AIX内存管理原理。 AIX使用VMM(虚拟内存管理器)管理管理 RAM 和虚拟页面的分配。“在 AIX 中,将所有的虚拟内存段划分为若干个页面,每个页面的缺省大小为 4KB。所分配的页面可以位于 RAM 或者分页空间(虚拟内存存储于磁盘上)。VMM 还维护一个称为空闲列表 的对象,该对象定义为未分配的页帧。它们用于处理缺页的情况。通常存在少量未分配页面(您可以自行配置),VMM 可以使用这些页面来腾出空间并为其重新分配页帧。可以使用 VMM 的页面置换算法来选择要重新分配页帧的虚拟内存页面。这种分页算法可以确定对当前位于 RAM 中的哪些虚拟内存页面的页帧进行回收,并放回到空闲列表中。AIX 可以使用所有可用的内存,除了那些配置为未分配并用做空闲列表的内存之外。” VMM 将虚拟内存段划分为两种不同的类别。它们分别是,使用计算内存的工作段和使用文件内存的持久段。 计算页面 当进程对计算信息进行处理时,将使用到计算内存。这些工作段是临时的(暂时的),并且当进程终止或者页面被替换时,这些工作段将不复存在。它们没有对应的持久磁盘存储位置。在许多情况下,当一个进程终止时,将释放其物理和分页空间。在 VMM 中,当空闲物理内存较少时,可以将最近没有使用的程序从 RAM 移出到分页空间,以帮助释放物理内存,从而完成更多的实际工作。 文件页面 与计算内存不同,文件内存使用了持久段,并在磁盘上具有持久存储位置。数据文件或者可执行程序通常都映射为持久段,而不是工作段。数据文件可能与文件系统相关,如 JFS、JFS2 或 NFS。它们一直都位于内存中,直到文件被卸载、页面被替换、或者取消了到文件的链接。在将数据文件复制到 RAM 中之后,VMM 控制何时对这些页面进行覆盖或者将其用于存储其他数据。在可以选择的情况下,大多数人更希望将文件内存调出到磁盘,而不是计算内存。 从以上分析可以得出,计算AIX内存实际使用的量时,应该是: 计算内存 *100 / 总内存 使用svmon –G命令时,即为work * 100 / memory size. 不过上述计算也不完全正确,因为work页面可能于交换空间,而不是实际内存中。 分析系统性能时,我们还常用另一个命令:vmstat。 8 [jcxia] :/home/jcxia/tool>vmstat 系统配置:lcpu=4 mem=16000MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 1 1 397674 3681485 0 0 0 0 0 0 24 2040 64 0 0 75 24 这里,avm的含义为:表示系统所使用的活动虚拟内存量(单位为 4k 大小的页面),不包括文件页面。可见,使用“vm * 100/系统内存总页面数 ”可以估算系统当前内存占用率。 3、结论、解决方案及效果 使用vmstat –v获取系统总页面数: 9 [jcxia] :/home/jcxia/tool>vmstat -v 4096000 内存页 3886550 lruable 页 3681488 可用页 0 内存池 279392 固定页 80.0 maxpin 百分比 20.0 minperm 百分比 80.0 maxperm 百分比 0.3 numperm 百分比 13075 文件页 0.0 压缩百分比 0 压缩页 0.4 numclient 百分比 80.0 maxclient 百分比 16841 客户机页 0 已调度的远程页调出 0 在没有 pbuf 的情况下阻塞暂挂磁盘 I/O 0 在没有 psbuf 的情况下阻塞调页空间 I/O 2740 在没有 fsbuf 的情况下阻塞文件系统 I/O 6092 在没有 fsbuf 的情况下阻塞客户机文件系统 I/O 0 在没有 fsbuf 的情况下阻塞外部寻呼机文件系统 I/O 然后使用vmstat获取avm大小。 可以使用使用shell脚本如下: total=`vmstat -v|head -1|awk '{print $1}'` avm=`vmstat |sed -n '$ p'|awk '{print $3}'` SysMemRatio=`echo "100 * ${avm} / ${total}" | bc ` 4、经验总结、预防措施和规范建议 不同的操作系统管理机制存在一定的差别,做watchdog等相关的工具时,要考虑不同平台的差别。 这种方法只能近似计算,并且有可能出现内存占用率超过100%的现象。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有