性能常识 CPU 利用率高的原因

会飞的猪 · 2018年12月12日 · 1055 次阅读

一、首先明确 CPU 利用率的概念
在 Linux/Unix 下,CPU 利用率分为用户态、系统态和空闲态,分别表示 CPU 处于用户态执的时间,系统内核执行的时间,和空闲系统进程执行的时间。
us:用户空间占用 CPU 百分比
sy:内核空间占用 CPU 百分比
ni:用户进程空间内改变过优先级的进程占用 CPU 百分比
id:空闲 CPU 百分比
wa:等待输入输出的 CPU 时间百分比
hi:硬件中断
si:软件中断
st:实时

所以通过上面概念,可以得出当任何一个占用 CPU 时间比较多时,CPU 的利用率就会比较高。

共有 9 个值(单位:ticks),分别为:
ticks 就是系统时钟中断的时间间隔,该值与内核中 HZ 值有关,即 ticks = 1/HZ。
CPU 时间=user+system+nice+idle+iowait+irq+softirq+Stl +guest
%us=(User time + Nice time)/CPU 时间 *100%
%sy=(System time + Hard Irq time +SoftIRQ time)/CPU 时间 *100%
%id=(Idle time)/CPU 时间 *100%
%ni=(Nice time)/CPU 时间 *100% %wa=(Waiting time)/CPU 时间 *100%
%hi=(Hard Irq time)/CPU 时间 *100%
%si=(SoftIRQ time)/CPU 时间 *100%
%st=(Steal time)/CPU 时间 *100%

CPU 利用率总结:
(1)Linux CPU 占用率是根据/proc/stat 文件中的数据计算而来;
(2)/proc/stat 中的数据精度为 ticks,即 1/HZ 秒;
(3)内核每个 ticks 会更新一次 CPU 使用信息;
(4)CPU 占用率的精度为 1/HZ 秒。

所以通过上面概念,可以得出当任何一个占用 CPU 时间比较多时,CPU 的利用率就会比较高。那么出现 CPU 利用率就会增高时,那么紧接着就是查找哪个应用程序占用 CPU 时间比较高

ps:
时间片即 CPU 分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则 CPU 将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则 CPU 当即进行切换。而不会造成 CPU 资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个 CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册