nmon内存分析

MemTotal:显示当前服务器物理内存大小,本服务器有8063180 KB≈7874 MB左右。

MemFree:显示当前服务器的空闲内存大小,本服务器有5052336 KB≈4934 MB左右。

Buffers:显示当前服务器Buffer(在内存中要写到磁盘上的)缓存的大小,本服务器有459108 KB≈448 MB左右,注意,这里的数值仅是采集初期的静态值,具体Buffer的变化还需要看Sheet MEM。

Cached:显示当前服务器Cache缓存的大小(从磁盘读取到内存的),本服务器有1032572 KB≈1008 MB左右。,这里的数值仅是采集初期的静态值,具体Buffer的变化还需要看Sheet MEM。

SwapCached:显示当前服务器Swap空间已缓存的大小,本服务器尚未使用到Swap空间。

SwapTotal:显示当前服务器Swap空间大小,本服务器有8385532 KB≈8189 MB左右。

SwapFree:显示当前服务器Swap空闲空间大小,本服务器Swap空间都空闲。


active表示这些内存数据正在使用种,或者刚被使用过。inactive表示这些内存中的数据是有效的,但是最近没有被使用。free, 空闲内存,这些空间可以随时被程序使用。

当free的内存低于某个值,系统则会使用inactive的资源。

关于active、inactive和free内存的转化关系如下:

首先如果inactive的数据最近被调用了,系统会把它们的状态改变成active,并接在原有active内存逻辑地址的后面, 如果inactive的内存数据最近没有被使用过,但是曾经被更改过而还没有在硬盘的相应虚拟内存中做修改,系统会对相应硬盘的虚拟内存做修改,并把这部分物理内存释放为free供程序使用。如果inactive内存中得数据被在映射到硬盘后再没有被更改过,则直接释放成free。最后如果active的内存一段时间没有被使用,会被暂时改变状态为inactive。

如果系统里有少量的free memeory和大量的inactive的memeory,说明内存是够用的,系统运行在最佳状态,只要需要,系统就会使用它们,不用担心。而反之如果系统的free memory和inactive memory都很少,而active memory很多,说明内存不够了。

分析阶段 我们通常需要 CPU(%)、MEM(%)、DISKBUSY(%)、NET(MB)几个相关数值

      1. 关于有效行

       由于nmon启动时间未必是应用平稳的时间,同时nmon监控时间段也许比应用施压的要长;所以nmon的结果里常常存在一些明显不合理的数据--比如前几次结果的CPU等占用明显低于中段的平均数据,或者后面几次采样结果很小;对于这样的数据我们在分析的时候要予以过滤;

      2. CPU 占用

       CPU_ALL 表,的CPU%列取平均值即可---注意下图中红框中就是无效数据;

  2. DISKBUSY  

    DISKBUSY表,对于单磁盘服务器直接对SDA列取平均即可;多服务器的话看情况而定--若果只有一个磁盘有压力那么就选择那个磁盘即可,要是两个磁盘均有则要合起来取个平均;

3. MEM% 

  在MEM表里面使用如下公式计算出每行的内存使用率并进行取平均:

    (Memtotal - Memfree - cached - buffers)/Memtotal  * 100即( =(B2-F2-K2-N2)/B2*100)

通过分析内存使用率的趋势,可定位是否内存泄露情况。

有人看到内存使用率是99%,就认为内存用满了,并没有区分内存分页是什么类型,这样武断的说内存用满了是不科学的。在AIX上主要关注的是计算内存占整个物理内存的百分比,linux上主要关注的是active内存占整个物理内存的百分比。

4. NET(MB) 网络占用是唯一需要转换为MB的而不是%

找到eth0-total eth1-total中不为0的那列,取平均并除以1024。

注意此处的write 相当于 nmon时时监控(直接执行并按n键)中的TRANS(OUT),read相当于RECVS(IN)

要留心数据的变化规律和有效性,灵活的过滤掉无效的数据,一般用CPU来过滤无效行,并在其他三项中统一用有效行数来计算;


Shell脚本查看linux系统性能瓶颈文中有已写的shell脚本,从脚本中可看出从linux命令中如何获取服务器各项资源的值。可以与nmon结合一块分析。

你可能感兴趣的:(nmon内存分析)