系统监控
系统监控是系统管理员的主要工作之一,Linux 操作系统提供了各种日志及性能监控工具以帮助用户完成系统监控工作,本文将对这些工具进行简单介绍。
磁盘监控
iostat 命令用于查看 CPU 利用率和磁盘性能等相关数据。有时候系统响应慢,传送数据也慢,这可能是由多方面原因导致的,如 CPU 利用率过高、网络环境差、系统平均负责过高,甚至是磁盘已经损坏,因此,在系统性能出现问题时,磁盘性能是一个值得分析的重要指标。其命令格式如下。
iostat [选项]
iostat 命令各选项及其功能说明如下表。
选项 | 功能说明 |
---|---|
-c | 只显示 CPU 利用率 |
-d | 只显示磁盘利用率 |
-p | 可以报告每个磁盘的每个分区的使用情况 |
-k | 以字节/秒为单位显示磁盘利用率报告 |
-n | 显示 NTFS 报告 |
部分系统默认没有 iostat 命令。我们需要先安装sysstat。
sudo apt install sysstat
iostat 命令各字段输出选项及其功能说明表。
选项 | 功能说明 |
---|---|
tps | 每秒 I/O 数(即磁盘连续读和连续写之和) |
Blk_reads | 每秒从设备读取的数据大小,单位为 block/s(块每秒) |
Blk_wrtn/s | 每秒写入设备的数据大小,单位为 block/s |
Blk_read | 从磁盘读出的块的总和 |
Blk_wrtn | 写入磁盘的块的总和 |
kb_read/s | 每秒从磁盘读取的数据大小,单位为KB/s |
kb_wrtn/s | 每秒写入磁盘的数据大小,单位为KB/s |
kb_read | 从磁盘读出的数据总和 |
kb_wrtn | 写入磁盘的数据总和 |
rrqm/s | 每秒合并到设备的读请求数 |
wrqm/s | 每秒合并到设备的写请求数 |
r/s | 每秒向磁盘发起的读操作数 |
w/s | 每秒向磁盘发起的写操作数 |
rsec/s | 每秒向磁盘发起读取的扇区数量 |
wsec/s | 每秒向磁盘发起写入的扇区数量 |
avgrq-sz | I/O 请求的平均大小,以扇区为单位 |
avgrq-sz | 向设备发起 I/O 请求队列的平均长度 |
await | I/O 请求的平均等待时间,单位为 ms,包括请求队列消耗的时间和为每个请求服务的时间 |
svctm | 请求的平均服务时间,单位为 ms |
%util | 处理 I/O 请求所占用的百分比,即设备利用率,当这个值接近100% 时,表示磁盘 I/O 已经饱和 |
内存监控
vmstat 命令可实时动态地监控操作系统的虚拟内存、进程、磁盘、CPU 的活动等。其命令格式如下。
vmstat [选项]
vmstat 命令各选项机器功能说明如下。
选项 | 功能说明 |
---|---|
-a | 显示活跃和非活跃内存 |
-f | 显示从系统启动至今的 fork 数量 |
-m | 显示 slabinfo 信息 |
-n | 只在开始时显示一次各字段的名称 |
-s | 显示内存相关统计信息及各种系统活动数量 |
-d | 显示磁盘相关统计信息 |
-p | 显示指定磁盘分区统计信息 |
-S | 使用指定单位显示,参数有k、K、m、M,分别代表1000字节、1024字节、1000000字节、1048576字节,默认单位为K (1024字节) |
-V | 显示版本信息 |
cpu监控
在 Linux 操作系统中监控 CPU 的性能时主要关注三个指标:运行队列、CPU 使用率、上下文切换。
运行队列
每个 CPU 都维护着一个线程的运行队列,理论上调试器应该不断地运行和执行线程,线程未处于睡眠状态(阻塞和等待I/O )时就表示处于可运行状态。如果 CPU 子系统处于高负荷下,则意味着内核调试将无法及时相应系统请求,导致的结果就是可运行状态进程阻塞在运行队列中,当运行队列越来越大的时候,线程将花费更多的时间来获取被执行的机会。
CPU 使用率
CPU 使用率即 CPU 使用的百分比,是评估系统性能最重要的一个度量指标。多数系统性能监控工具关于 CPU 使用的分类大概有以下几种。
(1)User Time(用户进程时间):用户空间中被执行进程占 CPU 开销时间的百分比。
(2)System Time(内核线程及中断时间):内核空间中线程和中断占 CPU 开销时间的百分比。
(3)Wait I/O Time(I/O 请求等待时间):所有进程被阻塞时,等待完成一次 I/O 请求所占 CPU 开销时间的百分比。
(4)Idle Time(空闲时间):一个完整空闲状态的进程占 CPU 开销时间的百分比。
上下文切换
一个标准的 Linux 操作系统内核可以运行50-50000 个处理线程,在只有一个 CPU 时,内核将调试并均衡每个进程和线程,一个线程要么获得时间额度,要么抢先获得较高优先级(如硬件中断),其中较高优先级的线程将重新回到处理器的队列中,这种线程的转换关系就是上下文切换。
mpstat 命令用于查看具有多个 CPU 的计算机的性能情况;而 vmstat 命令只能显示 CPU 的总的性能情况;mpstat 命令可以实时进行系统监控,报告与 CPU 相关的一些统计信息,这些信息存放在 /proc/stat 文件中。其命令格式如下:
mpstat [选项]
mpstat 命令各选项及其功能说明如下:
选项 | 功能说明 |
---|---|
-P{|ALL} | 表示监控哪个 CPU,CPU编号在[ 0 ,CPU个数-1 ]中取值 |
interval | 相邻两次采样的时间间隔 |
count | 采样的次数,count 只能和 delay 一起使用 |
使用 mpstat 命令实时进行系统监控,查看多核 CPU 核心的当前运行状态信息,每 3 秒更新一次,执行相关操作。
mpstat 命令各字段输出选项及其功能说明表。
选项 | 功能说明 |
---|---|
%user | 表示处理用户进程所使用 CPU 的百分比。用户进程是用于应用程序的非内核进程。 |
%nice | 表示使用 nice 命令对进程进行降级时使用 CPU 的百分比。 |
%sys | 表示内核进程使用的 CPU 百分比。 |
%iowait | 表示等待进行 I/O 时所使用的 CPU 百分比。 |
%irq | 表示用于处理系统中断的 CPU 百分比。 |
%soft | 表示用于软件中断的 CPU 百分比 |
%guest | 显示运行虚拟处理器时 CPU 花费时间的百分比。 |
%steal | 显示虚拟机管理器在服务另一个虚拟处理器时,虚拟 CPU 处于非自愿等待状态下花费时间的百分比。 |
%idle | 显示 CPU 的空闲时间 |
%intr/s | 显示每秒 CPU 接收的中断总数。 |
性能分析监控
top 命令是 Linux 操作系统中常用的性能分析命令,能够实时显示系统中各个进程的资源使用状况,类似于 Windows 的任务管理器。top 命令显示的是动态的过程,即可以通过用户按键来不断刷新当前状态。
top命令虽然功能强大,但与Linux传统的 top命令相比,htop 更人性化,支持带有颜色的显示形式,相比top命令可以支持鼠标操作。从功能上讲 top 命令 和 htop 命令 基本是一致的,无非是后者交互上更方便,htop运行起来是这样的:
top 运行起来是这样的:
交流Linux运维工作、学习经验,欢迎添加QQ群:418251587
或者添加微信:lxs1266L,拉进微信群