目录

一:sar命令概述

1.1sar概述

1.2sar常用选项

1.3常用参数

二:CPU资源监控

2.1整体CPU使用统计(-u)

2.2各个CPU使用统计(-P)

2.3将CPU使用情况保存到文件中

三:内存监控

3.1内存和交换空间监控

3.2内存分页监控

3.3系统交换活动信息监控

四:I/O和传送速率监控与磁盘使用情况

4.1整体I/O情况(-b)

4.2各个I/O设备情况(-d)

五:进程长度和CPU平均负载状态监控

六:网络宽带监控

七:一些可能会用到的选项

八:压力测试实验

8.1测试cpu占用率

8.1.1测试前cpu数据

8.1.2安装stress并进行测试

8.1.3进行测试后的数据

8.2测试内存占用率

8.2.1测试前内存数据

8.2.2使用stress命令进行测试

8.2.3进行测试后的数据

8.3测试I/O与传输速率与磁盘使用情况

8.3.1测试前数据

8.3.2使用stress命令进行测试

8.3.3进行测试后的数据

8.4检测网络流量

8.4.1测试前的数据

8.4.2在另一台机器安装ab工具并进行测试

8.4.3进行测试后的数据

九:总结

前言:sar是一个Linux下的监控工具,一直站在鄙视链的顶端。但是往往因繁多的参数,让人望而生畏,不知道怎么使用。然而这么强大命令并非是无章可循,只要我们找到合适的切入点来分析这个工具,就会发现实际上是非常简单的


一:sar命令概述

#格式
sar -n DEV 1 5
-n:次数
DEV:类型参数
1:时间间隔
5:次数

1.1sar概述

sar命令很简单,它的参数主要分为四部分。其中,第二部分和第三、四部分,是可选的,也就是说,最终要的参数,就剩下一个,那就是选项。不带选项默认是-u。

1.选项,也就是我们要获取的是哪个类型的指标数据,这里的-n,代表的是监控一些网络信息

2.类型参数,有的类型带有参数,有的没有。这里的DEV,代表的是监控网卡信息

3.时间间隔,表示多少秒采样一次数据,这里的1就是1秒

4.次数,表示采样的次数。比如时间间隔是3,采样次数是4,那么sar命令将会阻塞12秒钟

1.2sar常用选项

选项 功能
-A 所有报告的总和
-u 输出CPU使用情况的统计信息
-v 输出inode、文件和其他内核表的统计信息
-d 输出每一个块设备的活动信息
-r 输出内存和交换空间的统计信息
-b 显示I/O和传送速率的统计信息
-a 文件读写情况
-c 输出进程统计信息,每秒创建的进程数
-R 输出内存页面的统计信息
-y 终端设备活动情况
-w 输出系统交换活动信息

1.3常用参数

默认监控: sar 1 1     //  CPU和IOWAIT统计状态

sar -b 1 1        // IO传送速率

sar -B 1 1        // 页交换速率

sar -C 1 1        // 进程创建的速率

sar -d 1 1        // 块设备的活跃信息

sar -n DEV 1 1    // 网路设备的状态信息

sar -n SOCK 1 1   // SOCK的使用情况

sar -n ALL 1 1    // 所有的网络状态信息

sar -P ALL 1 1    // 每颗CPU的使用状态信息和IOWAIT统计状态

sar -q 1 1        // 队列的长度(等待运行的进程数)和负载的状态

sar -r 1 1      // 内存和swap空间使用情况

sar -R 1 1       // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)

sar -u 1 1       // CPU的使用情况和IOWAIT信息(同默认监控)

sar -v 1 1       // inode, file and other kernel tablesd的状态信息

sar -w 1 1       // 每秒上下文交换的数目

sar -W 1 1       // SWAP交换的统计信息(监控状态同iostat 的si so)

 sar -y 1 1       // TTY设备的活动状态

sar -h           // 查看帮助


二:CPU资源监控

2.1整体CPU使用统计(-u)

使用-u选项,sar输出整体CPU的使用情况,不加选项时,默认使用的就是-u选项。以下命令显示采样时间为3s,采样次数为2次,整体CPU的使用情况:
sar 3 2 (或者 sar -u 1 3)

sar -u 1 3 或 sar 1 3  (1:每隔一秒刷新一次,3:刷新3次)

也可以使用 -p 查看全天

输出项 详细说明
CPU

all表示统计信息为所有CPU的平均值

%user 显示在用户级别(application)运行使用CPU总时间的百分比
%nice 改变过优先级的进程的CPU使用率
%system 内核空间的CPU使用率,在核心级别(kernel)运行使用CPU总时间的百分比
%iowait 显示用于等待I/O操作占用CPU总时间的百分比
%steal 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比
%idle 显示CPU空闲时间占用CPU总时间的百分比

在以上的显示当中,主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈

2.2各个CPU使用统计(-P)

sar -P ALL 1 1   #对每个内核输出统计信息sar -P 0 1 1     #显示第一个内核的统计信息

“-P ALL”选项指示对每个内核输出统计信息:

2.3将CPU使用情况保存到文件中

sar -u -o test 4 3
#每4秒采样1次,连续采样3次,将采样结果以二进制形式存入当前目录下的文件test中
sar -u -f test
#查看二进制文件的内容


三:内存监控

3.1内存和交换空间监控

使用-r选项可显示内存统计信息,以下命令显示以1秒为采样时间,显示3次内存信息:

sar -r 1 3 (1:每隔一秒刷新一次,3:刷3次)

输出项 详细说明
kbmemfree 这个值和free命令中的free值基本一致,所以不包括buffer和cache空间
kbmemused 这个值和free命令中的used值基本一致,所以包括buffer和cache的空间
%memused 这个值是kbmemused和内存总量(不包括swap)的一个百分比
kbbuffers和kbcached 这俩个值就是free命令中的buffer和cache
kbcommit 保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)
%commit 这个值是kbcommit与内存总量(包括swap)的一个百分比(可以看做内存使用量的百分比)

3.2内存分页监控

sar -B 5 3
#每5秒采样一次,连续采样3次,监控内存分页

输出项说明:

选项

说明

pgpgin/s

表示每秒从磁盘或SWAP置换到内存的字节数(KB)

pgpgout/s

表示每秒从内存置换到磁盘或SWAP的字节数(KB)

fault/s

每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)

majflt/s

每秒钟产生的主缺页数

pgfree/s

每秒被放入空闲队列中的页个数

pgscank/s

每秒被kswapd扫描的页个数

pgscand/s

每秒直接被扫描的页个数

pgsteal/s

每秒钟从cache中被清除来满足内存需要的页个数

%vmeff

每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

3.3系统交换活动信息监控

sar -w 1 3 (1:每秒上下文交换的数目,3:刷新三次)

pswpin/s

每秒系统换入的交换页面(swap page)数量

pswpout/s

每秒系统换出的交换页面(swap page)数量


四:I/O和传送速率监控与磁盘使用情况

sar的I/O和磁盘使用情况是有点重合的

4.1整体I/O情况(-b)

sar -b 1 3 (1:每隔一秒刷新一次,3:刷新3次)

输出项 详细说明
tps 每秒物理设备的I/O传输总量
rtps 每秒从物理设备读入的数据总量
%util 表示一秒中有百分之几的时间用于I/O操作
wtps 每秒向物理设备写入的数据总量
bread/s

每秒从物理设备读入的数据量,单位为块/s

bwrtn/s

每秒向物理设备写入的数据量,单位为块/s

4.2各个I/O设备情况(-d)

sar -d 1 3 (1:每隔一秒刷新一次,3:刷新3次)
sar -d -p 1 3  #-p可以以sdx的形式显示

参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0

选项

说明

rd_sec/s

每秒从设备读取的扇区数

wr_sec/s

每秒往设备写入的扇区数

avgrq-sz

发送给设备的请求的平均大小(以扇区为单位)

avgqu-sz

发送给设备的请求队列的平均长度

await

服务等待I/O请求的平均时间,包括请求队列等待时间 (单位毫秒)

svctm

设备处理I/O请求的平均时间,不包括请求队列等待时间 (单位毫秒)

%util

一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比

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

如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。

如果avgqu-sz比较大,也表示有大量io在等待


五:进程长度和CPU平均负载状态监控

sar -q 1 3      //1:每隔一秒刷新一次,3:总共刷新三次

输出项 详细说明
runq-sz 运行队列的长度(等待运行的进程数)
plist-sz 进程列表中进程(processes)和线程(threads)的数量
Idavg-1 最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除去核心数得出的平均值,5分钟和15分钟以此类推
Idavg-5 最后5分钟的CPU平均负载
Idavg-15 最后15分钟的CPU平均负载
blocked

六:网络宽带监控

sar -n DEV 1 3

sar命令使用-n选项可以汇报网络相关信息,可用的参数包括:DEV、EDEV、SOCK和FULL

IFACE

就是网络设备的名称

rxpck/s

每秒钟接收到的包数目

txpck/s

每秒钟发送出去的包数目

rxbyt/s

每秒钟接收到的字节数

txbyt/s

每秒钟发送出去的字节数

rxcmp/s

每秒钟接收到的压缩包数目

txcmp/s

每秒钟发送出去的压缩包数目

txmcst/s

每秒钟接收到的多播包的包数目

查看网络信息的参数还有很多,就不一一举例,毕竟大多数时候我们只和DEV打交道,这边我就把它举出来了。

DEV 网卡

EDEV 网卡 (错误)

NFS NFS 客户端

NFSD NFS 服务器

SOCK Sockets (套接字) (v4)

IP IP 流 (v4)

EIP IP 流 (v4) (错误)

ICMP ICMP 流 (v4)

EICMP ICMP 流 (v4) (错误)

TCP TCP 流 (v4)

ETCP TCP 流 (v4) (错误)

UDP UDP 流 (v4)

SOCK6 Sockets (套接字) (v6)

IP6 IP 流 (v6)

EIP6 IP 流 (v6) (错误)

ICMP6 ICMP 流 (v6)

EICMP6 ICMP 流 (v6) (错误)

UDP6 UDP 流 (v6)


七:一些可能会用到的选项

将结果输出到文件(-o)和读取记录信息(-f)

-f可以读取二级制存储的数据文件,所以我们也可以用它来读取之前的日志文件中的系统数据

监控indo、文件和其他内核监控

sar -v 1 3

dentunusd

目录高速缓存中未被使用的条目数量

file-nr

文件句柄(file handle)的使用数量

inode-nr

索引节点句柄(inode handle)的使用数量

pty-nr

使用的pty数量

内存分页监控:sar -B 1 3

pgpgin/s

表示每秒从磁盘或SWAP置换到内存的字节数(KB)

pgpgout/s

表示每秒从内存置换到磁盘或SWAP的字节数(KB)

fault/s

每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)

majflt/s

每秒钟产生的主缺页数

pgfree/s

每秒被放入空闲队列中的页个数

pgscank/s

每秒被kswapd扫描的页个数

pgscand/s

每秒直接被扫描的页个数

pgsteal/s

每秒钟从cache中被清除来满足内存需要的页个数

%vmeff

每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来

怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看

怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看

怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看


八:压力测试实验

8.1测试cpu占用率

8.1.1测试前cpu数据

8.1.2安装stress并进行测试

yum install epel-release -y
yum install stress -y

8.1.3进行测试后的数据

8.2测试内存占用率

8.2.1测试前内存数据

8.2.2使用stress命令进行测试

stress --vm 2 --vm-bytes 1G --vm-hang 100 --timeout 100s
开启2个进程分配内存,每次分配1GB内存,保持100秒后释放,100秒后退出

8.2.3进行测试后的数据

8.3测试I/O与传输速率与磁盘使用情况

8.3.1测试前数据

8.3.2使用stress命令进行测试

stress --io 15 --hdd 15 --timeout 600

8.3.3进行测试后的数据

8.4检测网络流量

8.4.1测试前的数据

8.4.2在另一台机器安装ab工具并进行测试

yum install httpd-tools -yab -n 40000 -c 1000 http://192.168.137.10/
-n指定并发数
-c指定并发次数
注意:网址后面一定要加上 / 斜杠结尾

8.4.3进行测试后的数据


九:总结

sar功能全面,可以统计很多系统数据

整体CPU使用统计;各个CPU使用统计;内存使用情况统计;整体I/O情况;各个I/O设备情况;网络统计

优化命令之sar——最牛命令相关推荐

  1. 【Shell牛客刷题系列】SHELL4 输出第5行的内容:回顾head、tail命令和sed、awk命令的使用

    该系列是基于牛客Shell题库,针对具体题目进行查漏补缺,学习相应的命令. 刷题链接:牛客题霸-Shell篇. 该系列文章都放到专栏下,专栏链接为:<专栏:Linux>.欢迎关注专栏~ 本 ...

  2. 空间杜宾模型-多种权重矩阵制作、空间相关性检验、SDM、SEM、SAR模型的命令、相关检验及其结果分析

    一.数据介绍 数据名称:[stata代码]空间杜宾模型相关检验及结果分析 数据说明:包含全面的空间计量步骤--多种权重矩阵制作.空间相关性检验.SDM.SEM.SAR模型的命令.相关检验及其结果分析. ...

  3. linux怎么配置命令模式,Linux几种命令模式

    原标题:Linux几种命令模式 必须掌握的几个Linux命令 我们为什么要学习Linux的命令? 初学者上手Linux系统会很懵.不管你是否安装了图形化界面,或者去网上找一些教程.或者一些Linux的 ...

  4. linux sftp命令连接数,linux记录sftp命令

    使用以下配置方法不需要配置chroot. 编辑sshd_config文件 vi /etc/ssh/sshd_config 增加: Subsystem sftp /usr/libexec/openssh ...

  5. 【Android 命令行工具】Android 命令行工具简介 ( 官方文档 | SDK 命令行工具 | SDK 构建工具 | SDK 平台工具 | 模拟器工具 | Jetifier 工具 )

    文章目录 一.官方文档 二.Android 命令行工具简介 1.SDK 命令行工具 2.SDK 构建工具 3.SDK 平台工具 4.模拟器工具 5.Jetifier 工具 一.官方文档 Android ...

  6. linux枯燥命令行下的“有趣命令”

    本文所有示例都使用Ubuntu Linux.文中描述命令行功能或许在你的Linux系统中是默认的. 有趣的Linux命令行功效 1. Linux"sl"命令行 尽管"sl ...

  7. Linux 命令(123)—— iostat 命令

    文章目录 1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 1.命令简介 iostat(IO statistics)命令被用于监视 CPU 和输入输出设备的使用情况.iostat 有一 ...

  8. linux环境下ps命令行,Linux系统ps命令详解:查看正在运行的进程

    ps命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息.ps命令有多种不同的使用方法,这常常给初学者带来困惑.在各种Linux论坛上,询问ps命令语法的帖子屡见不鲜,而出现这 ...

  9. 【信号处理】基于优化算法的 SAR 信号处理(Matlab代码实现)

    目录 1 概述 2 BP神经网络:通过反投影算法进行脉冲聚光灯 SAR 模拟和重建 3 通过距离堆叠算法进行脉冲聚光灯 SAR 模拟和重建​编辑 第9个图: ​ 4 通过 TDC 算法进行脉冲聚光灯 ...

最新文章

  1. TeamTalk源码分析之login_server
  2. java transaction cn,JAVA中如何用TRANSACTION来对数据库进行
  3. yumdownloader和 repotrack下载rpm包
  4. 读《白帽子讲Web安全》之安全意识篇(一)
  5. 在项目中寻找代码的坏味道(命名)
  6. python通过connect对象连接数据库对吗_Python连接数据库学习之DB-API详解
  7. 网络安全06_安装Windows XP_几个虚拟机能够相互ping通,并且能够ping通互联网114.114.114.114
  8. emlog-FLY主题模板1.4版本免费完全开源
  9. 使用位运算(与运算)代替%操作
  10. 郑继明等《数值分析》习题解答
  11. 微信小程序点击事件(bindtap)传递参数的方法
  12. 求职被问“你还有什么问题要问吗?”该怎么办?
  13. 关于php的外文论文,php毕业设计外文翻译--通过PHP访问MySQL(适用于毕业论文外文翻译+中英文对照).doc...
  14. 陈强教授《机器学习及R应用》课程 第十三章作业
  15. QFD修改工作流并重新发布中的问题
  16. 数仓工具—Hive实战之占比同比环比(10)
  17. MySQL索引的介绍和使用
  18. 抖音为什么这么火?抖音用户暴涨的秘密在哪?
  19. 用citespace对知网文献的关键词分析结果很少如何解决?
  20. js如何往数组Array中添加删除元素

热门文章

  1. html实现弹幕功能 简单的小功能
  2. bt服务器注册,『漫游』BT服务器 - 帮助
  3. 软磁磁芯材料的基本特性及常用磁性能参数
  4. vim/vi编辑器显示行号、自动缩进、点击鼠标即可移动光标设置
  5. 冻结网络pytorch
  6. dqn系列梳理_我梳理了乡村爱情和刘老根中的重要人物,发现赵本山真是宇宙中心...
  7. Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的分配地址
  8. 计算机期中考试试题,计算机期中考试试题附答案.doc
  9. 徐州有华为,转型“真办肆”
  10. 什么是命名空间,为什么要使用命名空间?