zoukankan      html  css  js  c++  java
  • OS + Linux nmon / nmon analyser / nmon_analyser_v52_1.zip

    s

    nmon_analyser_v52_1.zip

    https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/nmon_analyser

    nmon各文件详解

    https://blog.csdn.net/saraul/article/details/8570781

    nmon分析文件各sheet含义

    sheet名称
    sheet含义
    SYS_SUMM
    系统汇总,蓝线为cpu占有率变化情况,粉线为磁盘IO的变化情况;
    AAA
    关于操作系统以及nmon本身的一些信息;
    BBBB
    系统外挂存储容量以及存储类型;
    BBBC
    系统外挂存储位置、状态以及描述信息;
    BBBD
    磁盘适配器信息;(包含磁盘适配器名称以及描述)
    BBBE
    包含通过lsdev命令获取的系统设备及其特征,显示vpaths和hdisks之间的映射关系;
    BBBG
    显示磁盘组详细的映射关系;
    BBBL
    逻辑分区(LPAR)配置细节信息;
    BBBN
    网络适配器信息;
    BBBP
    vmtune,  schedtune, emstat和lsattr命令的输出信息;
    CPUnn
    显示执行之间内CPU占用情况,其中包含user%、sys%、wait%和idle%;
    CPU_ALL
    所有CPU概述,显示所有CPU平均占用情况,其中包含SMT状态;
    CPU_SUMM
    每一个CPU在执行时间内的占用情况,其中包含user%、sys%、wait%和idle%;
    DGBUSY
    磁盘组每个hdisk设备平均占用情况;
    DGREAD
    每个磁盘组的平均读情况;
    DGSIZE
    每个磁盘组的平均读写情况(块大小);
    DGWRITE
    每个磁盘组的平均写情况;
    DGXFER
    每个磁盘组的I/O每秒操作;
    DISKBSIZE
    执行时间内每个hdisk的传输块大小;
    DISKBUSY
    每个hdisk设备平均占用情况;
    DISKREAD
    每个hdisk的平均读情况;
    DISKWRITE
    每个hdisk的平均写情况;
    DISKXFER
    每个hdisk的I/O每秒操作;
    DISKSERV
    本sheet显示在每个收集间隔中hdisk的评估服务时间(未响应时间)
    DISK_SUMM
    总体disk读、写以及I/O操作;
    EMCBSIZE/FAStBSIZE
    执行时间内EMC存储的传输块大小;
    EMCBUSY/FAStBUSY
    EMC存储设备平均占用情况;
    EMCREAD/FAStREAD
    EMC存储的平均读情况;
    EMCWRITE/FAStWRITE
    EMC存储的平均写情况;
    EMCXFER/FAStXFER  
    EMCSERV/FAStSERV  
    ESSBSIZE
    本sheet记录在系统中每个vpaths下读写操作的平均数据传输大小  (blocksize) Kbytes
    ESSBUSY
    本sheet记录使用ESS系统的每个vpaths下的设备繁忙情况
    ESSREAD
    本sheet记录在系统中每个vpaths下读取操作的  data rate (Kbytes/sec)
    ESSWRITE
    本sheet记录在系统中每个vpaths下写入操作的  data rate (Kbytes/sec)
    ESSXFER
    本sheet记录在系统中每个vpaths下每秒的IO操作
    ESSSERV
    本sheet显示在每个收集间隔中vpaths的评估服务时间(未响应时间)
    FILE
    本sheet包含nmon内核内部的统计信息的一个子集,跟sar报告的值相同
    FRCA  
    IOADAPT
    对于BBBCsheet每个IO适配器列表,包含了数据传输速度为读取和写入操作(千字节/秒)和I  / O操作执行的总数量
    JFSFILE
    本sheet显示对于每一个文件系统中,在每个间隔区间正在被使用的空间百分比
    JFSINODE
    本sheet显示对于每一个文件系统中,在每个间隔区间正在被使用的inode百分比
    LARGEPAGE
    本图表显示Usedpages和Freepages随着时间的变化
    LPAR  
    MEM
    本sheet主图上显示空闲实存的数量
    MEMUSE
    除  %comp参数外,本sheet包含的所有项都和vmtune命令的报告中一样
    MEMNEW
    本sheet显示分配的内存片信息,分三大类:用户进程使用页,文件系统缓存,系统内核使用页
    NET
    本sheet显示系统中每个网络适配器的数据传输速率(千字节/秒)
    NETPACKET
    本sheet统计每个适配器网络读写包的数量;这个类似于netpmon  –O dd 命令
    NFS sheets  
    PAGE
    本sheet统计相关页信息的记录
    PROC
    本sheet包含nmon内核内部的统计信息。其中RunQueue和Swap-in域是使用的平均时间间隔,其他项的单位是比率/秒
    PROCAIO
    本sheet包含关于可用的和active的异步IO进程数量信息.
    TOP  
    UARG  
    WLM sheets  
    ZZZZ
    本sheet自动转换所有nmon的时间戳为现在真实的时间,方便更容易的分析

    https://www.cnblogs.com/scarlett-hy/p/9759901.html

    1.如何判断CPU、内存、磁盘的瓶颈?

    CPU瓶颈1) 查看CPU利用率。建议CPU指标如下

      a) User Time:65%~70%

      b) System Time:30%~35%

      c) Idle:0%~5%

      如果us,sy高于这个指标可以判断CPU有瓶颈

      使用top查看

      查看运行队列

      每个CPU都会维持一个运行队列,理想情况下,调度器会不断让队列中的进程运行。进程不是处在sleep状态就是run able状态。如果CPU过载,就会出现调度器跟不上系统的要求,导致可运行的进程会填满队列。队列愈大,程序执行时间就愈长。“load”用来表示运行队列,用top 命令我们可以看到CPU一分钟,5分钟和15分钟内的运行队列的大小。这个值越大表明系统负荷越大。超过 1.00,那么说明CPU已经超出负荷,交通严重的拥堵。

      使用top或者uptime查看

      查看上下文切换

      每个CPU(或多核CPU中每个核心)在同一时间只能执行一个线程,Linux采用抢占式调度。即为每个线程分配一定的执行时间,当到达执行时间,线程中有IO阻塞或高优先级线程要执行时,Linux将切换执行的线程,在切换时要存储目前线程的执行状态,并恢复要执行的线程状态,这个过程称之为上下文切换。对于java应用,典型的是在进行文件IO操作,网络IO操作,锁等待或线程sleep时,当前线程会进入阻塞或者休眠状态,从而触发上下文切换,上下文切换过多会造成内核占用过多的CPU使用,使得应用的响应速度下降。

      使用vmstat查看cs

    结论

    检查system的运行队列,以及确定不要超出每个处理器3个可运行状态线程的限制.

      确定CPU 利用率中user/system比例维持在70/30

      当CPU 开销更多的时间在system mode,那就说明已经超负荷并且应该尝试重新调度优先级

      当I/O 处理得到增长,CPU 范畴的应用处理将受到影响

      ps:对于JAVA应用,CPU瓶颈可以通过jprofiler监控分析

    内存瓶颈

      1.查看利用率(free)

      used:已使用多大。

      free:可用有多少。

      Shared:多个进程共享的内存总额。

      Buffers/cached:磁盘缓存的大小。

      2.查看页交换,swap交换(po,pi,so,si),磁盘IO(vmstat)

      si: 每秒从交换区写到内存的大小

      so: 每秒写入交换区的内存大小

      page in :分页(Page)从磁盘重新回到内存的过程被称作Page-In

      page out : 分页(Page)写入磁盘的过程被称作Page-Out

      另外在进行页交换的时候,会产生磁盘IO,还需注意bi,bo

      Bo 磁盘块页面从内存到文件或交换设备的总额

      Bi 磁盘块页面从文件或交换设备到内存的总额

      3.page fault(pidstat -r,sar -B )

      minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数

      majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生

      其中sar -B中fault/s表示每秒钟minflt,majflt的和。

    结论

      监控虚拟内存性能由以下几个部分组成:

      1.当系统中出现较少的页错误,获得最好的响应时间,是因为memory caches(译注:内存高速缓存)比disk caches更快(译注:磁盘高速缓存).

      2.较少的空闲内存,是件好事情,那意味着缓存的使用更有效率.除非在不断的写入swap device和disk.

      3.如果系统不断报告,swap device总是繁忙中,那就意味着内存已经不足,需要升级了.

      zee:

      如果用做缓冲区(buff)和快速缓存(Cache)的物理内存不断地增加,而空闲的物理内存(free)不断地减少,证明系统中运行的进程正在不断地消耗物理内存。

      已经使用的虚拟内存(swpd)不断增加,而且存在着大量的页面交换(si和so),证明物理内存已经不能满足系统需求,系统必须把物理内存的页面交换到磁盘中去。

      由此可以得到这样的结论:该主机上的物理内存已经不能满足系统运行的需要,内存已成为该系统性能的一个瓶颈。

      ps:对于java程序,内存瓶颈可以通过heap dump后使用mat分析

    磁盘瓶颈

      iostat查看IO信息。如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

      另外还需要注意iowait这个值,iowait 值高就意味着磁盘缓慢或负载过大。还有不要信任svctm这个字段。

      监控swap 和系统分区,要确保virtual memory不是文件系统I/O 的瓶颈.

      ps:磁盘瓶颈可以通过pidstat -d 定位程序

    2.如何理解CPU、内存、磁盘的关系?

      这些子系统之间关系是彼此联系,相互彼此依赖的

      1.对于进程来说,数据是存放在内存中的,进程的运行需要使用CPU,进程读写数据需要跟磁盘打交道。

      2.当内存不足时需要跟磁盘进行页(page)交换,swap交换,从而产生磁盘IO。po,so释放物理内存,pi,si增加物理内存使用。交换分页的过程需要占用cpu时间。 (内存占用过高)

      3.当磁盘IO负载过高时,需要监控swap和系统分区,要确保virtual memory不是文件系统I/O 的瓶颈。磁盘的相当慢的,当iowait 增长,表示CPU花费大量的时间在等待磁盘IO,此时CPU Bound的应用处理将受到影响(磁盘IO过高)

      3.如何理解paging in / paging out ?

      在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。

      分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。

      当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。经管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing(颠簸)。

      可以通过vmstat -s 查看 paged in/out 数量

      4.如何监控操作系统的资源?

      CPU监控:top(利用率), uptime(运行队列数), vmstat(上下文切换数), jprofile(方法占用cpu时间百分比)

      内存监控:top, free(利用率), vmstat(page和swap交换), pidstat -r和sar -B(page fault), jmap -heap(堆dump), mat和jprofiler(查看对象)

      磁盘监控:iostat(%util), top(iowait%), pidstat -d

      网络监控:netstat(连接数), nethogs(流量), wireshark和tcpdump(抓包)

      JVM监控:jstat(gc), jmap(堆dump), jstack(线程dump), jprofiler和visualvm(剖析工具)

      nmon(长时间全局收集数据)

      5.如何理解上下文切换(context switch)?

      每个CPU(或多核CPU中每个核心)在同一时间只能执行一个线程,Linux采用抢占式调度。即为每个线程分配一定的执行时间,当到达执行时间,线程中有IO阻塞或高优先级线程要执行时,Linux将切换执行的线程,在切换时要存储目前线程的执行状态,并恢复要执行的线程状态,这个过程称之为上下文切换。对于java应用,典型的是在进行文件IO操作,网络IO操作,锁等待或线程sleep时,当前线程会进入阻塞或者休眠状态,从而触发上下文切换,上下文切换过多会造成内核占用过多的CPU使用,使得应用的响应速度下降。

      vmstat其中cs那一列

      7.如何理解磁盘IO?

      磁盘IO速度是非常慢的,linux内核就是要尽量降低IO

      内存不足时会进行页交换,产生磁盘IO

      CPU Bound类型应用,当磁盘IO过多,iowait过大时会影响性能。

    end

  • 相关阅读:
    RCTF 2019 web
    php花式读取文件
    PHP审计基础
    《笼中鸟——精神病人的生存现状》观后的一点思考
    python一些小trick
    Appium+Python入门学习总结
    解决windows下 Python中 matplotlib 做图中文不显示的问题
    py3.5 telnet的实例(在远程机器上批量创建用户)
    关于pycharm的一个imoprt的随笔
    LookupError: unknown encoding: idna 的处理方法
  • 原文地址:https://www.cnblogs.com/lindows/p/9593080.html
Copyright © 2011-2022 走看看