当物理内存不足时,内核会将进程内存中不常用的页逐出内存写入磁盘中的 Swap 分区,当进程需要读取这些页时再将它们从磁盘中加载到内存。
磁盘DSK 列描述磁盘使用情况:
vda: 该列为磁盘设备名,每个设备拥有一行
busy: 设备处理IO请求的时间占比
read: 监控周期内读请求数
write: 监控周期内写请求数
KiB/r: 每次读请求的平均数据量
KiB/w: 每次写请求的平均数据量
MBr/s: 每秒读取的数据量
MBw/s: 每秒写入的数据量
avq: io 队列的平均长度
avio: 单次读写请求需要的毫秒数
网络网络层通常包含 transport、network、 eth 和 lo 行, 分别表示传输层、网络层、以太网(数据链路层)和本地回环的监控指标。
tcpi/udpi/ipi: 接收的 tcp/udp/ip 数据包
tcpo/udpo/ipo : 发出的 tcp/udp/ip 数据包
tcpao: 主动建立的tcp连接数(active open)
tcppo: 被动建立的tcp连接数(passive open), 即通过 listen() 建立的连接数
tcprs: tcp 重传次数
tcpie: 读取时发生错误的次数
进程列表进程列表有多个视图分别展示不同方面的数据:
默认视图(Generic information): 按G键回到默认视图
内存视图(Memory information): 按M键进入内存视图,显示进程的内存占用情况
命令行视图(Command Line information): 按C键进入命令行视图,显示进程启动时详细命令行参数
调度器视图(Scheduling information): 按S键进入视图,显示线程调度、CPU使用和运行统计
磁盘视图(Disk information): 按D键进入视图,显示进程的磁盘IO使用情况
网络视图(Network information): 按N键进入视图,显示进程的网络IO使用情况
atop 默认展示过去10s内状态发生变化的进程,按下A键可以查看全部进程。
默认视图默认视图展示常用的监控项:
PID: 进程ID
SYSCPU: 在内核态下使用CPU时间
USERCPU: 在用户态下使用CPU时间
VGROW: 过去一个监控周期内进程的虚拟内存空间增长,包括malloc()分配内存、使用共享内存以及free()释放内存造成的空间变化
RGROW: 过去一个监控周期内进程常驻内存空间(resident memory)增长, 即进程内存空间中驻留在物理内存中未被逐出到SWAP分区的部分。
RUID, EUID, SUID: 启动进程的UID
RUID: 登录时的用户ID
EUID: Effective Uid。通常EUID=RUID, setuid 或 sudo 等指令能以另一个用户身份执行命令,这个被“代理”的用户即为 Effective User。
EXC: 进程退出时的返回码
THR: 进程中的线程数
S: 进程状态,与ps命令的进程描述符相同
简单介绍一下进程状态
R: Runing
S: sleeping interruptible 等待某个事件
D: sleeping non-interruptible 通常在等待IO
Z: Zombie 僵尸进程
E: 进程在上个监控周期内退出
T: TASK_STOPPED 或 TASK_TRACED 状态
TASK_STOPPED: 进程收到 SIGSTOP 信号进入暂停状态
TASK_TRACED: 进程进入暂停状态等待跟踪它的进程,比如进程被 gdb 的断点暂停
内存视图按M键可以进入内存视图查看进程的内存使用情况:
MINFLT: 进程缺页小错误(minor page fault)的次数
MAJFLT: 进程缺页大错误(major page fault)的次数
VSIZE: 虚拟内存空间的总大小
RSIZE: 常驻内存(resident memory)的总大小
VGROW: 虚拟内存空间在上个监控周期的增长
RGROW: 虚拟内存空间在上个监控周期的增长
MEM: 物理内存使用占比
在 Linux 的内存管理系统中需要读取磁盘才能解决缺页中断称为大错误(Major Page Fault), 不需要读取磁盘可以解决的缺页中断被称为小错误(Minor Page Fault)。
一般情况下 MINFLT 是因为频繁分配/回收大内存块导致的,可以考虑使用内存池优化程序来减少缺页错误; MAJFLT 是由于物理内存不足导致。
调度视图按S键可以进入调度视图(Scheduling View)查看进程运行和CPU情况:
TRUN: running 状态的线程数
TSLPI: sleeping interruptible 状态线程数
TSLPU: 表示 sleeping uninterruptible 状态进程数
PILI: 调度策略
PRI,NICE: 优先级,PRI+NICE越低优先级越高
CPU: CPU 使用时间占比
监控服务除了查看当前的状态外,atop 还可以服务方式运行在后台监控并记录系统状态。
使用 service atop start 或 systemctl start atop 命令启动atop监控服务。
atop 默认将数据保存在/var/log/atop目录下,10 分钟采集一次,保留最近28天的数据。上述配置可以在 /etc/atop/atop.daily 文件中进行修改。