Linux 监控工具
top:展现所有过程信息
vmstat:展现系统活动,硬件和零碎信息
vmstat pid 10
ps:
ps aux | sort -k3nr | head -n 10
:展现 CPU / 内存排名
free:展现内存占用
free -g
iostat:展现 IO 信息
iostat -x -k -d
pidstat:展现过程的 CPU 应用状况
pidstat -u -p ALL
[root@ZT-TEST ~]# pidstat -p 8938 -w 1 10Linux 3.10.0-957.el7.x86_64 (ZT-TEST) 2021年10月03日 _x86_64_ (4 CPU)10时13分44秒 UID PID cswch/s nvcswch/s Command10时13分45秒 42 8938 1.00 1.00 gsd-color10时13分46秒 42 8938 1.00 0.00 gsd-color10时13分47秒 42 8938 1.00 0.00 gsd-color
cswch/s:被动切换;值过高,阐明内存 IO 资源有余
nvcswch/s:被动切换;值过高,阐明工夫片有余
mpstat:展现 CPU 所有内核的应用状况
mpstat -P ALL 1
netstat:过程连接数统计
netstat -anp | grep pid | wc -l
jstat:每秒刷新一次 GC 状况
jstat -gcutil pid 1000
dstat:中断与上下文切换统计
dstat -y
strace:拦挡零碎调用
strace -tt -f -p pid
CPU 根本形成
命令:lscpu
[root@ZT-TEST ~]# lscpuArchitecture: x86_64CPU op-mode(s): 32-bit, 64-bitByte Order: Little EndianCPU(s): 4 # 逻辑 CPU 个数On-line CPU(s) list: 0-3Thread(s) per core: 1 # 线程,每个 核 中有1个线程Core(s) per socket: 1 # 核,指每个 卡槽 下有1个核座: 4 # socket-卡槽,指每个 CPU 下有4个卡槽NUMA 节点: 1厂商 ID: GenuineIntelCPU 系列: 6型号: 45型号名称: Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz步进: 7CPU MHz: 2600.000BogoMIPS: 5200.00超管理器厂商: VMware虚拟化类型: 齐全L1d 缓存: 32KL1i 缓存: 32KL2 缓存: 256KL3 缓存: 20480KNUMA 节点0 CPU: 0-3Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm ssbd ibrs ibpb stibp tsc_adjust arat spec_ctrl intel_stibp flush_l1d arch_capabilities
负载与利用率
CPU负载
命令:top
[root@ZT-TEST ~]# toptop - 18:05:32 up 214 days, 3:19, 1 user, load average: 0.01, 0.02, 0.05Tasks: 263 total, 1 running, 262 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.8 us, 0.2 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 8174056 total, 331764 free, 3016584 used, 4825708 buff/cacheKiB Swap: 4194300 total, 4191968 free, 2332 used. 4297980 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8938 gdm 20 0 777872 76052 9500 S 2.0 0.9 2493:51 gsd-color12511 root 20 0 5735740 148696 16064 S 0.7 1.8 358:06.15 java 4785 root 20 0 164232 2536 1644 R 0.3 0.0 0:00.06 top 5820 root 20 0 320216 6880 5388 S 0.3 0.1 282:22.54 vmtoolsd
均匀负载:
load average: 0.01, 0.02, 0.05
均匀负载是指单位工夫内,零碎处于可运行状态和不可中断状态的均匀过程数,也就是均匀沉闷过程数
- 可运行状态的过程:正在应用 CPU 或者正在期待 CPU 的过程,也就是处于 R 状态(Running 或 Runnable)的过程
- 不可中断状态的过程:正处于内核态要害流程中的过程,并且这些流程是不可打断的,比方最常见的是期待硬件设施的 I/O 响应,也就是咱们在 ps 命令中看到的 D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的过程
CPU 利用率
当均匀负载等于 CPU(s): 4 (逻辑 CPU 个数) ,阐明每个 CPU 都失去了充分利用
通过 top
查看整体每个过程的 CPU 利用率
通过 mpstat -P ALL 1
查看逻辑 CPU 利用率
[root@ZT-TEST ~]# mpstat -P ALL 1Linux 3.10.0-957.el7.x86_64 (ZT-TEST) 2021年10月02日 _x86_64_ (4 CPU)18时16分57秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle18时16分58秒 all 0.75 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.00 99.0018时16分58秒 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.0018时16分58秒 1 1.01 0.00 1.01 0.00 0.00 0.00 0.00 0.00 0.00 97.9818时16分58秒 2 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 98.0018时16分58秒 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00# 0--3 别离代表4个 CPU
mpstat -P ALL 1
的后果剖析:
- %usr:用户空间;导致空间有余起因:代码、我的项目运行
- %sys:零碎空间;导致空间有余起因:内存不足、CPU有余、IO故障、网络故障……
- %irq:上下文切换
- %soft:软中断
- %steal:硬中断
CPU 利用率与均匀负载的关系:
- CPU 利用率=100%,均匀负载=CPU 个数:现实状态,CPU 失去充分利用,队列中没有排队期待的线程
- CPU 利用率=100%,均匀负载>CPU 个数:CPU 满载,超负荷运行,队列中有排队期待的线程
- CPU 利用率<100%,均匀负载<CPU 个数:CPU 没有被齐全利用
命令:vmstat 1 10
[root@ZT-TEST ~]# vmstat 1 10procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 3368 2922680 4204 4345184 0 0 0 1 0 0 0 0 100 0 0 0 0 3368 2922688 4204 4345216 0 0 0 8 143 229 1 0 100 0 0 0 0 3368 2922688 4204 4345216 0 0 0 0 173 281 1 0 99 0 0 # 当 r + b 远远大于 CPU 线程数,阐明零碎处于过载状态
过程优先级
命令:top
[root@ZT-TEST ~]# toptop - 10:13:15 up 214 days, 19:26, 1 user, load average: 0.06, 0.05, 0.05Tasks: 262 total, 1 running, 261 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.7 us, 0.2 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 8174056 total, 338476 free, 3015636 used, 4819944 buff/cacheKiB Swap: 4194300 total, 4191968 free, 2332 used. 4282596 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8938 gdm 20 0 778004 76244 9500 S 1.7 0.9 2510:43 gsd-color26591 kingkong 20 0 5722784 1.2g 24080 S 0.7 15.6 765:28.80 java 5820 root 20 0 320216 6880 5388 S 0.3 0.1 283:16.87 vmtoolsd 5860 avahi 20 0 62364 2464 1864 S 0.3 0.0 458:16.62 avahi-daemon12511 root 20 0 5735740 148696 16064 S 0.3 1.8 363:33.44 java31958 root 20 0 164232 2536 1644 R 0.3 0.0 0:00.04 top
PR:过程的实时优先级;范畴是从 0 到 99。PR 的值越高,过程优先级就越高
NI:范畴从-20 到+19,正值示意低优先级,负值示意高优先级。0 示意不调整该过程的优先级
- 两者关系:NI 越低,过程工夫片越多,PR 值越低,过程的优先级就越高
- 过程优先级调整形式:
top
命令下按 R 键,先输出过程号,再输出优先级数值(-10~+19)
模仿负载
stress
参考链接:
https://blog.csdn.net/weixin_...
装置:
yum install -y epel-release.noarch && yum -y updateyum install -y stress stress-ng
常用命令(应用注意事项:不要生成过多过程,会伤害 CPU):
stress-ng -c 2 -t 30 -c
:指定过程数 -t 指定工夫stress-ng -c 2 --cpu-method pi
:产生 2 个过程做圆周率算法压力stress-ng -c 16 --cpu-method all
:生成 16 个过程应用多种不同的算法竞争 CPUtaskset -c 16 stress-ng --timeout 30 --cpu 1
:生成 16 个过程对索引为 0 的逻辑 CPU 施加压力, 继续 30 秒stress-ng -c 16 --timeout 300
:模仿 16 个过程抢夺 CPU 继续 300 秒stress-ng -i 1 --timeout 600
:模仿 IO 过程