Linux系统监控工具
系统的性能是指操作系统完成任务的有效性、稳定性和响应速度。性能分析应从系统CPU、内存、磁盘I/O、网络等方面入手。
(1)CPU
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
-
load average :三个数值分别表示 1分钟、5分钟、15分钟内系统的平均负载(任务队列的平均长度)。
-
us:用户空间CPU使用率。
-
sy:内核空间CPU使用率。
-
ni:用户空间改变过进程优先级的CPU使用率。
-
id:空闲CPU。
-
wa:等待I/O的CPU使用率。
-
hi:硬中断CPU使用率。
-
si:软中断CPU使用率。
-
st:虚拟机CPU使用率。
CPU负载和CPU使用率
-
CPU负载:一段时间内正在使用和等待CPU的平均任务数。
-
CPU使用率:程序在运行期间实时占用CPU的百分比,反映了 CPU 的繁忙程度。
I/O 密集型进程,等待 I/O 也会导致 CPU 负载升高,但 CPU 使用率不一定很高。
CPU 密集型进程,CPU 使用率高,会导致 CPU 负载升高。
(2)内存
内存包括物理内存(RAM)和虚拟内存(swap)。当物理内存不足时,把内存中暂时不用的数据存储到磁盘,当进程需要访问这些数据时,再从磁盘读取到内存中。
- Mem:物理内存。total = used + free
-
- buffers/cache:应用程序实际使用的内存。used - buffers - cached
-
+ buffers/cache:理论上可以被使用的内存。free + buffers + cached
-
Swap:虚拟内存。
内存中的Buffer和Cache
Buffer(缓冲区)是将内存中的数据,不立刻写入磁盘等设备,而是达到缓冲大小后再一次性写入,从而减少对磁盘的I/O操作。
Cache(高速缓存)是CPU与内存之间的一种容量较小但速度很快的存储器。CPU的速度远高于内存,CPU直接从内存中存取数据时要等待一定时间,而Cache可以保存CPU刚用过或循环使用的一部分数据,当CPU再次使用这部分数据时,直接从Cache中存取,减少CPU等待时间。
(3)磁盘I/O
iostat(I/O statistics,输入/输出统计),用来监视系统的CPU使用率和I/O负载。
-
tps:设备每秒传输的次数。
-
kB_read/s:每秒从设备读取的数据量。
-
kB_wrtn/s:每秒向设备写入的数据量。
-
kB_read:从设备读取的总数据量。
-
kB_wrtn:向设备写入的总数据量。
-
r/s:每秒 I/O 读次数。
-
w/s:每秒 I/O 写次数。
-
avgqu-sz:I/O 平均队列长度。
-
await:等待 I/O 的平均时间。
-
svctm:I/O 的平均服务时间。
-
%util:I/O 时间百分比。
(4)网络
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。可以用来显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
统计系统中tcp连接的状态和连接数:
netstat -an | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a,S[a]}'