• 最近看到一大牛的分析报告,才知道笔者认识这4个命令是多么肤浅,其实要读懂内存的信息,是要一些功力的。
    1、top


     

    VIRT           虚拟内存总量,VIRT=SWAP+RES
    SWAP           使用的虚拟内存中被换出的大小
    RES            进程使用的、未被换出的物理内存大小
    SHR            共享内存大小,单位kb
    S              进程状态
    %MEM           进程使用的物理内存百分比
    %CPU           CPU时间占用百分比
    Mem:  191272k total    物理内存总量

    173656k used    使用的物理内存总量
    17616k free     空闲内存总量
    22052k buffers  用作内核缓存的内存量
    Swap: 192772k total    交换区总量
    0k used         使用的交换区总量
    192772k free    空闲交换区总量
    123988k cached缓冲的交换区总量。内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。

    2、free


     

    主要关注值
    Mem  物理内存统计
    total 物理内存总量。
    used 总计分配给缓存(包含buffers 与cache )使用的数量
    free 未被分配的内存
    shared   共享内存
    buffers  系统分配但未被使用的buffers 数量,两种主要Cache方式之一,针对磁盘块的读写:
    cached   系统分配但未被使用的cache 数量,两种主要Cache方式之一,针对文件inode的读写
    -/+buffers/cached 物理内存的缓存统计
    used    (第一行Mem值)used - buffers -cached  ,系统实际使用的内存总量
    free    (第一行Mem值)buffers + cached ,系统当前实际可用内存
    Mem 从操作系统层面分析,buffers cached是已分配的(已使用)内存
    -/+ buffers/cached  从应用程序层面分析,buffers cached是随时都可以拿来用的,而且是优先使用的
    Swap交换分区的使用情况

    3、vmstat


     

    r    表示运行队列, 值超过了CPU数目,就会出现CPU瓶颈。
    b    表示阻塞的进程
    swpd 虚拟内存已使用的大小,如果大于0,表示物理内存不足,注意程序内存泄露
    free 空闲的物理内存的大小
    buff
    cache直接记忆打开的文件,给文件做缓冲,Linux/Unix把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用
    si   每秒从磁盘读入虚拟内存的大小,值大于0,表示物理内存不够或者内存泄露
    so   每秒虚拟内存写入磁盘的大小,值大于0,表示物理内存不够或者内存泄露 www.it165.net
    bi   块设备每秒接收的块数量
    bo   块设备每秒发送的块数量
    in   每秒CPU的中断次数,包括时间中断
    cs   每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的
    us   用户CPU时间
    sy   系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁
    id   空闲 CPU时间
    wt   等待IOCPU时间

    4、iostat

    基本使用:

    iostat [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ inter-val [ count ] ]

    [-c]:输出cpu统计信息

    [-d]:输出磁盘统计信息 注:默认是两个都输出

    [-N]:根据device mapper也就是我们经常说的LVM来输出io信息

    [-n]:根据网络文件系统(NFS)输出io信息(kernel version> 2.6.17)

    [-h] :可读性更好的NFS统计信息

    [-k | -m]:以kb/s|mb/s代替原来的块/s

    [-t] :输出时打印收集信息时刻的时间 注:时间的打印格式和系统变量S_TIME_FORMAT相关

    [-V]:版本信息

    [-x]:输出拓展统计信息 注:在下面进行总结

    [-z]:复位磁盘输入/输出信息

    [device [...] | ALL]:设备列表

    [-p [device[...]|ALL]]:设备列表,但是这个会输出子设备的io信息。比如sdb的话,就会连sdb1、sdb2等等的分区信息一同输出

    [inter-val [count]]:inter-val是统计的时间间隔单位是s,count则是统计次数

    输出信息解读:

    基本cpu输出信息:

    %user:用户进程消耗cpu的比例

    %nice:用户进程优先级调整消耗的cpu比例

    %sys:系统内核消耗的cpu比例

    %iowait:等待磁盘io所消耗的cpu比例

    %idle:闲置cpu的比例(不包括等待磁盘io的s)

    基本device输出信息:

    Device:设备的名称

    Tps:设备上每秒的io传输(可能多个io被组成一个io)的次数

    Blk_read/s:每秒从设备读取block(kernel 2.4以上,block=512byte)的数量

    Blk_wrtn/s:每秒写到设备block(kernel 2.4以上,block=512byte)的数量

    Blk_read:间隔时间内,从设备读取总的block数量

    Blk_wrtn:间隔时间内,写到设备总的block数量

    注:激活-k|-m 选项,将变成kb_*或者MB_*

    -x选项拓展输出信息:

    rrqm/s:每秒进行merge(多个io的合并)读操作的数量

    wrqm/s:每秒进行merge(多个io的合并)写操作的数量

    r/s:每秒完成读io设备的次数

    w/s:每秒完成写io设备的次数

    rsec/s:每秒读扇区的次数

    wsec/s:每秒写扇区的次数 注:激活-k|-m 将变成rkb/s wkb/s | rmb/s wmb/s

    avgrq-sz:平均每次io设备的大小(以扇区为单位),因为有merge读或写,所以每次io大小需要计算

    avgqu-sz:平均I/O队列长度

    await:每次io设备的等待时间,也包括io服务时间(毫秒)。

    await的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。

Linux性能分析top iostat vmstat free的更多相关文章

  1. Linux性能分析Top

    前言 在实际开发中,有时候会收到一些服务的监控报警,比如CPU飙高,内存飙高等,这个时候,我们会登录到服务器上进行排查.本篇博客将涵盖这方面的知识:Linux性能工具. 一次线上问题排查模拟 背景:服 ...

  2. Linux性能监控top及vmstat命令

    监控的工具---top 第一行: 03:07:27 当前系统时间 3 days, 18:58 系统已经运行了3天18小时58分钟(在这期间没有重启过) 4 users load average: 0. ...

  3. 【转】一文掌握 Linux 性能分析之 I/O 篇

    [转]一文掌握 Linux 性能分析之 I/O 篇 这是 Linux 性能分析系列的第三篇,前两篇分别讲了 CPU 和 内存,本篇来看 IO. IO 和 存储密切相关,存储可以概括为磁盘,内存,缓存, ...

  4. 【原创】一文掌握 Linux 性能分析之 I/O 篇

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 一文掌握 Li ...

  5. Linux 性能分析工具汇总合集

    出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识, ...

  6. Linux性能分析的前60000毫秒【转】

    Linux性能分析的前60000毫秒 为了解决性能问题,你登入了一台Linux服务器,在最开始的一分钟内需要查看什么? 在Netflix我们有一个庞大的EC2 Linux集群,还有非常多的性能分析工具 ...

  7. [转]Linux性能分析工具汇总合集

    出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识, ...

  8. 超全整理!Linux性能分析工具汇总合集

    转自:http://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章. ...

  9. (转)超全整理!Linux性能分析工具汇总合集

    超全整理!Linux性能分析工具汇总合集 原文:http://rdc.hundsun.com/portal/article/731.html 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望, ...

随机推荐

  1. 18-spring学习-AOP深入操作

    范例:定义一个参数拦截 package com.Spring.aop; import org.springframework.stereotype.Component; @Component publ ...

  2. 多对多关系数据库表 java描述

    多对多关系 需要建立一张新表存放它们的对应数据 sql语句 create table teacher( id int primary key, name ), ,) ); create table s ...

  3. 对Ubuntu操作系统进行彻底优化

    在安装Linux系统之初,就应该考虑怎样使Linux系统得到最好的性能.Linux本身也设计成可以良好扩展的形态,比如在Linux系统中,我们可以随心所欲地组织磁盘分区,有些朋友喜欢一个/,一个swa ...

  4. 超级干货,python常用函数大总结

    我们在学习python的时候,接触最多的往往则是那些函数,对于python函数,在这里为大家总结归纳了这些,如果有缺漏,还请及时留言指正哦! 话不多说,干货来袭! 1.常用内置函数:(不用import ...

  5. jQuery开发插件的两种方式

    最近挺多人写jQuery的,都是关于jQuery扩展方面的,使用方面的讲的比较多,但是关于详细的一个基础的过程讲的比较少一点,做web开发的基本上都会用到jQuery,本人就根据jQuery的使用经验 ...

  6. 摘: VS2010 C++ 调用 DLL (C++编写)

    一.为什么需要dll 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用. 比较常见的例子是各种应用程序框架,如ATL. ...

  7. Linux平台上实现队列

    转载: http://my.oschina.net/sundq/blog/203600 Linux上目前有两种事件通知方式,一种是线程条件变量,一种是利用eventfd实现事件通知,下面介绍一下利用这 ...

  8. 设置CentOS控制台分辨率图文详解

    最小化安装CentOS,默认是没有图形界面的,这个正合我意.但是命令行界面很小,会有很多输出被迫换行写,影响美观. 那么,怎样调整终端分辨率呢 解决方案:修改引导程序配置 /boot/grub/gru ...

  9. CXF 入门:创建一个基于SOAPHeader的安全验证(CXF拦截器使用)

    CXF拦截器使用,创建一个使用SOAPHeader的安全验证xml格式: <soap:Header> <auth:authentication xmlns:auth="ht ...

  10. sensor dma alloc failed问题

    打印信息 [CAPTURE][printCapCapbility:93]:D/ driver:sunxi-vfe [CAPTURE][printCapCapbility:94]:D/ card:sun ...