监控的工具---top

第一行:

  1. 03:07:27 当前系统时间
  2. 3 days, 18:58 系统已经运行了3天18小时58分钟(在这期间没有重启过)
  3. 4 users
  4. load average: 0.00, 0.00, 0.00

  Load这个东西怎么理解呢,就像一条马路,有N个车道,如果N个进程进入车道,那么正好一人一个,再多一辆车就占不到车道,要等有一个车空出车道。 在CPU中可以理解为CPU可以并行处理的任务数,那么就是“CPU个数 * 核数”,如果CPU Load = CPU个数 * 核数 那么就是说CPU正好满负载,再多一点,可能就要出问题了,有任务不能被及时分配处理器,那么保证性能的话,最好是小于CPU个数 * 核数 *0.7。

  Load Average是 CPU的 Load,它所包含的信息不是 CPU的使用率状况,而是在一段时间内 CPU正在处理以及等待 CPU处理的进程数之和的统计信息,也就是 CPU使用队列的长度的统计信息

Load Average < CPU个数 * 核数 *0.7

  使用 vmstat 看到的数据中也有这个数据,vmstat 查看r(Load Average)

第二行:

Tasks 任务(进程),系统现在共有108个进程,其中处于运行中的有2个,105个在休眠(sleep),stoped状态的有1个,zombie状态(僵尸)的有0个。

第三行:CPU状态

  1. 0.0% us 用户空间占用CPU的百分比。
  2. 0.0% sy 内核空间占用CPU的百分比。
  3. 0.0% ni 改变过优先级的进程占用CPU的百分比
  4. 99.7% id 空闲CPU百分比
  5. 0.3% wa IO等待占用CPU的百分比
  6. 0.0% hi 硬中断(Hardware IRQ)占用CPU的百分比
  7. 0.0% si 软中断(Software Interrupts)占用CPU的百分比

第四行:内存状态

  1. 1035660k total 物理内存总量(1GB)
  2. 1025928k used 使用中的内存总量(0.9GB)
  3. 9732k free 空闲内存总量(9M)
  4. 37784k buffers 缓存的内存量 (3.5M)

第五行:swap交换分区

  1. 2048276k total 交换区总量(2GB)
  2. 52576k used 使用的交换区总量(50M)
  3. 1995700k free 空闲交换区总量(1.9GB)
  4. 756448k cached 缓冲的交换区总量(750M)

  第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少。

  可用内存的近似计算公式=第四行的free + 第四行的buffers + 第五行的cached

  第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

第七行以下:各进程(任务)的状态监控

  1. PID 进程id
  2. USER 进程所有者
  3. PR 进程优先级
  4. NI nice值。负值表示高优先级,正值表示低优先级
  5. VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
  6. RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
  7. SHR 共享内存大小,单位kb
  8. S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
  9. %CPU 上次更新到现在的CPU时间占用百分比
  10. %MEM 进程使用的物理内存百分比
  11. TIME+ 进程使用的CPU时间总计,单位1/100秒
  12. COMMAND 进程名称(命令名/命令行)

  按键盘数字1,可监控每个逻辑CPU的状况

监控的工具---vmstat

vmstat--CPU相关参数介绍:

  1. r,可运行队列的线程数,这些线程都是可运行状态,有多数的进程等待CPU;
  2. b,被 blocked 的进程数,正在等待 IO 请求;
  3. in,被处理过的中断数
  4. cs,系统上正在做上下文切换的数目
  5. us,用户占用 CPU 的百分比
  6. sys,内核和中断占用 CPU 的百分比
  7. wa,所有可运行的线程被 blocked 以后都在等待 IO,这时候 CPU 空闲的百分比
  8. id,CPU 完全空闲的百分比

vmstat--内存参数说明:

  1. swpd,已使用的 SWAP 空间大小,KB 为单位;
  2. free,可用的物理内存大小,KB 为单位;
  3. buff,物理内存用来缓存读写操作的 buffer 大小,KB 为单位;
  4. cache,物理内存用来缓存进程地址空间的 cache 大小,KB 为单位;
  5. si,数据从 SWAP 读取到 RAM(swap in)的大小,KB 为单位;
  6. so,数据从 RAM 写到 SWAP(swap out)的大小,KB 为单位;
  7. bi,磁盘块从文件系统或 SWAP 读取到 RAM(blocks in)的大小,block 为单位;
  8. bo,磁盘块从 RAM 写到文件系统或 SWAP(blocks out)的大小,block 为单位;

  不同的系统用途也不同,要找到性能瓶颈需要知道系统跑的是什么应用、有些什么特点,比如 webserver 对系统的要求肯定和 file server 不一样,所以分清不同系统的应用类型很重要,通常应用可以分为两种类型:

①IO 相关,IO 相关的应用通常用来处理大量数据,需要大量内存和存储,频繁 IO 操作读写数据,而对CPU 的要求则较少,大部分时候 CPU 都在等待硬盘,比如,数据库服务器、文件服务器等。
②CPU 相关,CPU 相关的应用需要使用大量 CPU,比如高并发的 web/mail 服务器、图像/视频处理、科学计算等都可被视作 CPU 相关的应用。

看看实际中的例子,第1个是文件服务器拷贝一个大文件时表现出来的特征:

第2个是 CPU 做大量计算时表现出来的特征:

第一个示例:id 在50%左右,说明cpu比较空闲;bi,bo的值较大说明瓶颈在IO上

第二个示例:r为4(= CPU个数 * 核数),id 为0,说明cpu处于繁忙状态;bi,bo的值较小

Linux性能监控top及vmstat命令的更多相关文章

  1. Linux 性能监控的18个命令行工具

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐 认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我 ...

  2. Linux性能分析top iostat vmstat free

    最近看到一大牛的分析报告,才知道笔者认识这4个命令是多么肤浅,其实要读懂内存的信息,是要一些功力的.1.top   VIRT           虚拟内存总量,VIRT=SWAP+RESSWAP    ...

  3. Linux性能监控

    转自:http://blog.csdn.net/chosen0ne/article/details/8200737 linux性能监控,就是要监控系统的各个子系统是否正常.linux主要的子系统包括: ...

  4. 性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具

    性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在popte ...

  5. Linux 性能监控之CPU&内存&I/O监控Shell脚本2

    Linux 性能监控之CPU&内存&I/O监控Shell脚本2   by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...

  6. Linux性能监控与分析之--- CPU

    Linux性能监控与分析之--- CPU 望月成三人关注 2016.07.25 18:16:12字数 1,576阅读 2,837 CPU性能指标 用户进程使用CPU的比率 系统进程使用CPU的比率 W ...

  7. Linux 性能监控之CPU&内存&I/O监控Shell脚本1

    Linux 性能监控之CPU&内存&I/O监控Shell脚本1   by:授客 QQ:1033553122   #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`if ...

  8. linux性能监控 -CPU、Memory、IO、Network等指标的讲解

    [操作系统-linux]linux性能监控 -CPU.Memory.IO.Network等指标的讲解(转) 一.CPU 1.良好状态指标 CPU利用率:User Time <= 70%,Syst ...

  9. Linux性能监控分析命令(四)—top命令介绍

    性能监控分析的命令包括如下: 1.vmstat 2.sar 3.iostat 4.top 5.free 6.uptime 7.netstat 8.ps 9.strace 10.lsof ======= ...

随机推荐

  1. 通用链表实现(参考Linux List)

    最近参考Linux实现的通用双向链表时,因typeof并不是标准c规定的关键字,除GCC编译器外其他编译器未必支持typeof关键字,所以在使用上并不能想Linux所实现的链表哪样灵活,它要求将连接器 ...

  2. MySQL中/*!40100注释

    MySQL中的注释 MySQL中的注释有三种: # 注释内容 -- 注释内容 /* 注释内容*/ 但是,在导出的SQL文件中,也会看到类似如下内容的注释: CREATE DATABASE `blog` ...

  3. 一道简单的动态规划题目——House Robber

    一.题目 House Robber(一道Leetcode上的关于动态规划的简单题目)具体描述如下: There is a professional robber planning to rob hou ...

  4. vmware workstation 网络管理

    其实在VMware Workstation下的网络管理是一个比较复杂的东西,如果你不是很了解他的网络,也许你的实验的时候,尤其是涉及到NAT转换.路由等问题的时候,你可能不知道从哪里下手,这时候你可能 ...

  5. ORACLE之表

    本文章中的表在以后的例子中会用到. 首先有t_fn_person和t_fn_dept表. ) primary key not null, person_code ) not null, person_ ...

  6. MongoDB - The mongo Shell, Access the mongo Shell Help

    In addition to the documentation in the MongoDB Manual, the mongo shell provides some additional inf ...

  7. 【转载】看懂SqlServer查询计划

    看懂SqlServer查询计划 阅读目录 开始 SQL Server 查找记录的方法 SQL Server Join 方式 更具体执行过程 索引统计信息:查询计划的选择依据 优化视图查询 推荐阅读-M ...

  8. Android ListView动态改变Item高度

    在adapter的getView方法中进行设置,代码如下 @Override public View getView(int position, View convertView, ViewGroup ...

  9. Part 17 Temporary tables in SQL Server

    Temporary tables in SQL Server

  10. MVC4 图片上传

    新增 new { enctype = "multipart/form-data" } 这个必须要有 @using (Html.BeginForm(Html.BeginForm(&q ...