cpu利用率

cpu利用率,第1张

APP_CPU使用率

来自:https://www.cnblogs.com/yomia/p/15499031.html

一、CPU使用率原理

android系统内核是基于linux,在linux系统下 CPU 利用率分为用户态、系统态、空闲态

用户态:表示CPU处于用户态执行的时间

系统态:系统内核执行的时间

空闲态:空闲系统进程执行的时间

CPU利用率=CPU执行非系统空闲进程的时间/CPU总的执行时间。这里的时间含义如下:

HZ:  Linux 核心每隔固定周期会发出 timer interrupt(时钟中断),HZ是用来定义每一秒有几次时钟中断。例如 HZ 为1000,就代表每秒有1000 次时钟中断。

Jiffies: 在Linux的内核中,有一个全局变量:Jiffies。Jiffies代表时间。它的单位随硬件平台的不同而不同。Jiffies的单位就是1/HZ

Intel 平台Jiffies的单位是1/100秒,这就是系统所能分辨的最小时间间隔。每个CPU时间片,Jiffies都要加1

CPU利用率计算公式:CPU利用率=(用户态Jiffies + 系统态 Jiffies)/ 总Jiffies

二、CPU测试方法

使用top命令查看哪些进程是CPU的主要消耗者

>adb shell 

>top --help

-m  最多显示多少个进程

-n 刷新次数

-d  刷新间隔时间(默认5秒)

-s 按哪列排序

adb shell top命令

>adb shell top

第一组数据的含义:

400%cpu: CPU总量

33%user: 用户空间占用CPU的百分比

0%nice: 改变过优先级的进程占用cpu的百分比

30%sys   内核空间占用cpu的百分比

337%idle  空闲cpu百分比

0%iow   IO等待占用cpu的百分比

0%irq   硬中断(Hardware IRQ)占用cpu的百分比

0%sirq  软中(Software Interrupts)占用CPU的百分比

第二组数据的含义:

PID   进程id

USER: 进程所有者

PR:进程优先级

NI: nice值。负值表示高优先级,正值表示低优先级

VIRT:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES 

RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR:共享内存大小,单位kb

S :进程状态:D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程

%CPU:上次更新到现在的CPU时间占用百分比

%MEM:进程使用的物理内存百分比

TIME+:进程使用的CPU时间总计,单位1/100秒

有几个概率需要了解

1.时间周期(Clock Cycle)的频率:晶体振荡器在1秒以内时钟周期的个数=1秒以内时钟脉冲的个数,Linux里面用

#define CLOCK_TICK_RATE 1193180 /* Underlying HZ */

单位为HZ

2.时钟滴答(Clock Tick):

当PIT通道0的计数器减到0值时,它就在IRQ0上产生一次时钟中断,也即一次时钟滴答。PIT通道0的计数器的初始值决定了要过多少时钟周期才产生一次时钟中断。

3.时钟滴答的频率(HZ):1秒以内产生时间滴答个数

HZ在arm和i386上定义为100,ALPHA和IA62为1024 ,IBM Power PC为1000

i386 1个时钟滴答时间为1000ms/100=10ms。

4.时钟滴答的时间间隔(tick)

long tick = (1000000 + HZ/2) / HZ/* timer interrupt period */   单位为us ,tick=10ms,也可以通过HZ来计算

linux中#define TICK_SIZE= tick

1s=1,000,000us

(5)宏LATCH:Linux用宏LATCH来定义要写到PIT通道0的计数器中的值,它表示PIT将没隔多少个时钟周期产生一次时钟中断。

    LATCH=(1秒之内的时钟周期个数)÷(1秒之内的时钟中断次数)=(CLOCK_TICK_RATE)÷(HZ)

Linux为取整 #define LATCH=(CLOCK_TICK_RATE + HZ/2) / HZ。

时钟周期理解:时钟脉冲,电平从0到1(或者相反)。

CLOCK_TICK_RATE和HZ都是 频率 :1秒以内时钟周期 频率 ,1秒以内时钟滴答 频率 。

TSC使用CPU频率,在现代计算机中CPU可能降频也可能超率,TSC时钟不准确。

顺序为HPET >APCI PMT>PIC>TSC

local cpu APIC只在单CPU场景上使用,如进程调度时间.

参考:

http://www.dedecms.com/knowledge/servers/linux-bsd/2012/0913/14187.html


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7209807.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-02
下一篇2023-04-02

发表评论

登录后才能评论

评论列表(0条)

    保存