sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以

从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、

进程活动及IPC有关的活动等。本文主要以CentOS 6.3 x64系统为例,介绍sar命令。

格式

sar [options] [-A] [-o file] t [n]

参数 说明
t 为采样间隔,默认是秒
n 为采样次数,默认是1
-o file 表示将命令结果以二进制格式存放在文件中,file是文件名
-A 所有报告的总和
-u 输出CPU使用情况的统计信息
-v 输出inode,文件和其他内核表的统计信息
-d 输出每一个块设备的活动信息
-r 输出内存和交换空间的统计信息
-b 显示I/O和传送速率的统计信息
-a 文件读写情况
-c 输出进程统计信息,每秒创建的进程数
-R 输出内存页面的统计信息
-y 终端设备活动情况
-w 输出系统交换活动信息

CPU 资源监控

sar -u  -o test 8 4
Linux 2.6.32-358.el6.x86_64 (nagios_s1) 11/12/15 _x86_64_ (1 CPU) 16:07:18 CPU %user %nice %system %iowait %steal %idle
16:07:26 all 0.00 0.00 0.00 0.00 0.00 100.00
16:07:34 all 0.00 0.00 0.00 0.00 0.00 100.00
16:07:42 all 0.00 0.00 0.00 0.00 0.00 100.00
16:07:50 all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.00 0.00 0.00 100.00 %user : 显示在用户级别(application)运行使用CPU总时间的百分比。
%nice : 显示在用户级别,用于nice操作(进程优先级切换),所占用CPU总时间的百分比
%system : 在核心级别(kernel) 运行所使用CPU总时间的百分比。
%iowait : 显示用于等待I/O操作占用CPU总时间的百分比。
%steal : 管理程序(hypervisor)为另一虚拟进程提供服务而等待虚拟CPU的百分比。
%idle : 显示CPU空闲时间占用CPU总时间的百分比。

1.若 %iowait 的值过高,表示硬盘存在I/O瓶颈

2.若 %idle 高但是系统响应慢时,可能是CPU等待分配内存,此时应加大内存容量

3.若 %idle 的值持续低于1,则系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

如果要查看二进制文件 test 中的内容,需键入如下sar命令:

sar -u -f test


监控inode、文件和其他内核表

sar -v 8 4
Linux 2.6.32-358.el6.x86_64 (nagios_s1) 11/12/15 _x86_64_ (1 CPU) 16:32:40 dentunusd file-nr inode-nr pty-nr
16:32:48 5296 288 7672 2
16:32:56 5296 288 7672 2
16:33:04 5296 288 7672 2
16:33:12 5296 288 7672 2
Average: 5296 288 7672 2 dentunusd : 目录高速缓存中未被使用的条目数量
file-nr : 文件句柄(file handle) 的使用数量
inode-nr : 索引节点句柄(inode handle) 的使用数量
pty-nr : 使用的pty数量

监控内存和交换空间

sar -r 8 4
Linux 2.6.32-358.el6.x86_64 (nagios_s1) 11/12/15 _x86_64_ (1 CPU) 16:41:15 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
16:41:23 301116 200320 39.95 10688 147824 56648 2.77
16:41:31 301116 200320 39.95 10688 147824 56648 2.77
16:41:39 301116 200320 39.95 10688 147824 56648 2.77
16:41:47 301116 200320 39.95 10688 147824 56648 2.77
Average: 301116 200320 39.95 10688 147824 56648 2.77 -r Report memory utilization statistics. The following values are displayed: kbmemfree : 这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
kbmemused : 这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
%memused : 这个值是kbmemused和内存总量(不包括swap)的一个百分比.
kbbuffers :这个值就是free命令中的buffer.
kbcached :这个值就是free命令中的cache.
kbcommit :保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
%commit :这个值是kbcommit与内存总量(包括swap)的一个百分比.

内存分页监控

sar -B 8 4
Linux 2.6.32-358.el6.x86_64 (nagios_s1) 11/13/15 _x86_64_ (1 CPU) 11:08:48 pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
11:08:56 0.00 0.00 4.25 0.00 9.25 0.00 0.00 0.00 0.00
11:09:04 0.00 0.00 5.25 0.00 10.75 0.00 0.00 0.00 0.00
11:09:12 0.00 0.00 3.75 0.00 8.89 0.00 0.00 0.00 0.00
11:09:20 0.00 0.00 3.75 0.00 10.11 0.00 0.00 0.00 0.00
Average: 0.00 0.00 4.25 0.00 9.75 0.00 0.00 0.00 0.00 Report paging statistics. The following values are displayed: pgpgin/s: 表示每秒从磁盘或SWAP置换到内存的字节数(KB)
pgpgout/s: 表示每秒从内存置换到磁盘或SWAP的字节数(KB)
fault/s: 每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
majflts/s: 每秒钟产生的主缺页数
pgfree/s: 每秒被放入空闲队列中的页个数
pgscank/s: 每秒被kswapd扫描的页个数
pgscand/s: 每秒直接被扫描的页个数
pgsteal/s: 每秒钟从cache中被清除来满足内存需要的页个数
%vmeff: 每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

什么是缺页

当CPU请求一个不在RAM中的内存页时,会发生缺页,比如我们从内存读取/写入数据,而数据未在内存,此时都会发生缺页.

major表示主缺页,主缺页是要求输入/输出到磁盘的缺页.

minor表示次缺页,次缺页是任何其它的缺页.


I/O和传送速率监控

 sar -b 8 4
Linux 2.6.18-308.el5xen (tlsgzsit01) 11/13/2015 12:04:30 PM tps rtps wtps bread/s bwrtn/s
12:04:38 PM 10.92 0.00 10.92 0.00 116.44
12:04:46 PM 1.75 0.00 1.75 0.00 53.13
12:04:54 PM 2.23 0.00 2.23 0.00 61.46
12:05:02 PM 1.25 0.00 1.25 0.00 24.94
Average: 4.03 0.00 4.03 0.00 63.92 tps : 每秒钟物理设备的 I/O 传输总量
rtps : 每秒钟从物理设备读入的数据总量
wtps : 每秒钟向物理设备写入的数据总量
bread/s : 每秒中从物理设备读入的数据量,单位为 块/s
bwrtn/s : 每秒中从物理设备写入的数据量,单位为 块/s

查看运行队列中的进程数、系统上的进程大小、平均负载等

sar 与其它命令相比,它能查看各项指标随时间变化的情况;

sar -q
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 11/02/2017 _x86_64_ (2 CPU) 12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
12:10:01 AM 0 150 0.00 0.01 0.05 0
12:20:01 AM 0 150 0.00 0.01 0.05 0
12:30:01 AM 2 150 0.00 0.01 0.05 0
12:40:01 AM 0 150 0.00 0.01 0.05 0
12:50:01 AM 0 150 0.00 0.01 0.05 0
01:00:01 AM 1 150 0.00 0.01 0.05 0
01:10:01 AM 1 150 0.00 0.01 0.05 0
01:20:01 AM 0 150 0.00 0.01 0.05 0
01:30:01 AM 0 150 0.00 0.01 0.05 0
01:40:01 AM 1 150 0.00 0.01 0.05 0
01:50:01 AM 1 150 0.00 0.01 0.05 0
02:00:01 AM 0 150 0.00 0.01 0.05 0
02:10:01 AM 0 150 0.00 0.01 0.05 0
02:20:01 AM 0 150 0.00 0.01 0.05 0
02:30:01 AM 0 150 0.00 0.01 0.05 0 runq-sz:运行队列的长度(等待运行的进程数)
plist-sz:进程列表中进程(processes)和线程(threads)的数量
ldavg-1:最后1分钟的系统平均负载
ldavg-5:过去5分钟的系统平均负载
ldavg-15:过去15分钟的系统平均负载

Linux 系统性能分析工具 sar的更多相关文章

  1. (转)Linux 系统性能分析工具图解读(一、二)

    Linux 系统性能分析工具图解读(一.二) 原文:http://oilbeater.com/linux/2014/09/08/linux-performance-tools.html 最近看了 Br ...

  2. Linux系统性能分析工具 sar--系统活动情况报告

    1.结论: sar 命令是linux系统上,分析系统性能的常用工具,可以查看cpu.内存.磁盘IO.文件读写.系统调用, 2.sar会有一个定时任务,定期记录当前系统信息到  /var/log/sa/ ...

  3. Linux系统性能分析工具

    1.  uptime 2.  htop 3. mpstat 4 . iostat 5. dstat 6. netstat 7. tcpdump 8. sar

  4. sar 找出系统瓶颈的利器 目前Linux上最为全面的系统性能分析工具之一 直接 sar -dur 1 30 即可看内存 CPU和IO占用

    12. sar 找出系统瓶颈的利器 sar是System Activity Reporter(系统活动情况报告)的缩写.sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行 ...

  5. Linux系统性能分析

    http://c.biancheng.net/cpp/html/2782.htmlLinux系统性能分析 这篇教程的目的是向大家介绍一些免费的系统性能分析工具(命令),使用这些工具可以监控系统资源使用 ...

  6. Linux系统性能统计工具Sar和实时系统性能监控脚本

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情 ...

  7. 【转】Linux系统性能分析命令

    作为一名linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行,但是由于硬件问题.软件问题.网络环境等的复杂性和多变性,导致对系统的优化变得异常复杂,如何定位性能问题出在哪个 ...

  8. [Linux 性能检测工具]SAR

    SAR NAME: SAR报告,收集,保存系统活动信息 语法: sar  [ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -i interval ] [ -m ...

  9. 8.perf top系统性能分析工具

    perf 是一个调查 Linux 中各种性能问题的有力工具. # perf --help  usage: perf [--version] [--help] COMMAND [ARGS]  The m ...

随机推荐

  1. MySQL优化--NOT EXISTS和LEFT JOIN方式差异

    在MySQL中,我们可以将NOT EXISTS语句转换为LEFT JOIN语句来进行优化,哪为什么会有性能提升呢? 使用NOT EXISTS方式SQL为: ) FROM t_monitor m WHE ...

  2. PHP 生成验证码(+图片没有显示的解决办法)

    今天有需要用到验证码,就敲了个,毕竟用途比较广,所以打算把代码留下来,以后肯定用得上的.当然,今天在做的时候也是有一些问题的,分享出来吧,记录自己所犯的错误,避免以后再掉坑里. 先给个效果图(下面的真 ...

  3. Mac 视频录制然后转 gif

    https://gist.github.com/dergachev/4627207 用 ScreenShot 或 Quicktime Player 录制视频, 保存位 in.mov ffmpeg -i ...

  4. Android数据存储之SQLite使用

    SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎.它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行. 在Android中创建的SQLite数据库存储在:/d ...

  5. U-boot中SPL功能和源码流程分析

    在U-boot目录下,有个比较重要的目录就是SPL的,SPL到底是什么呢?为什么要用它呢? SPL(Secondary programloader)是uboot第一阶段执行的代码.主要负责搬移uboo ...

  6. Spark SQL 性能优化再进一步:CBO 基于代价的优化

    摘要: 本文将介绍 CBO,它充分考虑了数据本身的特点(如大小.分布)以及操作算子的特点(中间结果集的分布及大小)及代价,从而更好的选择执行代价最小的物理执行计划,即 SparkPlan. Spark ...

  7. 如何从GitHub仓库clone项目

    自己也已经多次接触了git了,但是因为工作用svn,自己平时也很少用git,所以每次都是用的时候可能还可以,等过一段时间再来用的时候,就又忘得差不多了,所以索性自己写个博客,自己记得自己也好懂,而且熟 ...

  8. C语言第五讲,语句 顺序循环选择.

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  9. Storm 入门教程

    在这个教程中,你将学会如何创建 Storm 的topology并将他们部署到 Storm 集群上, 主要的语言是 Java,但是少数几个例子用 Python 编写来说明 Storm 的多语言支持能力. ...

  10. 【awesome-dotnet-core-learning】(3)-Bogus-假数据生成器

    [awesome-dotnet-core-learning](3)-Bogus-假数据生成器 简介 Bogus一个简单而强大的假数据生成器,用于C#,F#和VB.NET.从著名的faker.js移植过 ...