文章目录
观测工具
uptime
uptime
命令在Linux系统中被用来查看系统的运行时间,同时也展示了一些其他的系统信息。
当你在终端输入uptime
命令后,你会得到类似这样的结果:
15:26:18 up 2:00, 1 user, load average: 0.00, 0.01, 0.05
这个结果分为四个部分:
- 15:26:18 :这是当前的系统时间。
- up 2:00 :这表示系统已经运行了2小时。
- 1 user :这表示当前有1个用户登录系统。
- load average: 0.00, 0.01, 0.05 :这表示系统负载平均值。三个值分别代表过去1分钟,5分钟和15分钟的系统负载平均值。你可以判断负载在15 分钟内(或者其他时间段)是在上升、下 降,还是平稳。
系统负载平均值的理解:它是指系统中的任务或请求等待处理的程度,用于描述系统当前的负载状态以及系统资源(如CPU、磁盘I/O、网络等)的使用情况
系统负载表示的是系统单位时间内的任务时间占比。平均负载就是单位时间内运行队列中的平均任务数。运行队列中包含了正在运行的任务和等待运行的任务(等待CPU时间,或者等待IO)。通过汇总正在运行的线程数 (使用率)和正在排队等待运行的线程数(饱和度)计算得出。计算平均负载的一个新方法是把使用率加上线程调度器延时得出,而不是去取样队列长度,从而提高精度。这些计算方法的内幕可以参考 [McDougall 06b]中的文档。
这个值的意义为,平均负载大于CPU 数量表示CPU 不足以服务线 程,有些线程在等待。如果平均负载小于CPU 数量,这(很可能)代 表还有一些余量,线程可以在它们想要的时候在CPU 上运行。
vmstat
vmstat
命令(虚拟内存统计)是一个非常实用的系统资源监视工具,它可以提供关于系统进程、内存、分页、磁盘I/O和CPU活动的报告。下面是它可能输出的不同信息的简要概述
vmstat 1 -Sm 修改输出单位为MB
vmstat -a输出非活动和活动页缓存的明晰
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 14174328 375188 880748 0 0 19 2 9 12 0 0 100 0 0
进程:运行(r)、阻塞(b)的进程数量。
内存:包括被交换出的虚拟内存量(swpd)、空闲内存(free)、缓冲内存(buff)、缓存内存(cache)
分页:进出信息(si 和 so)。
磁盘I/O:块接收(bi)和发送(bo)的数量。
系统:中断(in)和上下文切换(cs)次数。
CPU:CPU的使用情况,包括非空闲、用户空间运行、内核空间运行和空闲时间(us, sy, id 和 wa)。
mpstat
mpstat
是一个常用的 Linux 命令,用于报告关于处理器相关的统计信息。它可以提供 CPU 使用率,以及其他与中断、CPU 事件等的信息。这是非常有用的,特别是在性能调优和查找系统瓶颈时。
mpstat 查看所有CPU的统计信息
mpstat -P ALL 查看每个CPU的统计信息
mpstat 1 进行实时监视,你可以加上间隔时间(单位:秒)
Linux 4.15.0-142-generic (ssc) 2024年04月17日 _x86_64_ (16 CPU)
11时00分39秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11时00分39秒 1 0.05 0.00 0.13 0.04 0.00 0.01 0.00 0.00 0.00 99.78
%usr:用户空间的 CPU 使用率
%nice:改变了优先级的用户空间进程的 CPU 使用率
%sys:内核空间的 CPU 使用率
%iowait:CPU 等待 I/O 完成的时间百分比
%irq:处理硬件中断的时间百分比
%soft:处理软件中断的时间百分比
%steal:虚拟环境中等待虚拟 CPU 的时间百分比
%guest:运行虚拟 CPU 的时间百分比
%idle:CPU 空闲的时间百分比
sar
/var/log/sysstat
是sysstat
包创建的一个目录,用于存储由sar
命令收集的系统性能数据。这些性能数据能够帮助系统管理员检查服务器的历史性能数据。
文件不存在
如果你在/var/log/sysstat
下没有找到文件,可能有以下原因:
-
sysstat
软件包可能没有安装。你可以通过运行以下命令来安装它:-
在Debian基础的系统(如Ubuntu)上运行:
sudo apt-get install sysstat
-
在RHEL/CentOS中运行:
sudo yum install sysstat
-
-
sysstat
默认是关闭历史数据收集的,如果想要开启,你需要编辑/etc/default/sysstat
(Debian/Ubuntu)或/etc/sysconfig/sysstat
(CentOS/RHEL)配置文件,将ENABLED="false"
改为ENABLED="true"
,然后重启sysstat服务。sudo service sysstat restart sudo /etc/init.d/sysstat restart
服务状态查询
systemctl status sysstat sudo service sysstat status
-
你可能需要等待一段时间。数据文件是由 cron 任务在一段时间间隔后生成的,通常是每10分钟。
如果你想调整数据收集的频率,可以编辑
/etc/cron.d/sysstat
文件。这个文件定义了sar
命令的运行间隔和收集的数据类型。例如:*/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
这行表示每10分钟运行一次
debian-sa1
命令来收集数据。 -
确保
/etc/cron.d/sysstat
文件中的 cron 任务未被注释掉。
使用
sar 是一个非常强大的性能监控工具。它可以对系统活动信息进行详细的报告,包括 CPU、内存、磁盘 I/O、网络流量、中断、运行队列长度、上下文切换次数等。sar 也可以用于收集历史系统性能数据。
sar [选项] 间隔时间 统计次数
sar
命令默认确实只收集 CPU 使用率的数据,但是实际上它还可以收集许多其他类型的数据,这取决于你如何使用该命令。
要让 sar
收集除了 CPU 信息以外的数据,你需要在 sar
命令后面加上不同的参数。以下是一些常用的参数案例:
-b
:报告 I/O 和传输速率统计信息。
Linux 4.15.0-142-generic (ssc) 2024年04月17日 _x86_64_ (16 CPU)
11时20分06秒 LINUX RESTART (16 CPU)
11时25分01秒 tps rtps wtps bread/s bwrtn/s
11时35分01秒 0.16 0.01 0.15 2.35 2.55
平均时间: 0.16 0.01 0.15 2.35 2.55
tps: 每秒钟磁盘传输次数。即I/O请求数。一次 I/O 请求可以读写多个扇区。
rtps: 每秒钟为了读取设备而进行的I/O请求数。
wtps: 每秒钟为了写设备而进行的I/O请求数。
bread/s: 每秒钟从设备读取的数据量,单位为KB。
bwrtn/s: 每秒钟写入设备的数据量,单位为KB。
-n DEV
:报告网络设备统计信息。
inux 4.15.0-142-generic (ssc) 2024年04月17日 _x86_64_ (16 CPU)
11时20分06秒 LINUX RESTART (16 CPU)
11时25分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
11时35分01秒 lo 0.23 0.23 0.02 0.02 0.00 0.00 0.00 0.00
11时35分01秒 ens33 0.49 0.12 0.05 0.03 0.00 0.00 0.00 0.00
平均时间: lo 0.23 0.23 0.02 0.02 0.00 0.00 0.00 0.00
平均时间: ens33 0.49 0.12 0.05 0.03 0.00 0.00 0.00 0.00
IFACE: 网络接口的名称。
rxpck/s: 每秒接收的包数(packets received per second)。
txpck/s: 每秒发送的包数(packets transmitted per second)。
rxKB/s: 每秒接收的数据量,单位为千字节(KB received per second)。
txKB/s: 每秒发送的数据量,单位为千字节(KB transmitted per second)。
rxcmp/s: 每秒接收的压缩数据包数(compressed packets received per second)。
txcmp/s: 每秒发送的压缩数据包数(compressed packets transmitted per second)。
rxmcst/s: 每秒接收的多播数据包数(multicast packets received per second)。
-r
:报告内存利用情况。
Linux 4.15.0-142-generic (ssc) 2024年04月17日 _x86_64_ (16 CPU)
11时20分06秒 LINUX RESTART (16 CPU)
11时25分01秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
11时35分01秒 14002884 2399328 14.63 377268 723708 3873704 22.26 1353912 395676 0
平均时间: 14002884 2399328 14.63 377268 723708 3873704 22.26 1353912 395676 0
kbmemfree:空闲的内存量(以KB为单位)。
kbmemused:已使用的内存量(以KB为单位)。
%memused:已使用的内存百分比。
kbbuffers:用于缓冲的内存量(以KB为单位)。
kbcached:用于缓存的内存量(以KB为单位)。
kbcommit:当前提交的内存量(以KB为单位),应该在交换空间中保留以保证系统运行所需内存。
%commit:当前提交的内存(和未保留内存)在总内存(包括交换空间)中所占的百分比。
通过这些信息,你可以获取您的系统如何使用和分配内存的全面视图。
-u
:报告 CPU 利用情况。
Linux 4.15.0-142-generic (ssc) 2024年04月17日 _x86_64_ (16 CPU)
11时20分06秒 LINUX RESTART (16 CPU)
11时25分01秒 CPU %user %nice %system %iowait %steal %idle
11时35分01秒 all 0.01 0.00 0.03 0.00 0.00 99.96
11时45分01秒 all 0.01 0.00 0.03 0.00 0.00 99.96
平均时间: all 0.01 0.00 0.03 0.00 0.00 99.96
%user:运行用户进程的CPU时间百分比。这意味着CPU花费多少时间来执行用户的进程(比如用户运行的程序),但不包括系统对这些进程的服务时间(比如对进程的调度与管理,这部分时间会被算作系统时间)。
%nice:改变过优先级的(user mode下nice值改变的)进程运行所占用CPU时间的百分比。
%system:在kernel mode下运行的CPU时间百分比。这部分时间算的是系统为用户进程服务所花费的时间,比如进程的调度、管理等。
%iowait:等待I/O完成的CPU时间百分比。
%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而消耗的CPU时间的百分比。
%idle:CPU空闲时间百分比。
注意:各列的百分比加起来等于100%。
-f
:显示历史信息
`-B:报告 Linux 系统的页面交换状态的
Linux 4.15.0-142-generic (ssc) 2024年04月18日 _x86_64_ (16 CPU)
17时12分00秒 LINUX RESTART (16 CPU)
17时15分01秒 pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
17时25分01秒 0.11 1.26 13.10 0.00 9.18 0.00 0.00 0.00 0.00
17时35分01秒 2.75 1.91 21.54 0.01 18.65 0.00 0.00 0.00 0.00
平均时间: 1.43 1.59 17.32 0.00 13.92 0.00 0.00 0.00 0.00
pgpgin/s:每秒从磁盘读入页的数量。这些页可能实际上是文件数据的一部分,也可能是作为进程开始使用某些内存而进行换入的交换区域的页。
pgpgout/s:每秒写入磁盘的页的数量。注意这个指标并不包括由于系统内存紧缺而换出的页面。
fault/s:每秒发生的主(非I/O)页面错误数。这些错误包括那些已经在内存中或者需要从磁盘读取的页面。
majflt/s:每秒发生的主要错误的数量。这些是由于所请求的页面不在内存中,并且必须从磁盘上的分页区域或从文件系统中读取。
pgfree/s:每秒被内核释放的页数。
pgscank/s:每秒被 kswapd 守护进程扫描以回收的页数。
pgscand/s:每秒直接扫描以回收的页数。
pgsteal/s:每秒被回收的页数。
-H
:大页面统计信息
Linux 4.15.0-142-generic (ssc) 2024年04月18日 _x86_64_ (16 CPU)
17时12分00秒 LINUX RESTART (16 CPU)
17时15分01秒 kbhugfree kbhugused %hugused
17时25分01秒 0 0 0.00
17时35分01秒 0 0 0.00
17时45分01秒 0 0 0.00
17时55分01秒 0 0 0.00
18时05分01秒 0 0 0.00
18时15分01秒 0 0 0.00
18时25分01秒 0 0 0.00
平均时间: 0 0 0.00
-R
:内存统计信息
17时12分00秒 LINUX RESTART (16 CPU)
17时15分01秒 frmpg/s bufpg/s campg/s
17时25分01秒 -0.54 0.05 0.04
17时35分01秒 -1.42 0.06 0.66
17时45分01秒 -1.34 0.03 0.00
17时55分01秒 -0.52 0.04 0.00
18时05分01秒 0.12 0.01 0.00
18时15分01秒 0.06 0.02 0.00
18时25分01秒 0.65 0.03 0.00
平均时间: -0.43 0.03 0.10
frpg 释放的存储器页面,负值表明分配 页面/s
bufpg 缓冲高速缓存增加值(增长) 页面/s
campg 页面高速缓存增加值 页面/s
-S
:交换空间统计信息
17时15分01秒 kbswpfree kbswpused %swpused kbswpcad %swpcad
17时25分01秒 998396 0 0.00 0 0.00
17时35分01秒 998396 0 0.00 0 0.00
17时45分01秒 998396 0 0.00 0 0.00
17时55分01秒 9983