Linux CPU占用率原理与精确度分析

更新时间:2023-06-16 01:13:26 阅读: 评论:0

Linux CPU占用率原理与
精确度分析
<
1CPU占用率计算原理
1.1相关概念
在Linux/Unix下,CPU利用率分为用户态、系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。
下面是几个与CPU占用率相关的概念。
种子的拼音怎么写>护肤品的使用步骤⏹CPU利用率
CPU的使用情况。
⏹用户时间(Ur time)
表示CPU执行用户进程的时间,包括nices时间。通常期望用户空间CPU越高越好。
应急疏散
⏹系统时间(System time)
表示CPU在内核运行时间,包括IRQ和softirq时间。系统CPU占用率高,表明系统某部分存在瓶颈。通常值越低越好。
⏹等待时间(Waiting time)
CPI在等待I/O操作完成所花费的时间。系统部应该花费大量时间来等待I/O操作,否则就说明I/O存在瓶颈。
⏹空闲时间(Idle time)
系统处于空闲期,等待进程运行。
⏹Nice时间(Nice time)
系统调整进程优先级所花费的时间。
⏹硬中断处理时间(Hard Irq time)
系统处理硬中断所花费的时间。
⏹软中断处理时间(SoftIrq time)
系统处理软中断中断所花费的时间。
⏹丢失时间(Steal  time)
被强制等待(involuntary wait)虚拟CPU的时间,此时hypervisor在为另一个虚拟处理器服务。
下面是我们在top命令看到的CPU占用率信息及各项值含义。
Cpu(s):  0.2%us,  0.2%sy,  0.0%ni, 99.2%id,  0.5%wa,  0.0%hi,  0.0%si,  0.0%st
来大姨妈有血块是怎么回事
us: Ur time
sy: System time
ni: Nice time
id: Idle time
wa: Waiting time
hi: Hard Irq time
si: SoftIrq time
st: Steal time
1.2CPU占用率计算
Linux CPU占用率计算,都是根据/proc/stat文件内容计算而来,下面是stat 文件内容样例,内核版本不同,会稍有不同,但内容基本一致。
CPU信息,cpu为总的信息,cpu0 … cpun为各个具体CPU信息
cpu 661733 468 503925 233055573 548835 14244 15849 0
上面共有8个值(单位:ticks),分别为:
Ur time,661733 Nice time, 468
System time, 503925              Idle time,233055573
Waiting time,548835              Hard Irq time, 14244
SoftIRQ time,15849                Steal time,0
CPU占用率计算公式如下:
领悟的拼音CPU时间=ur+system+nice+idle+iowait+irq+softirq+Stl
%us=(Ur 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%
杨氏2CPU占用率内核实现
下面以RHEL6内核源码版本2.6.32-220.el6 x86_64为例,来介绍内核源码实现。/proc/stat文件的创建由函数proc_stat_init()实现,在文件fs/proc/stat.c中,在内核初始化时调用。/proc/stat文件相关函数时间均在stat.c文件中。
对/proc/stat文件的读写方法为proc_stat_operations。
00152: static const struct file_operations proc_stat_operations = {
stat_open,
00153: .open =
q_read,
00154: .read =
不二法门是什么意思
q_lek,
00155: .llek =
00156: .relea = single_relea,
00157: };
00158:
打开文件函数stat_open(),函数首先申请大小为size的内存,来存放临时数据(也是我们看到的stat里的最终数据)。
00128: static int s t a t_o p e n(struct inode *inode, struct file *file) 00129: {
00130: unsigned size = 4096 * (1 + num_possible_cpus() / 32); 00131: char *buf;
00132: struct q_file *m;
00133: int res;
00134:专业卡
00135: / * don't ask for more than the kmalloc() max size, currently 128 KB */

本文发布于:2023-06-16 01:13:26,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1040428.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时间   系统   占用率   内核
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图