CPU使用率
cpu使用率是cpu使用情况的统计,以百分比的方式统计
为了维护cpu时间,linxu通过事先定义的节拍率(内核中表示为HZ),触发时间中断,使用全局变量Jiffies记录开机以来的节拍数。每发生一次时间中断Jiffies的值+1
节拍率HZ是内核的可配选项,可以设置为100,250,1000等 可以通过查询/boot/config内核选项来查看它的配置值
zhk@ubuntu:~$ grep 'CONFIG_HZ=' /boot/config-$(uname -r)
CONFIG_HZ=250
用户空间节拍USER_HZ,固定为100
/proc/stat提供的是系统cpu和任务统计信息
zhk@ubuntu:~$ cat /proc/stat |grep ^cpu
cpu 9953 209 6666 78345 1569 0 478 0 0 0
cpu0 4809 41 3438 39398 808 0 127 0 0 0
cpu1 5144 168 3228 38946 761 0 350 0 0 0
第一列cpu编号,其他列表示不同场景下cpu的累加节拍数,单位是user_hz
cpu使用率的重要相关指标
- user(通常缩写为us),代表用户态CPU时间。注意,它不包括下面的nice时间,但是包括了gust时间
- nice (通常缩写为ni),代表低优先级用户态cpu时间,也就是进程的nice值被调整为1-19之间的cpu时间,nice的取值范围是-20到19,数值越大,优先级越低
- system(通常缩写为sys),代表内核态cpu时间
- idle(通常缩写为id) 空闲时间,不包括等待io的时间(iowait)
- iowait(通常缩写为wa),代表等待IO的cpu时间
- irq(通常缩写为hi),代表处理硬中断的cpu时间
- softirq(通常缩写为si),代表处理软中断的cpu时间
- steal(通常缩写为st),代表党系统运行在虚拟机中的时候,被其他虚拟机占用的cpu时间
- guest(通常缩写为guest),代表通过虚拟化运行其他操作系统的时间,也就是运行虚拟机的cpu时间。
- guest_nice(通常缩写为gnice),代表以低优先级运行虚拟机的时间
为了计算cpu使用率,通过会取间隔一段时间(比如3秒)的两次值,做差
查看cpu使用率
top
默认3秒
pidstat
– 用户态cpu使用率(%usr)
– 内核态cpu使用率(%system)
– 运行虚拟机cpu使用率(%guest)
– 等待cpu使用率(%wait)
– 总的cpu使用率(%CPU)
zhk@ubuntu:~$ #每隔1秒输出一组数据,供输出5组
zhk@ubuntu:~$ pidstat 1 5
Linux 4.15.0-42-generic (ubuntu) 12/20/2018 _x86_64_ (2 CPU)
10:56:45 AM UID PID %usr %system %guest %wait %CPU CPU Command
10:56:46 AM 103 491 0.00 0.98 0.00 0.00 0.98 1 dbus-daemon
10:56:46 AM 116 563 0.00 0.98 0.00 0.00 0.98 1 avahi-daemon
10:56:46 AM 1000 2063 0.98 0.98 0.00 0.98 1.96 0 Xorg
10:56:46 AM 1000 2180 1.96 0.00 0.00 0.00 1.96 1 gnome-shell
10:56:46 AM 1000 2500 0.00 0.98 0.00 0.00 0.98 1 prlcc
10:56:46 AM 1000 7690 0.00 1.96 0.00 0.00 1.96 0 pidstat
perf top
perf record
perf report
-g表示开启调用关系分析 -p 指定进程号
perf top -g -p pid