一. 查看cpu使用情况
1. sar -u 1
以一秒为间隔,一直采样显示
2. sar -u 1 10
以一秒为间隔,采样输出10次
以上2个命令均显示所有cpu总和的情况
3. sar -u -P ALL 1 或 sar -u -P ALL 1 10
分别显示每个cpu的采样输出, 以及所有cpu总和(all)
输出个字段含义:
12:04:14 AM CPU %user %nice %system %iowait %steal %idle
12:04:15 AM all 0.83 46.81 15.17 1.88 0.00 35.31
12:04:15 AM 0 5.94 0.99 19.80 0.00 0.00 73.27
12:04:15 AM 1 0.00 77.00 20.00 2.00 0.00 1.00
12:04:15 AM 2 0.00 78.22 17.82 2.97 0.00 0.99
CPU: cpu的编号
%user: 在用户模式中运行进程所花费的时间(CPU处在用户模式下的时间百分比)
%nice: 显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比
%system: 在内核(系统)中运行进程所花的时间 (CPU处在系统模式下的时间百分比)
%iowait : 没有进程在该cpu上执行时,处理器等待I/O完成的时间(CPU等待输入输出完成时间的百分比)
%steal : 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle:没有进程在该cpu上执行的时间(cpu空闲时间)
注意: %iowait的值过高,表示硬盘存在I/O瓶颈
二. 查看磁盘I/O
命令: sar -d 1 或sar -d 1 10
12:16:36 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
12:16:37 AM dev8-0 2.00 0.00 16.00 8.00 0.00 0.00 0.00 0.00
12:16:37 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
DEV: 磁盘设备
tps : 每秒传输数(或者每秒IO数)
rd_sec/s : 每秒512字节读取数(为什么是512字节??)
wr_sec/s: 每秒512字节写入数
三. 查看网络
1. 命令: sar -n DEV 1 或 sar -n DEV 1 10
12:22:03 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
12:22:04 AM lo 883.17 883.17 469.36 469.36 0.00 0.00 0.00
12:22:04 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:22:04 AM eth1 4372.28 4408.91 3383.67 2683.10 0.00 0.00 0.00
字 | 说 |
IFACE | LAN接口 |
rxpck/s | 每秒钟接收的数据包 |
txpck/s | 每秒钟发送的数据包 |
rxbyt/s | 每秒钟接收的字节数 |
txbyt/s | 每秒钟发送的字节数 |
rxcmp/s | 每秒钟接收的压缩数据包 |
txcmp/s | 每秒钟发送的压缩数据包 |
rxmcst/s | 每秒钟接收的多播数据包 |
2. 命令: sar -n EDEV 1 或 sar -n EDEV 1 10
查看网络错误信息
12:23:11 AM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
12:23:12 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
字 | 说 |
IFACE | LAN接口 |
rxerr/s | 每秒钟接收的坏数据包 |
txerr/s | 每秒钟发送的坏数据包 |
coll/s | 每秒冲突数 |
rxdrop/s | 因为缓冲充满,每秒钟丢弃的已接收数据包数 |
txdrop/s | 因为缓冲充满,每秒钟丢弃的已发送数据包数 |
txcarr/s | 发送数据包时,每秒载波错误数 |
rxfram/s | 每秒接收数据包的帧对齐错误数 |
rxfifo/s | 接收的数据包每秒FIFO过速的错误数 |
txfifo/s | 发送的数据包每秒FIFO过速的错误数 |
此外,还可查看套接字信息等等。 待补充
一个网络丢包的情况:
1) 当网卡接收到数据帧或发送完数据帧时, 就会产生一个中断. 2) 当网卡成功接收到数据帧时, 驱动程序根据帧长度分配包缓冲区, 将数据帧从网卡读入缓冲区, 然后插入接收软中断的接收包队列, 并激活接收软中断. 当硬件中断返回时, 接收软中断将执行. 在缺省配置下, 每个CPU最多可缓冲300个接收包(有待考证). 当网卡接收包的速度太快, 接收软中断中无法及时处理, 接收包队列长度达到300时, 系统进入"扼流(throttle)"状态, 所有后继的接收包被丢弃,直到接收包队列重新变为空.
比如: 当cpu分配不均,网络i/o的软中断都落在一个cpu上时,会导致cpu不能及时处理软中断, 导致丢包。