Linux CPU性能监控工具


Linux CPU性能监控工具


架构
CPU架构主要包括桌面端和移动端两种 。
对于桌面端 , 主要有Intel和AMD两家半导体厂商 , 2006年前主要是Intel 80386/80486等32位指令集 , 又称X86或8086 , 后来AMD推出64位指令集 , 又称AMD64/X86_64 , 该64位指令集兼容32位 。
对于移动端 , 只有ARM(现已被GPU巨头NVIDIA收购)一家独大 , 2010年之前 , ARM指令集包括ARMv1-v7系列 , 都是32位 , 2010年以后 , 调整为Contex系列 , 分为A系列(高端)、R系列(中端)、M系列(低端) , 称为ARM64指令 。其中 , 我们熟悉的树莓派使用的是A系列芯片 。
性能指标CPU的工作时间由三部分组成:用户态时间、系统态时间和空闲态时间 。具体的组成为:
CPU时间包含User time、System time、Nice time、Idle time、Waiting time、Hardirq time、Softirq time、Steal time 。
用户态时间=User time+ Nice time 。
内核态时间=System time+ Hardirq time+ Softirq time 。
  • %usr
user time指CPU在用户态执行进程的时间 。
合理值:60-85% , 如果在一个多用户系统中usr+sys时间超过85% , 则进程可能要花时间在运行队列中等待 , 响应时间和业务吞吐量会受损害;usr过大 , 说明有用户进程占用很多cpu时间;sys过大 , 说明系统管理方面花了很多时间 , 说明该系统中某个子系统产生了瓶颈 。
  • %sys
system time 。指CPU在内核运行的时间 。
合理值:60-85%
  • %ni
nice time指系统花费在调整进程优先级上的时间 。
  • %wa
waiting time指CPU花费在等待I/O操作上的总时间 。
参考值:小于25% 。超过25%可能是磁盘密集工作负载的结果 , 系统的磁盘或其它I/O可能有问题 , 可以通过iostat/sar -C命令进一步分解分析 。
  • %id
idle time 。系统处于空闲期 , 等待进程运行 。
参考值:大于40 。如果r经常大于4 , 且id经常小于40 , 表示cpu的负荷很重 。
  • %hi
hardirq time系统在处理硬中断时候所花费的CPU时间 。
  • %si
softirq time系统在处理软中断时候所花费的CPU时间 。
  • %st
steal time指当前CPU被强制(involuntary wait)等待另外虚拟的CPU处理完毕时花费的时间 。
  • r
runq-sz运行进程队列的长度 。对于可运行状态的进程个数的大小 , 这些进程在内存中准备就绪 。
参考值:小于4 , 队列大于4时 , 表明系统的cpu或内存可能有问题 , 如果r经常大于4 , 且id经常少于40 , 表示cpu的负荷很重 。当队列变长时 , 队列中进程在等待cpu调度执行时所花的时间会变长 。
监控工具
  • CPU信息
lscpuprocessor: 0vendor_id: GenuineIntelcpu family: 6model: 142model name: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHzstepping: 10microcode: 0x96cpu MHz: 700.120cache size: 6144 KBphysical id : 0siblings: 8core id: 0cpu cores: 4apicid: 0initial apicid: 0fpu: yesfpu_exception: yescpuid level : 22wp: yesflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp flush_l1d

推荐阅读