Linux CPU占用率原理与精度分析
Linux 的 CPU 占用率计算逻辑还挺有意思的,不是简单加减,而是靠读系统里的/proc/stat
文件来搞定的。你会看到一串 tick 值,比如用户时间、系统时间、空闲时间等等,根据这些数据算出各种占比。
原理听起来有点玄,其实挺直观的:每种状态的时间加起来就是总 CPU 时间,再一除,百分比就出来了。像用户时间
和nice 时间
算用户占用率,系统时间
加中断时间算系统占用率。啥时候系统卡了,用这个办法就能一眼看出是 CPU 忙不过来了,还是 I/O 拖后腿。
它底层是从内核的fs/proc/stat.c
里读出来的,初始化用的是proc_stat_init()
,数据读取靠stat_open()
函数申内存,一通操作后就能把最新的 CPU 状态传给用户空间。简单说,就是你用top
、htop
这些工具看的数据,其实都从这里来的。
如果你平时在做性能监控,或者对系统资源感兴趣,推荐把这个原理搞明白。调优、排查、写脚本采集数据都能用上。不熟悉的可以先去看看CPU 占用率监测那篇文章,讲得也蛮清楚。
232.6KB
文件大小:
评论区