关于Linux中shell 等知识的一些笔记(关于Linux中卸载分区,下面描述正确的是)
900
2022-05-29
使用 sar,您可以实时监控各种 linux 子系统(CPU、内存、I/O..)的性能,还可以持续收集所有性能数据、存储它们并进行历史分析以识别瓶颈。
Sar 是 sysstat 包的一部分。
本文解释了如何安装和配置 sysstat 包(其中包含 sar 实用程序),并解释了如何使用 sar 监控以下 Linux 性能统计信息。
集体 CPU 使用率
单个 CPU 统计信息
已使用和可用的内存
已使用和可用的交换空间
系统的整体 I/O 活动
单个设备 I/O 活动
上下文切换统计
运行队列并加载平均数据
网络统计
报告特定时间的sar数据
这是 sar 实用程序所需的唯一指南。因此,请将此添加为书签以供您将来参考。
一、安装配置Sysstat
安装 Sysstat 包
首先,确保您的系统上有最新版本的 sar。根据您的发行版,使用以下任何一种方法安装它。
sudo apt-get install sysstat (or) yum install sysstat (or) rpm -ivh sysstat-10.0.0-1.i586.rpm
从源安装 Sysstat
从sysstat 下载页面下载最新版本。
您也可以使用 wget 下载
wget http://pagesperso-orange.fr/sebastien.godard/sysstat-10.0.0.tar.bz2 tar xvfj sysstat-10.0.0.tar.bz2 cd sysstat-10.0.0 ./configure --enable-install-cron
注意:确保传递选项 –enable-install-cron。这会自动为您执行以下操作。如果您不使用此选项配置 sysstat,则必须自己手动完成这项丑陋的工作。
创建 /etc/rc.d/init.d/sysstat
创建从 /etc/rc.d/rc*.d/ 目录到 /etc/rc.d/init.d/sysstat 的适当链接,以在 Linux 引导过程中自动启动 sysstat。
例如,/etc/rc.d/rc3.d/S01sysstat 会自动链接到 /etc/rc.d/init.d/sysstat
在 ./configure 之后,如下图所示进行安装。
make make install
注意:这将在 /usr/local/bin 下安装 sar 和其他 sysstat 实用程序
安装后,使用“sar -V”验证 sar 版本。版本 10 是 sysstat 的当前稳定版本。
$ sar -V sysstat version 10.0.0 (C) Sebastien Godard (sysstat orange.fr)
最后,确保 sar 有效。例如,下面给出系统 CPU 统计 3 次(间隔 1 秒)。
$ sar 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:27:32 PM CPU %user %nice %system %iowait %steal %idle 01:27:33 PM all 0.00 0.00 0.00 0.00 0.00 100.00 01:27:34 PM all 0.25 0.00 0.25 0.00 0.00 99.50 01:27:35 PM all 0.75 0.00 0.25 0.00 0.00 99.00 Average: all 0.33 0.00 0.17 0.00 0.00 99.50
Sysstat 的实用程序部分
以下是其他 sysstat 实用程序。
sar收集并显示所有系统活动统计信息。
sadc代表“系统活动数据收集器”。这是进行数据收集的 sar 后端工具。
sa1将系统活动存储在二进制数据文件中。为此目的,sa1 依赖于 sadc。sa1 从 cron 运行。
sa2创建收集的统计信息的每日摘要。sa2 从 cron 运行。
sadf可以生成 CSV、XML 和各种其他格式的 sar 报告。使用它来将 sar 数据与其他工具集成。
iostat生成 CPU、I/O 统计信息
mpstat显示 CPU 统计信息。
pidstat根据进程 ID (PID) 报告统计信息
nfsiostat显示 NFS I/O 统计信息。
cifsiostat生成 CIFS 统计信息。
本文重点介绍 sysstat 基础知识和 sar 实用程序。
使用 cron 作业 - sa1 和 sa2 收集 sar 统计信息
在 /etc/cron.d 目录下创建 sysstat 文件,该文件将收集历史 sar 数据。
# vi /etc/cron.d/sysstat */10 * * * * root /usr/local/lib/sa/sa1 1 1 53 23 * * * root /usr/local/lib/sa/sa2 -A
如果您从源代码安装了 sysstat,则 sa1 和 sa2 的默认位置是 /usr/local/lib/sa。如果您使用发行版更新方法(例如:yum、up2date 或 apt-get)进行安装,则可能是 /usr/lib/sa/sa1 和 /usr/lib/sa/sa2。
注意:要了解 cron 条目,请阅读Linux Crontab: 15 Awesome Cron Job Examples。
/usr/local/lib/sa/sa1
这每 10 分钟运行一次,并收集 sar 数据以供历史参考。
如果要每 5 分钟收集一次 sar 统计信息,请将上述 /etc/cron.d/sysstat 文件中的 */10 更改为 */5。
这会将数据写入 /var/log/sa/saXX 文件。XX 是一个月中的某一天。saXX 文件是一个二进制文件。您无法通过在文本编辑器中打开它来查看其内容。
例如,如果今天是该月的第 26 天,sa1 将 sar 数据写入 /var/log/sa/sa26
您可以将两个参数传递给 sa1:间隔(以秒为单位)和计数。
在上面的 crontab 示例中:sa1 1 1 表示 sa1 以 1 秒的间隔(每 10 分钟)收集 sar 数据 1 次。
/usr/local/lib/sa/sa2
这将在接近午夜(23:53)运行,以创建 sar 数据的每日摘要报告。
sa2 创建 /var/log/sa/sarXX 文件(请注意,这与 sa1 创建的 saXX 文件不同)。sa2 创建的这个 sarXX 文件是一个 ascii 文件,您可以在文本编辑器中查看它。
这也将删除超过一周的 saXX 文件。因此,编写一个每周运行的快速 shell 脚本,将 /var/log/sa/* 文件复制到其他目录以进行历史 sar 数据分析。
二、10 个实用的 Sar 用法示例
有两种调用 sar 的方法。
sar 后跟一个选项(不指定 saXX 数据文件)。这将查找当天的 saXX 数据文件并报告在当天该点之前记录的性能数据。
sar 后跟一个选项,并使用 -f 选项另外指定一个 saXX 数据文件。这将报告该特定日期的性能数据。即 XX 是一个月中的哪一天。
在下面的所有示例中,我们将解释如何查看当天的某些性能数据。要查找特定日期,请在 sar 命令末尾添加“-f /var/log/sa/saXX”。
所有 sar 命令将在其输出中的第一行包含以下内容。
$ sar -u Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU)
Linux 2.6.18-194.el5PAE – 系统的 Linux 内核版本。
(dev-db) – 收集 sar 数据的主机名。
2011 年 3 月 26 日 – 收集 sar 数据的日期。
_i686_ – 系统架构
(8 CPU) – 此系统上可用的 CPU 数量。在多核系统上,这表示内核总数。
1.所有CPU的CPU使用率(sar -u)
这给出了所有 CPU 的累积实时 CPU 使用率。“1 3”每1秒报告3次。您很可能会关注最后一个字段“%idle”来查看 CPU 负载。
$ sar -u 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:27:32 PM CPU %user %nice %system %iowait %steal %idle 01:27:33 PM all 0.00 0.00 0.00 0.00 0.00 100.00 01:27:34 PM all 0.25 0.00 0.25 0.00 0.00 99.50 01:27:35 PM all 0.75 0.00 0.25 0.00 0.00 99.00 Average: all 0.33 0.00 0.17 0.00 0.00 99.50
以下是一些变化:
sar -u显示当天收集到的 CPU 使用率。
sar -u 1 3每 1 秒显示一次实时 CPU 使用情况,共 3 次。
sar -u ALL与“sar -u”相同,但显示附加字段。
sar -u ALL 1 3与“sar -u 1 3”相同,但显示附加字段。
sar -u -f /var/log/sa/sa10显示 sa10 文件中每月 10 天的 CPU 使用率。
2.单个CPU或Core的CPU使用率(sar -P)
如果您的机器上有 4 个核心,并且想查看各个核心在做什么,请执行以下操作。
“-P ALL”表示它应该显示所有单个核心的统计信息。
在以下示例中,“CPU”列下的 0、1、2 和 3 表示相应的 CPU 内核编号。
$ sar -P ALL 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:34:12 PM CPU %user %nice %system %iowait %steal %idle 01:34:13 PM all 11.69 0.00 4.71 0.69 0.00 82.90 01:34:13 PM 0 35.00 0.00 6.00 0.00 0.00 59.00 01:34:13 PM 1 22.00 0.00 5.00 0.00 0.00 73.00 01:34:13 PM 2 3.00 0.00 1.00 0.00 0.00 96.00 01:34:13 PM 3 0.00 0.00 0.00 0.00 0.00 100.00
“-P 1”表示它应该只显示第二个核心的统计信息。(请注意,核心编号从 0 开始)。
$ sar -P 1 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:36:25 PM CPU %user %nice %system %iowait %steal %idle 01:36:26 PM 1 8.08 0.00 2.02 1.01 0.00 88.89
以下是一些变化:
sar -P ALL显示当天按所有核心细分的 CPU 使用率。
sar -P ALL 1 3每 1 秒显示所有内核的实时 CPU 使用率,共 3 次(按所有内核细分)。
sar -P 1显示当天 1 号核心的 CPU 使用率。
sar -P 1 1 3显示 1 号核心的实时 CPU 使用率,每 1 秒显示 3 次。
sar -P ALL -f /var/log/sa/sa10显示 sa10 文件中每月 10 天的所有核心细分的 CPU 使用率。
3. 可用和已用内存 (sar -r)
这会报告内存统计信息。“1 3”每1秒报告3次。您很可能会关注“kbmemfree”和“kbmemused”的空闲和已用内存。
$ sar -r 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 07:28:06 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact 07:28:07 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 07:28:08 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 07:28:09 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 Average: 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204
以下是一些变化:
sar -r
sar -r 1 3
sar -r -f /var/log/sa/sa10
4. 使用的交换空间 (sar -S)
这会报告交换统计信息。“1 3”每1秒报告3次。如果“kbswpused”和“%swpused”为 0,那么您的系统没有交换。
$ sar -S 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 07:31:06 AM kbswpfree kbswpused %swpused kbswpcad %swpcad 07:31:07 AM 8385920 0 0.00 0 0.00 07:31:08 AM 8385920 0 0.00 0 0.00 07:31:09 AM 8385920 0 0.00 0 0.00 Average: 8385920 0 0.00 0 0.00
以下是一些变化:
sar-S
sar -S 1 3
sar -S -f /var/log/sa/sa10
笔记:
使用“sar -R”来确定系统每秒释放、使用和缓存的内存页数。
使用“sar -H”标识已使用和可用的大页面(以 KB 为单位)。
使用“sar -B”生成分页统计信息。即每秒从磁盘调入(和调出)的 KB 数。
使用“sar -W”生成页面交换统计信息。即每秒换入(换出)页面。
5. 总体 I/O 活动 (sar -b)
这会报告 I/O 统计信息。“1 3”每1秒报告3次。
以下字段显示在下面的示例中。
tps – 每秒事务数(包括读取和写入)
rtps – 每秒读取事务
wtps – 每秒写入事务
bread/s– 每秒读取的字节数
bwrtn/s – 每秒写入的字节数
$ sar -b 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:56:28 PM tps rtps wtps bread/s bwrtn/s 01:56:29 PM 346.00 264.00 82.00 2208.00 768.00 01:56:30 PM 100.00 36.00 64.00 304.00 816.00 01:56:31 PM 282.83 32.32 250.51 258.59 2537.37 Average: 242.81 111.04 131.77 925.75 1369.90
以下是一些变化:
sar -b
sar -b 1 3
sar -b -f /var/log/sa/sa10
注意:使用“sar -v”显示系统使用的 inode 处理程序、文件处理程序和伪终端的数量。
6. 单个块设备 I/O 活动 (sar -d)
要识别各个块设备(即特定的挂载点、LUN 或分区)的活动,请使用“sar -d”
$ sar -d 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:59:45 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 01:59:46 PM dev8-0 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM dev8-1 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM dev120-64 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM dev120-65 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM dev120-0 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM dev120-1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM dev120-96 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91 01:59:46 PM dev120-97 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91
在上面的示例中,“DEV”表示特定的块设备。
例如:“dev53-1”表示块设备,主设备号为 53,次设备号为 1。
设备名称(DEV 列)可以显示实际的设备名称(例如:sda、sda1、sdb1 等),如果使用 -p 选项(漂亮打印)如下图所示。
$ sar -p -d 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:59:45 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 01:59:46 PM sda 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM sda1 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM sdb1 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM sdc1 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM sde1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM sdf1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM sda2 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91 01:59:46 PM sdb2 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91
以下是一些变化:
sar -d
sar -d 1 3
sar -d -f /var/log/sa/sa10
sar -p -d
7.每秒显示上下文切换(sar -w)
这会报告每秒创建的进程总数和每秒上下文切换的总数。“1 3”每1秒报告3次。
$ sar -w 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 08:32:24 AM proc/s cswch/s 08:32:25 AM 3.00 53.00 08:32:26 AM 4.00 61.39 08:32:27 AM 2.00 57.00
以下是一些变化:
sar -w
sar -w 1 3
sar -w -f /var/log/sa/sa10
8. 报告运行队列和平均负载(sar -q)
这将报告最后 1 分钟、5 分钟和 15 分钟的运行队列大小和平均负载。“1 3”每1秒报告3次。
$ sar -q 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 06:28:53 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 06:28:54 AM 0 230 2.00 3.00 5.00 0 06:28:55 AM 2 210 2.01 3.15 5.15 0 06:28:56 AM 2 230 2.12 3.12 5.12 0 Average: 3 230 3.12 3.12 5.12 0
注意: “阻塞”列显示当前阻塞并等待 I/O 操作完成的任务数。
以下是一些变化:
sar -q
sar -q 1 3
sar -q -f /var/log/sa/sa10
9. 报告网络统计信息(sar -n)
这会报告各种网络统计信息。例如:通过网卡接收(发送)的数据包数量,数据包失败的统计信息等。“1 3”每1秒报告3次。
sar -n KEYWORD
KEYWORD 可以是以下之一:
DEV – 显示 eth0、eth1 等的网络设备重要统计信息,
EDEV - 显示网络设备故障统计
NFS – 显示 NFS 客户端活动
NFSD – 显示 NFS 服务器活动
SOCK – 显示用于 IPv4 的套接字
IP – 显示 IPv4 网络流量
EIP – 显示 IPv4 网络错误
ICMP – 显示 ICMPv4 网络流量
EICMP – 显示 ICMPv4 网络错误
TCP – 显示 TCPv4 网络流量
ETCP – 显示 TCPv4 网络错误
UDP – 显示 UDPv4 网络流量
SOCK6、IP6、EIP6、ICMP6、UDP6 用于 IPv6
ALL – 显示以上所有信息。输出会很长。
$ sar -n DEV 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:11:13 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 01:11:14 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 01:11:14 PM eth0 342.57 342.57 93923.76 141773.27 0.00 0.00 0.00 01:11:14 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
使用 sar,您可以实时监控各种 Linux 子系统(CPU、内存、I/O..)的性能,还可以持续收集所有性能数据、存储它们并进行历史分析以识别瓶颈。
10. 使用开始时间报告 Sar 数据 (sar -s)
当您使用“sar -f”选项查看 /var/log/sa/saXX 文件中的历史 sar 数据时,它会显示该特定日期从当天凌晨 12:00 开始的所有 sar 数据。
使用“-s hh:mi:ss”选项,可以指定开始时间。例如,如果您指定“sar -s 10:00:00”,它将显示从上午 10 点开始(而不是从午夜开始)的 sar 数据,如下所示。
您可以将 -s 选项与其他 sar 选项结合使用。
例如,要从上午 10 点开始报告本月 26 日的平均负载,请组合 -q 和 -s 选项,如下所示。
$ sar -q -f /var/log/sa/sa23 -s 10:00:01 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 10:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:10:01 AM 0 127 2.00 3.00 5.00 0 10:20:01 AM 0 127 2.00 3.00 5.00 0 ... 11:20:01 AM 0 127 5.00 3.00 3.00 0 12:00:01 PM 0 127 4.00 2.00 1.00 0
没有限制结束时间的选项。您只需要发挥创意并使用 head 命令,如下所示。
例如,从上午 10 点开始,如果要查看 7 个条目,则必须将上述输出通过管道传输到“head -n 10”。
$ sar -q -f /var/log/sa/sa23 -s 10:00:01 | head -n 10 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 10:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:10:01 AM 0 127 2.00 3.00 5.00 0 10:20:01 AM 0 127 2.00 3.00 5.00 0 10:30:01 AM 0 127 3.00 5.00 2.00 0 10:40:01 AM 0 127 4.00 2.00 1.00 2 10:50:01 AM 0 127 3.00 5.00 5.00 0 11:00:01 AM 0 127 2.00 1.00 6.00 0 11:10:01 AM 0 127 1.00 3.00 7.00 2
Linux Ubuntu
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。