# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 78112 63432 1519100 0 0 233 18 1906 1190 26 13 59 1 0
1 0 0 78112 63432 1519100 0 0 0 0 4180 1378 33 17 50 0 0
1 0 0 78112 63440 1519092 0 0 0 30 4284 1706 33 17 50 0 0
r 可运行队列。单核cpu,不应该超过3(经验得到的数据,只是表明大于这个值表明运行队列有点长)
b 当前被阻塞的进程,一般这些进程都是在等待某些外部资源而被阻塞。>3需要注意,而且一直出现或者经常出现,就更值得注意
in 中断数。一般代表大量设备操作成功通知内核。
cs 上下文切换。一般代表任务需要紧急被cpu处理。数字高,只能说明内核在充分发挥它的任务调度作用。不能简单通过该数字判断cpu就出现瓶颈。
us 用户进程所占用的cpu时间的百分比
sy 内核在进行任务调度所占用的cpu时间的百分比
id cpu空闲所占用的时间百分比.仅仅0不能简单判断cpu出现瓶颈,只能说它被充分被留用。
wa 等待IO所消耗时间百分比
st 被硬件虚拟化的虚拟机所消耗掉的时间百分比
mpstat 和 vmstat 类似,不同的是 mpstat 可以输出多个处理器的数据
# mpstat -P ALL 1 ---P ALL表示查看所有CPU核, 1表示每一秒显示一次
10:46:35 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
10:46:36 AM all 26.13 0.00 6.53 0.00 3.52 9.05 0.00 54.77 19478.22
10:46:36 AM 0 25.74 0.00 6.93 0.00 2.97 7.92 0.00 56.44 9740.59
10:46:36 AM 1 26.73 0.00 6.93 0.00 3.96 10.89 0.00 51.49 9739.60
==============================
nice 优先级 能调的范围是 -20到19 -20表示优先级最高,19最低
用户运行一个程序默认给的优先级为0
renice 对一个已经运行的进程进行nice值的调整
renice 19 pid
[root@li ~]# vim /tmp/test.sh
a=1
while [ $a -lt 1000000 ]
do
let a++
done
nice 优先级高的能够优先分配资源,跑得快,花费的时间少,负载越高,效果越明显
实验
在一个负载高的情况下做效果更好,比如一个大文件的cp
第一个终端:
[root@li ~]# time sh /tmp/test.sh
real 0m39.363s
user 0m26.338s
sys 0m0.900s
第二个终端:
[root@li ~]# time nice --19 sh /tmp/test.sh --19 第一个是参数的横杠,第二个是负号
real 0m26.881s
user 0m26.008s
sys 0m0.871s
--对比上面的时间,可以看到 高优先级的花费的时间少
可以把上面的实验再做一次,马上用top查出-19的pid值,并使用renice修改
renice 19 9683
[root@li ~]# time sh /tmp/test.sh
real 0m34.665s
user 0m26.277s
sys 0m0.896s
[root@li ~]# time nice --19 sh /tmp/test.sh
real 0m37.231s
user 0m26.094s
sys 0m0.905s
# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 2258668 7692 1052824 0 0 134 21 298 423 4 1 95 1 0
网络的监测是所有 Linux 子系统里面最复杂的,有太多的因素在里面,
比如:延迟、阻塞、冲突、丢包等,更糟的是与 Linux 主机相连的路由器、
交换机、无线信号都会影响到整体网络并且很难判断是因为 Linux 网络子系统的问题还是别的设备的问题,
增加了监测和判断的复杂度。现在我们使用的所有网卡都称为自适应网卡,
意思是说能根据网络上的不同网络设备导致的不同网络速度和工作模式进行自动调整。
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0 --主备模式目前正在使用的主网卡
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:f4:4c:de --eth0的MAC
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:f4:4c:e8 --eth1的MAC,在这里看是和ifconfig看不一样的
Slave queue ID: 0
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1 --主网卡成为eth1了
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: down --eth0的状态为down了
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: 00:0c:29:f4:4c:de
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:f4:4c:e8
Slave queue ID: 0