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结合一块分析。
作者:极客与宽客
链接:https://www.jianshu.com/p/105f2c9abff4
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
nmon内存分析的更多相关文章
- iOS app内存分析套路
iOS app内存分析套路 Xcode下查看app内存使用情况有2中方法: Navigator导航栏中的Debug navigator中的Memory Instruments 一.Debug navi ...
- 【Android端 APP 内存分析】使用工具进行APP的内存分析
Android端可以通过adb 命令直接获取内存信息,当然Android studio也提供了对内存的监控分析工具,并且后续可以结合MAT做分析 今天介绍的是通过Android studio和MAT工 ...
- Chrome开发者工具之JavaScript内存分析
阅读目录 对象大小(Object sizes) 对象的占用总内存树 支配对象(Dominators) V8介绍 Chrome 任务管理器 通过DevTools Timeline来定位内存问题 内存回收 ...
- Eclipse CDT Linux下内存分析 补记
常用工具汇总 http://www.ibm.com/developerworks/cn/linux/l-cn-memleak/ 常用的内存分析工具 http://en.wikipedia.org/wi ...
- c中的进制与内存分析
一. 进制 1. 什么是进制 l 是一种计数的方式,数值的表示形式 数一下方块的个数 汉字:十一 十进制:11 二进制:1011 八进制:13 l 多种进制:十进制.二进制.八进制.十六进制. ...
- [转载]JavaScript内存分析
https://github.com/CN-Chrome-DevTools/CN-Chrome-DevTools/blob/master/md/Performance-Profiling/javasc ...
- iOS开发——高级篇——内存分析,Instruments
一.内存分析 1.静态内存分析(Analyze)不运行程序,直接对代码进行内存分析,查看代码是否有内存泄露优点:分析速度快,并且可以对所有的代码进行内存分析缺点:分析结果不一定准确(没有运行程序,根据 ...
- 记一次Android内存分析过程
前言 上周五的时候,祝峰找到我,反映了Android收银台买单结果页内存飙升的问题.我在自己的机器上也试着重现了一下,发现从支付台-微信支付成功并返回后,进入买单结果页的内存会突然增大,导致GC,如图 ...
- [原创]推荐一款强大的.NET程序内存分析工具.NET Memory Profiler
[原创]推荐一款强大的.NET程序内存分析工具.NET Memory Profiler 1 官方网站:http://memprofiler.com/2 下载地址:http://memprofiler. ...
随机推荐
- git把本地代码上传(更新)到github上
# 初始化目录为本地仓库 git init # 添加所有文件到暂存去 git add . # 提交所有文件 git commit -m "init" # 添加远程仓库地址 git ...
- MIT 6.824学习笔记4 Lab1
现在我们准备做第一个作业Lab1啦 wjk大神也在做6.824,可以参考大神的笔记https://github.com/zzzyyyxxxmmm/MIT6824_Distribute_System P ...
- 又一年NOIP后的一波总结
(昨天正式考完了吧...先写一下现在的感受,出成绩以及后续继续更...) 按照国际惯例,还是先讲一下故事吧. Day(~,0] 大概是跟随者时间的推进,气氛越来越紧张吧. 平时好像大家和往常一样,日常 ...
- 剑指offer学习--实现单例模式
只能生成一个实例的类是为了实现单例模式的类型. 加同步锁前后两次判断实例是否已存在 我们只是在实例还没有创建之前加锁操作,以保证只有一个线程创建出实例.而当实例已经创建之后,我们已经不需要再做加锁操作 ...
- pgtksh -- PostgreSQL Tcl/Tk shell 客户端
SYNOPSIS pgtksh [filename [argument...]] DESCRIPTION 描述 pgtksh 是一个带有 PostgreSQL 数据库访问函数扩展的 Tcl/Tk sh ...
- nodejs http服务器简单搭建
var http = require('http') // 1. 创建 Server var server = http.createServer() // 2. 监听 request 请求事件,设置 ...
- 网络拓扑_VLAN与Trunk配置
实验目的: 1.实现VLAN10的两台主机互通; VLAN20的两台主机互通; 2.VLAN10与VLAN20主机不能互通. 拓扑图: 步骤: 1.依图配置PC1,PC2,PC3,PC4的IP,掩码, ...
- Git命令——提交、查看、后退、前进
Git常用命令 1. 命令git init把这个目录变成Git可以管理的仓库: 2. 命令git commit把文件提交到仓库 这里需要注意的是,Git只能跟踪文本文件的改动,如txt文件,网页,所有 ...
- springboot集成hibernate
package com.jxd.Boot.hibernate.dao.impl; import java.util.List; import javax.persistence.EntityManag ...
- Flask之路由相关
1.装饰器中的参数 @app.route("/info", methods=["GET", "POST"]) def student_inf ...