CPU 使用率除了系统负载、上下文切换信息,最直观的 CPU 问题指标就是 CPU 使用率信息 。Linux 通过/proc虚拟文件系统向用户控件提供系统内部状态信息,其中/proc/stat则是 CPU 和任务信息统计 。
$ cat /proc/stat | grep cpucpu6392076667 1160 3371352191 52468445328 3266914 37086 36028236 20721765 0 0cpu0 889532957 175 493755012 6424323330 2180394 37079 17095455 3852990 0 0...这里每一列的含义如下:
- user(通常缩写为 us),代表用户态 CPU 时间 。注意,它不包括下面的 nice 时间,但包括了 guest 时间 。
- nice(通常缩写为 ni),代表低优先级用户态 CPU 时间,也就是进程的 nice 值被调整为 1-19 之间时的 CPU 时间 。这里注意,nice 可取值范围是 -20 到 19,数值越大,优先级反而越低 。
- system(通常缩写为 sys),代表内核态 CPU 时间 。
- idle(通常缩写为 id),代表空闲时间 。注意,它不包括等待 I/O 的时间(iowait) 。
- iowait(通常缩写为 wa),代表等待 I/O 的 CPU 时间 。
- irq(通常缩写为 hi),代表处理硬中断的 CPU 时间 。
- softirq(通常缩写为 si),代表处理软中断的 CPU 时间 。
- steal(通常缩写为 st),代表当系统运行在虚拟机中的时候,被其他虚拟机占用的 CPU 时间 。
- guest(通常缩写为 guest),代表通过虚拟化运行其他操作系统的时间,也就是运行虚拟机的 CPU 时间 。
- guest_nice(通常缩写为 gnice),代表以低优先级运行虚拟机的时间 。
这里我们可以使用perf top方便查看热点数据,也可以使用perf record可以将当前数据保存起来方便后续使用perf report查看 。
CPU 使用率问题排查这里总结一下 CPU 使用率问题及排查思路:
- 用户 CPU 和 Nice CPU 高,说明用户态进程占用了较多的 CPU,所以应该着重排查进程的性能问题 。
- 系统 CPU 高,说明内核态占用了较多的 CPU,所以应该着重排查内核线程或者系统调用的性能问题 。
- I/O 等待 CPU 高,说明等待 I/O 的时间比较长,所以应该着重排查系统存储是不是出现了 I/O 问题 。
- 软中断和硬中断高,说明软中断或硬中断的处理程序占用了较多的 CPU,所以应该着重排查内核中的中断服务程序 。
- 用户 CPU 使用率,包括用户态 CPU 使用率(user)和低优先级用户态 CPU 使用率(nice),表示 CPU 在用户态运行的时间百分比 。用户 CPU 使用率高,通常说明有应用程序比较繁忙 。
- 系统 CPU 使用率,表示 CPU 在内核态运行的时间百分比(不包括中断) 。系统 CPU 使用率高,说明内核比较繁忙 。
- 等待 I/O 的 CPU 使用率,通常也称为 iowait,表示等待 I/O 的时间百分比 。iowait 高,通常说明系统与硬件设备的 I/O 交互时间比较长 。
- 软中断和硬中断的 CPU 使用率,分别表示内核调用软中断处理程序、硬中断处理程序的时间百分比 。它们的使用率高,通常说明系统发生了大量的中断 。
- 除在虚拟化环境中会用到的窃取 CPU 使用率(steal)和客户 CPU 使用率(guest),分别表示被其他虚拟机占用的 CPU 时间百分比,和运行客户虚拟机的 CPU 时间百分比 。
上下文切换上下文切换主要关注 2 项指标:
- 无法获取资源而导致的自愿上下文切换 。
- 被系统强制调度导致的非自愿上下文切换 。
# ./cachestat -tCounting cache functions... Output every 1 seconds.TIMEHITSMISSESDIRTIESRATIOBUFFERS_MBCACHE_MB08:28:5741500100.0%119108:28:5841100100.0%119108:28:5936297078.9%0808:29:0041100100.0%0908:29:017752048903.6%08908:29:0241100100.0%08908:29:03606900100.0%08908:29:041524900100.0%08908:29:0541100100.0%08908:29:0641100100.0%08908:29:0741103100.0%089[...]总结通过性能指标查工具(CPU 相关)
推荐阅读
- 禁止频繁访问的ip访问nginx
- 快速掌握shell脚本的各种循环语句
- 初试CoreDNS
- 优雅的drop掉mysql库中1TB大表
- 数仓、数据平台和中台还分不清楚?老板的多年经验之谈,看完懂了
- 康熙前一位皇帝是 康熙在位时的太后
- 孙权是不是三国人 孙权是哪个时期
- 李唐是汉族吗 现在姓李的都是唐朝后代吗
- 韩熙载夜宴图作者介绍及作品赏析 《韩熙载夜宴图》的作者是谁?
- 夏季我国气温最低的分布区是 立夏的气候特点是什么
