Linux-系统监控命令
相关工具安装
系统压测工具 stress
, 线程压测工具 sysbench
, 系统性能工具包 sysstat
, 磁盘I/O测试工具 fio
, 网络性能测试工具 iperf
:
1 |
|
(这里安装的都是测试工具, 查看的工具大多内置)
CPU 性能指标相关
查看 CUP 使用率
先进行压测:
1 |
|
-c
,--cpu
, 指定使用的 CPU 核心数量, 模拟 CPU 负载-i
,--io
, 指定使用的 I/O 操作数, 模拟 I/O 负载 (磁盘性能)--timeout 300s
指定压力测试的时间
再查看系统 CPU 使用率:
1 |
|
(mpstat
用于查看系统中每个 CPU 核心的使用情况)
-P
, processors, 指定一个 processor list, 这里表明所有 (可以用 CPU 编号指定)5 2
, 每 5s 采集和输出一次, 共输出两次
查看系统平均负载:
1 |
|
查看上下文切换
进行上下文切换压测:
1 |
|
--threads=4
, 指定 4 个线程进行测试--time=300
, 指定测试持续时间threads run
, 表示进行多线程压力测试
(多线程并发考察的实际上就是上下文切换)
查看系统上下文切换:
1 |
|
3 5
, 每 3 秒采样一次数据, 共采样 5 次
查看线程上下文切换:
1 |
|
-w
, 指定每 5 秒采样一次数据, 采样 2 次-t
, “threads”, 显示每个线程的统计信息, 不仅是进程级别
查看平均负载:
1 |
|
内存性能指标相关
查看系统内存
进行物理内存压力测试:
1 |
|
--vm
, 指定 virtual memory 压力进程个数--vm-bytes
, 每个 virtual memory 压力进程分配的内存大小--vm-keep
, 保持分配的内存不释放, 一直占用--timeout
指定压力测试的时间
查看内存占用情况:
1 |
|
查看交换空间的积极度与优先级:
1 |
|
(swappiness 是用来控制内存回收的: 值越高, 内核就会越积极使用 swap)
交换空间内存压测:
1 |
|
--vm-hang
, 指定在内存释放之前 sleep 的时间 (感觉没什么用)
查看交换空间内存占用:
1 |
|
查看系统虚拟内存信息:
1 |
|
-a
, 显示 active 和 inactive memory-S
,--unit
, 用什么单位显示
查看进程内存
1 |
|
磁盘 I/O 性能相关
读写性能压测:
1 |
|
查看磁盘 I/O 和吞吐量:
1 |
|
-d
, “disk”, 只显示磁盘设备的 I/O 统计-h
, “human”, 以人类可读方式显示3 3
, 每隔 3 秒采集和显示一次 I/O 统计数据, 采集 3 次
也可以用 sar
:
1 |
|
网络 I/O 性能指标
查看网络连接情况
1 |
|
查看网络带宽
在服务端运行 (提供一个测试端点):
1 |
|
(会启动一个 iperf 服务器, 监听默认的 TCP 端口 5001,等待其他客户端进行连接)
-s
,--server
, run in server mode
在客户端运行:
1 |
|
(会输出网络带宽)
-c host
,--client
, 以 client 模式运行并连接 host (server)-t n
,--time
, 指定测试持续时间-i
,--interval
, 指定数据报告的间隔时间
查看吞吐量:
1 |
|
-n
, “network”, 输出 network 相关统计数据,DEV
关键词表明输出每个 network device 的
uptime
输出示例为:
1 |
|
02:39:52
: 当前系统时间up 1:45
: 系统运行多久了2 users
: 当前系统登录用户数load average: 0.02, 0.47. 0.44
, 过去 1 分钟, 5 分钟, 15 分钟的系统平均负载情况
平均负载
指单位时间内, 系统中可运行 (R, 指正在 CPU 上运行或者正等待 CPU) 和不可中断 (D, 指一些处于内核关键流程的进程) 进程的平均进程数.
1 |
|
ps
输出排序
用 --sort
参数, 如:
1 |
|
-
表示数值递减 (从大到小).+
表示数值递增 (从小到大).
vmstat
1 |
|
的输出如:
1 |
|
各部分的含义为:
procs: 关于进程 (process) 的信息
r: 表示在等待CPU资源的可运行进程数量 (runnable processes)
b: 表示处于不可中断状态的进程数量 (blocked processes)
memory: 关于内存 (memory) 使用情况的信息
swpd: 表示被换出到交换空间 (swap space) 的内存大小, 单位为KB
free: 表示空闲内存的大小, 单位为KB
buff: 表示用作缓冲区的内存大小, 单位为KB
cache: 表示用作缓存的内存大小, 单位为KB
swap: 这一列包含了关于交换空间(swap space)的使用情况的信息。
si: 表示从磁盘交换入内存的数据量, 单位为KB/秒.
so: 表示从内存交换到磁盘的数据量, 单位为KB/秒.
io: 这一列包含了关于输入输出(I/O)操作的信息
bi: 表示每秒从块设备读取的块数, 单位为块/秒
bo: 表示每秒写入块设备的块数, 单位为块/秒
system: 这一列包含了关于系统调用和中断的信息
in: 表示每秒的中断次数, 包括时钟中断
cs: 表示每秒的上下文切换次数
cpu: 这一列包含了关于CPU使用率的信息
us: 表示用户空间程序占用CPU时间的百分比
sy: 表示系统空间程序占用CPU时间的百分比
id: 表示CPU空闲时间的百分比
wa: 表示等待I/O操作完成的CPU时间的百分比
st: 表示被偷取 (被其他虚拟机或任务占用) 的CPU时间的百分比
gu: 表示Guest操作系统占用CPU时间的百分比 (仅在虚拟化环境中可用)
sysbench
1 |
|
常见的 [testname]
有:
1 |
|
常见的 [command]
有:
1 |
|
pidstat
常见如:
1 |
|
dd
如:
1 |
|
/dev/zero
是一个特殊的设备文件, 在 Unix/Linux 系统中用于生成连续的空字节流. 读取 /dev/zero
将会无限地产生字节 0.
Linux-系统监控命令
http://example.com/2024/02/27/Linux-系统监控命令/