LINUXCPU利用率算法android_第1页
LINUXCPU利用率算法android_第2页
LINUXCPU利用率算法android_第3页
LINUXCPU利用率算法android_第4页
LINUXCPU利用率算法android_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Linux 平台 Cpu 使用率的计算proc 文件系统/proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。 它以文件系统的方式为内核与进程提供通信的接口。 用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc 目录中的文件时,proc 文件系统是动态从系统内核读出所需信息并提交的。/proc 目录中有一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程在/proc 下都对应一个以进程号为目录名的目录/proc/pid,它们是读取进程信息的接口。止匕外,在 Linux2

2、.6.0-test6 以上的版本中/proc/pid 目录中有一个 task 目录,/proc/pid/task 目录中也有一些以该进程所拥有的线程的线程号命名的目录/proc/pid/task/tid,它们是读取线程信息的接口。/proc/cpuinfo 文件该文件中存放了有关 cpu 的相关信息(型号,缓存大小等)。zhengangenbuick$cat/proc/cpuinfoprocessor:0vendor_id:GenuineIntelcpufamily:15model:4modelname:Intel(R)Xeon(TM)CPU3.00GHzstepping:10cpuMHz:3

3、001.177cachesize:2048KBphysicalid:0siblings:2coreid:0cpucores:1fdiv_bug:nohlt_bug:nof00f_bug:nocoma_bug:nofpu:yesfpu_exception:yescpuidlevel:5wp:yesflags:fpuvmedepsetscmsrpaemcecx8apicmtrrpgemcacmovpatpse36clflushdtsacpimmXxsrssesse2sshttmpbelmpnimonitords_cplcidxtprbogomips:6004.52说明:以下只解释对我们计算 Cpu

4、 使用率有用的相关参数。参数解释processor(0)cpu 的一个物理标识结论 1:可以通过该文件根据 processor 出现的次数统计 cpu 的逻辑个数(包括多核、超线程)。/proc/stat 文件该文件包含了所有 CPU 舌动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。不同内核版本中该文件的格式可能不大一致,以下通过实例来说明数据该文件中各字段的含义。实例数据:2.6.24-24 版本上的fjzagfjzag-desktop:-$cat/proc/statcpu38082627275948939081225658189500cpu022880472168554302

5、871061757666100cpu115202154107394636201639423400intr12005322226860110503000473020034194297750501984500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

6、0000ctxt1434984btime1252028243processes8113procs_running1procs_blocked0第一彳:的数值表示的是 CPU 总的使用情况,所以我们只要用第一行的数字计算就可以了。下表解析第一行各数值的含义:参数解析(单位:jiffies)(jiffies 是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在 linux 中,一个节拍大致可理解为操作系统进程调度的最小时间片,不同 linux内核可能值有不同,通常在 1ms 到 10ms 之间)user(38082)从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice 值

7、为负进程。nice(627)从系统启动开始累计到当前时刻,nice 值为负的进程所占用的 CPU 寸问system(27594)从系统启动开始累计到当前时刻,处于核心态的运行时间idle(893908)从系统启动开始累计到当前时刻,除 IO 等待时间以外的其它等待时间 iowait(12256)从系统启动开始累计到当前时刻,IO 等待时间(since2.5.41)irq(581)从系统启动开始累计到当前时刻,硬中断时间(since2.6.0-test4)softirq(895)从系统启动开始累计到当前时刻,软中断时间(since2.6.0-test4)stealstolen(0)whichis

8、thetimespentinotheroperatingsystemswhenrunninginavirtualizedenvironment(since2.6.11)guest(0)whichisthetimespentrunningavirtualCPUforguestoperatingsystemsunderthecontroloftheLinuxkernel(since2.6.24)结论 2:总的 cpu 时间 totalCpuTime=user+nice+system+idle+iowait+irq+softirq+stealstolen+guest/proc/stat 文件该文件包

9、含了某一进程所有的活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。以下通过实例数据来说明该文件中各字段的含义。zhengangenbuick#cat/proc/6873/stat6873(a.out)R6723687367233481968738388608770004195831002503058826541409024564294967295134512640134513720321557904002097798000000017000说明:以下只解释对我们计算 Cpu 使用率有用相关参数参数解释pid=6873 进程号utime=1587 该任务在用户态运行的时间,单位为j

10、iffiesstime=41958 该任务在核心态运行的时间,单位为jiffiescutime=0 所有已死线程在用户态运行的时间,单位为 jiffiescstime=0 所有已死在核心态运行的时间,单位为jiffies结论 3:进程的总 Cpu 时间 processCpuTime=utime+stime+cutime+cstime,该值包括其所有线程的 cpu 时间。/proc/task/stat 文件该文件包含了某一进程所有的活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。该文件的内容格式以及各字段的含义同/proc/stat文件。注意,该文件中的 tid 字段表示的不再是进

11、程号,而是 linux 中的轻量级进程(lwp),即我们通常所说的线程。结论4:线程 Cpu 时间 threadCpuTime=utime+stime 系统中有关进程 cpu 使用率的常用命令ps 命令通过 ps 命令可以查看系统中相关进程的 Cpu 使用率的信息。以下在 linuxman文档中对 ps 命令输出中有关 cpu 使用率的解释:CPUusageiscurrentlyexpressedasthepercentageoftimespentrunningduringtheentirelifetimeofaprocess.Thisisnotideal,anditdoesnotconfor

12、mtothestandardsthatpsotherwiseconformsto.CPUusageisunlikelytoadduptoexactly100%.%cpucpuutilizationoftheprocessin#.#format.ItistheCPUtimeuseddividedbythetimetheprocesshasbeenrunning(cputime/realtimeratio),expressedasapercentage.Itwillnotaddupto100%unlessyouarelucky.结论 5:ps 命令算出来的 cpu 使用率相对于进程启动时的平均值,

13、随着进程运行时间的增大,该值会趋向于平缓。top 命令通过 top 命令可以查看系统中相关进程的实时信息(cpu 使用率等)。以下是 man文档中对 top 命令输出中有关进程 cpu 使用率的解释。#C-LastusedCPU(SMP)Anumberrepresentingthelastusedprocessor.InatrueSMPenvironmentthiswilllikelychangefrequentlysincethekernelintentionallyusesweakaffinity.Also,theveryactofrunningtopmaybreakthisweakaff

14、inityandcausemoreprocessestochangeCPUsmoreoften(becauseoftheextrademandforcputime).%CPU-CPUusageThetasksshareoftheelapsedCPUtimesincethelastscreenupdate,expressedasapercent-ageoftotalCPUtime.InatrueSMPenvironment,ifIrixmodeisOff,topwilloperateinSolarismodewhereataskscpuusagewillbedividedbythetotalnu

15、mberofCPUs.结论 6:某一个线程在其运行期间其所使用的 cpu 可能会发生变化。结论 7:在多核的情况下 top 命令输出的 cpu 使用率实质是按 cpu 个数*100%计算的。单核情况下 Cpu 使用率的计算基本思想通过读取/proc/stat、/proc/stat、/proc/task/stat 以及/proc/cpuinfo 这几个文件获取总的 Cpu 时间、进程的 Cpu 时间、线程的 Cpu时间以及 Cpu 的个数的信息,然后通过一定的算法进行计算(采样两个足够短的时间间隔的 Cpu 快照与进程快照来计算进程的 Cpu 使用率)。总的 Cpu 使用率计算计算方法:1、采样

16、两个足够短的时间间隔的 Cpu 快照,分别记作 t1,t2,其中 t1、t2 的结构均为:(user、nice、systemidle、iowait、irq、softirq、stealstolen、guest)的 9 元组;2、计算总的 Cpu 时间片 totalCpuTimea)把第一次的所有 cpu 使用情况求和,得到 s1;b)把第二次的所有 cpu 使用情况求和,得到 s2;c)s2-s1 得到这个时间间隔内的所有时间片,即 totalCpuTime=j2-j1;3、计算空闲时间 idleidle 对应第四列的数据,用第二次的第四列-第一次的第四列即可idle=第二次的第四列-第一次的第

17、四列6、计算 cpu 使用率pcpu=100*(total-idle)/total某一进程 Cpu 使用率的计算计算方法:1.采样两个足够短的时间间隔的 cpu 快照与进程快照,a)每一个 cpu 快照均为(user、nice、systemidle、iowait、irq、softirq、stealstolen、guest)的 9 元组;b)每一个进程快照均为(utime、stime、cutimecstime)的 4 元组;2.分别根据结论 2、结论 3 计算出两个时刻的总的 cpu 时间与进程的 cpu 时间,分别记作:totalCpuTime1、totalCpuTime2、processCp

18、uTime1、processCpuTime23.计算该进程的 cpu 使用率 pcpu=100*(processCpuTime2-processCpuTime1)/(totalCpuTime2-totalCpuTime1)(按 100%f 算,如果是多核情况下还需乘以 cpu 的个数);实验数据实验一:监控一空循环的进程的 cpu 使用率。说明:左边的数据是按以上算法得到的数据,其中采样的时间间隔与 top 命令刷新屏幕的时间间隔相同。按以上方法计算得到的 cpu 使用率通过 top 命令得到的99.5008398.33333698.098.8313899.099.099.8336198.83

19、52798.4975PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND7639fjzag200206m10m7136S992.21:00.74java7639fjzag200206m10m7136S992.21:03.71java7639fjzag200206m10m7136S992.21:06.67java7639fjzag200206m10m7136S992.21:09.63java7639fjzag200206m10m7136S982.21:12.59java7639fjzag200206m10m7136S992.21:15.55java7639fjza

20、g200206m10m7136S1002.21:18.55java7639fjzag200206m10m7136S1002.21:21.54java7639fjzag200206m10m7136S992.21:24.52java7639fjzag200206m10m7136S982.21:27.46java实验二:监控 jconsole 进程的 cpu 使用率。说明:左边的数据是按以上算法得到的数据,其中采样的时间间隔与 top 命令刷新屏幕的时间间隔相同。按以上方法计算得到的 cpu 使用率通过 top 命令得到的8.68113512.010.3505847.65390977.6539097

21、5.013.02170311.08.666667PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND7753fjzag200252m72m22mS1014.40:18.70jconsole7753fjzag200252m72m22mS1214.40:19.07jconsole7753fjzag200252m72m22mS1114.40:19.39jconsole7753fjzag200252m72m22mS714.40:19.61jconsole7753fjzag200252m72m22mS714.40:19.83jconsole7753fjzag200252m

22、72m22mS514.40:19.97jconsole7753fjzag200252m72m22mS1414.40:20.38jconsole7753fjzag200252m72m22mS1014.40:20.68jconsole7753fjzag200252m72m22mS914.50:20.96jconsole某一线程 Cpu 使用率的计算计算方法:1.采样两个足够短的时间隔的 cpu 快照与线程快照,a)每一个 cpu 快照均为(user、nice、system、idle、iowait、irq、softirq、stealstealon、guest)的 9 元组;b)每一个线程快照均为(u

23、time、stime)的 2 元组;2.分别根据结论 2、结论 4 计算出两个时刻的总的 cpu 时间与线程的 cpu 时间,分别记作:totalCpuTime1、totalCpuTime2、threadCpuTime1、threadCpuTime23.计算该线程的 cpu 使用率 pcpu=100*(threadCpuTime2-threadCpuTime1)/(totalCpuTime2-totalCpuTime1)(按 100%算,如果是多核情况下还需乘以 cpu 的个数);实验数据实验一:监控一空循环的线程的 cpu 使用率。说明:左边的数据是按以上算法得到的数据,其中采样的时间间隔与

24、 top 命令刷新屏幕的时间间隔相同。按以上方法计算得到的 cpu 使用率通过 top 命令得到的98.8313897.0099796.9899797.4958398.16971696.8386S%CPU%MEMTIME+CO2.27:22.942.27:25.862.27:28.762.27:31.722.27:34.652.27:37.532.27:40.472.27:43.342.27:46.25java实验二:监控 jconsole 程序某一线程的cpu 使用率。说明:左边的数据是按以上算法得到的数据,其中采样的时间间隔与 top 命令刷新屏幕的时间间隔相同。按以上方法计算得到的 cp

25、u 使用率通过 top 命令得到的1.34003356.6445181.33333340.66777960.66666671.333333497.33333693.8230498.66667PIDUSERPRMMAND7649fjzag200java7649fjzag200java7649fjzag200java7649fjzag200java7649fjzag200java7649fjzag200java7649fjzag200java7649fjzag200java7649fjzag200NIVIRTRESSHR206m10m7136R97206m10m7136R97206m10m7136

26、R97206m10m7136R99206m10m7136R98206m10m7136R96206m10m7136R98206m10m7136R96206m10m7136R971.3333334PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMM以下通过实验数据来说明多核情况下某一进程 cpu 使用率是按 cpu 个数*100 加算的.实验一描述:在双核的情况下作的一组实验,第一组数据是通过 ps-eLopid,lwp,pcpu|grep9140 命令查看进程号为 9140 的进程中各线程的详细信息。 第二组数据是通过 ps命令查看进程号为 9140 进程的 cpu 使

27、用率。数据一:pidlwp%cpu914091400.0914091410.0914091420.0914091430.0914091440.0914091490.0914091500.0914091510.0914091520.19140915396.69140915495.9以上除了红色标注出来的两个线程以外数据二:pid%cpu9140193AND7755fjzagjconsole7755fjzagjconsole7755fjzagjconsole7755fjzagjconsole7755fjzagjconsole7755fjzagjconsole7755fjzag多核情况下200251m200251m200251m200251m200251m72m22mS72m22mS72m22mS72m22mS72m22mS200251m72m22mS200251m72m22mScpu 使用率的计114.40:11.92714.40:12.1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论