linux_cpu_usage_analysis

linux_cpu_usage_analysis

ID:15399601

大小:234.09 KB

页数:14页

时间:2018-08-03

linux_cpu_usage_analysis_第1页
linux_cpu_usage_analysis_第2页
linux_cpu_usage_analysis_第3页
linux_cpu_usage_analysis_第4页
linux_cpu_usage_analysis_第5页
资源描述:

《linux_cpu_usage_analysis》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、LinuxCPU占用率原理与精确度分析http://ilinuxkernel.com1CPU占用率计算原理1.1相关概念在Linux/Unix下,CPU利用率分为用户态、系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。下面是几个与CPU占用率相关的概念。CPU利用率CPU的使用情况。用户时间(Usertime)表示CPU执行用户进程的时间,包括nices时间。通常期望用户空间CPU越高越好。系统时间(Systemtime)表示CPU在内核运行时间,包括IRQ和softirq时间。系统CPU占用率

2、高,表明系统某部分存在瓶颈。通常值越低越好。等待时间(Waitingtime)CPI在等待I/O操作完成所花费的时间。系统部应该花费大量时间来等待I/O操作,否则就说明I/O存在瓶颈。空闲时间(Idletime)系统处于空闲期,等待进程运行。Nice时间(Nicetime)系统调整进程优先级所花费的时间。硬中断处理时间(HardIrqtime)系统处理硬中断所花费的时间。软中断处理时间(SoftIrqtime)系统处理软中断中断所花费的时间。丢失时间(Stealtime)被强制等待(involuntarywait)虚拟CPU的时间,此时h

3、ypervisor在为另一个虚拟处理器服务。下面是我们在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%stus:Usertimesy:Systemtimeni:Nicetimeid:Idletimewa:Waitingtimehi:HardIrqtimesi:SoftIrqtimest:Stealtime1.2CPU占用率计算LinuxCPU占用率计算,都是根据/proc/stat文件内容计算而来,下面是stat文件内容样例,内核

4、版本不同,会稍有不同,但内容基本一致。CPU信息,cpu为总的信息,cpu0…cpun为各个具体CPU信息cpu66173346850392523305557354883514244158490上面共有8个值(单位:ticks),分别为:Usertime,661733Nicetime,468Systemtime,503925Idletime,233055573Waitingtime,548835HardIrqtime,14244SoftIRQtime,15849Stealtime,0CPU占用率计算公式如下:CPU时间=user+system+nic

5、e+idle+iowait+irq+softirq+Stl%us=(Usertime+Nicetime)/CPU时间*100%%sy=(Systemtime+HardIrqtime+SoftIRQtime)/CPU时间*100%%id=(Idletime)/CPU时间*100%%ni=(Nicetime)/CPU时间*100%%wa=(Waitingtime)/CPU时间*100%%hi=(HardIrqtime)/CPU时间*100%%si=(SoftIRQtime)/CPU时间*100%%st=(Stealtime)/CPU时间*100%2CPU

6、占用率内核实现下面以RHEL6内核源码版本2.6.32-220.el6x86_64为例,来介绍内核源码实现。/proc/stat文件的创建由函数proc_stat_init()实现,在文件fs/proc/stat.c中,在内核初始化时调用。/proc/stat文件相关函数时间均在stat.c文件中。对/proc/stat文件的读写方法为proc_stat_operations。00152:staticconststructfile_operationsproc_stat_operations={00153:.open=stat_open,00154:

7、.read=seq_read,00155:.llseek=seq_lseek,00156:.release=single_release,00157:};00158:打开文件函数stat_open(),函数首先申请大小为size的内存,来存放临时数据(也是我们看到的stat里的最终数据)。00128:staticintstat_open(structinode*inode,structfile*file)00129:{00130:unsignedsize=4096*(1+num_possible_cpus()/32);00131:char*buf;0

8、0132:structseq_file*m;00133:intres;00134:00135:/*don't

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
相关文章
更多
相关标签