CN105045369A - 一种基于用户交互历史信息的cpu动态调频方法 - Google Patents
一种基于用户交互历史信息的cpu动态调频方法 Download PDFInfo
- Publication number
- CN105045369A CN105045369A CN201510345280.4A CN201510345280A CN105045369A CN 105045369 A CN105045369 A CN 105045369A CN 201510345280 A CN201510345280 A CN 201510345280A CN 105045369 A CN105045369 A CN 105045369A
- Authority
- CN
- China
- Prior art keywords
- frequency
- cpu
- time
- information
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000003993 interaction Effects 0.000 claims abstract description 94
- 230000008569 process Effects 0.000 claims abstract description 17
- 238000012544 monitoring process Methods 0.000 claims abstract description 11
- 238000010606 normalization Methods 0.000 claims description 39
- 230000009471 action Effects 0.000 claims description 37
- 230000000694 effects Effects 0.000 claims description 16
- 230000002452 interceptive effect Effects 0.000 claims description 15
- 230000001105 regulatory effect Effects 0.000 claims description 12
- 238000007493 shaping process Methods 0.000 claims description 8
- 230000033001 locomotion Effects 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000005265 energy consumption Methods 0.000 abstract description 8
- 230000008859 change Effects 0.000 description 7
- 244000062793 Sorghum vulgare Species 0.000 description 4
- 235000019713 millet Nutrition 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005059 dormancy Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000011435 rock Substances 0.000 description 1
- 230000007958 sleep Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Telephone Function (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明提供一种基于用户交互历史信息的CPU动态调频方法,属于CPU动态调频领域。本发明包括以下步骤:开始,监听当前应用交互状态;查找历史交互信息表,确认此次交互是否发生过,如果是,获取历史交互信息表中同样的交互最大归一化CPU使用率,计算目标频率,并根据目标频率调节CPU频率,然后获取此次交互归一化CPU使用率并保存;如果否,设置CPU频率调节模式为系统默认情况,然后同时执行获取此次交互归一化CPU使用率并保存和采集用户交互信息并保存,结束。本发明通过调整CPU频率来限制用户交互过程中不必要的最高频率执行;借助用户交互的历史信息记录能够满足用户交互过程的性能需求同时降低能量的消耗。
Description
技术领域
本发明涉及CPU动态调频领域,尤其涉及一种基于用户交互历史信息的CPU动态调频方法。
背景技术
Android系统是基于Linux内核的,Linux中支持CPU变频技术,并且提供多种调频模式。变频技术是指CPU本身支持在多种不同的频率下运行,系统在运行过程中可以根据随时可能发生变化的系统负载情况动态在这些不同的运行频率之间切换,从而达到对性能和能耗的权衡。Linux一般支持这几种常见的CPU调节模式:Performance,Ondemand,Powersave,Conservative,Userspace,Interactive。Performance:高性能模式,以最高频率运行,即使系统负载非常低,CPU也运行在最高频率。性能很好,功耗高。Ondemand:按需模式,按需调节CPU频率,手机一般默认使用的是Ondemandgovernor即按需调节,在该模式下,系统会定期检查CPU使用率,当CPU使用率超过某个阈值up_threshold的时候就跳到手机的最高频率去执行。不操作手机时控制在较低频率,滑屏或进入应用时会迅速提升至最高频率,当空闲时又会迅速降低频率,性能较稳定,但因频率变化幅度过大,省电方面只有一般水平。是一种电池和性能之间趋向平衡的默认模式。Powersave:省电模式,以最低频率运行,日常极少使用,除非配合setCPU情景模式,关屏睡眠时使用此模式,省电但系统响应速度慢。Conservative:保守模式,类似于Ondemand,但调整相对较缓,规则是“慢升快降”,注重省电,当有高需求时逐渐提高频率。Userspace:用户模式,系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU运行频率使用。Interactive:交互模式,和Ondemand模式相似,规则是“快升慢降”,注重响应速度、性能,当有高需求时迅速跳到高频率,当低需求时逐渐降低频率,相比Ondemand费电,性能略好。
现在的Android智能手机默认的调节模式是Ondemand或者Interactive模式,这两种调频模式都偏向于高频执行,在用户交互过程中点击或者滑动,执行应用过程都会触发CPU迅速跳到最高频率执行,这种高频往往会导致高能耗,但许多场景并不是需要最高频率去执行,这样会导致能耗的浪费;另外Ondemandgovernor只考虑了CPU的使用率,而300MHz下40%的CPU使用率与600MHz下的40%的CPU使用率代表完全不一样的计算量。在用户交互场景中,用户操作通常是间歇性的,点击或者滑屏后,浏览一会然后再进行下一次交互动作。在现有的Ondemand模式下,一旦用户开始与手机交互CPU会变得繁忙从而跳到最高频率执行,没有考虑到交互场景的情况,并不是每一次交互都需要最高频率来满足性能需求,不同的交互场景对CPU资源的消耗需求也不同。Ondemandgovernor这种CPU调控模式在能耗方面表现不理想。
发明内容
为解决现有技术中存在高性能伴随高能耗的问题,本发明提供一种基于用户交互历史信息的CPU动态调频方法。
本发明基于用户交互历史信息的CPU动态调频方法包括以下步骤:S11:开始;S12:监听当前应用的交互状态;S13:查找历史交互信息表,确认此次交互是否发生过,如果是,执行步骤S14,如果否,执行步骤S15;S14:获取历史交互信息表中同样的交互最大归一化CPU使用率,根据最大归一化CPU使用率计算目标频率,并根据目标频率调节CPU频率,然后执行获取此次交互归一化CPU使用率并保存步骤S16,所述调节CPU频率是指CPU在最低频率与目标频率之间进行动态调频;S15:设置CPU频率调节模式为系统默认情况,然后同时执行获取此次交互归一化CPU使用率并保存步骤S16和步骤S17;步骤S16的执行顺序为:S161:采集CPU信息,计算CPU使用率和权重频率;S162:CPU归一化负载计算;S163:将计算出来的归一化CPU使用率最大值存入历史交互信息表,然后执行步骤S18;S17:采集用户交互信息,包括交互动作信息和该动作所在应用界面系信息,将所述用户交互信息存入历史交互信息表,然后执行步骤S18;S18:结束。本方法采用动态调频的方式,既满足性能需求同时降低能量的消耗。
本发明作进一步改进,所述交互由用户输入动作开始,至该动作引起的屏幕刷新完成结束。
本发明作进一步改进,步骤S14中,所述历史交互信息表中最大归一化CPU使用率为u,此次交互适用频率fc=fmax×u,其中fmax为设备支持的最高频率,目标频率值f为设备CPU所支持的一系列可用频率中不小于且最接近fc的频率值,然后将最大调节频率设为目标频率值f,通过调节最大调节频率,CPU只能在最低频率和最大调节频率之间执行,综合考虑用户交互的场景及历史CPU资源使用情况,以相对低的可接受的频率运行而不牺牲用户体验。
本发明作进一步改进,步骤S15中,CPU频率调节模式为系统默认情况下,CPU最大调节频率为设备CPU支持的最高频率,第一次执行时采用默认情况,但是执行过程中采集CPU信息和用户交互信息作为下次CPU频率调节的基础。
本发明作进一步改进,步骤S16中,交互过程中每隔时间t采集一次CPU信息,计算该时间段CPU使用率和权重频率,然后进行归一化负载计算,算出该时间段归一化CPU使用率。一个交互采集多次数据,使计算出的CPU数据更加准确和稳定。
本发明作进一步改进,步骤S161中,在时间点1读取内核系统文件获取CPU运行时间及频率,记录总的CPU时间total1和空闲时间idle1及各个频率的运行时间,间隔时间t,在时间点2再次读取内核系统文件获取CPU运行时间及频率,记录总的CPU时间total2、空闲时间idle2及各个频率运行时间,CPU使用率CPUusage=1–(idle2–idle1)/(total2–total1),权重频率的计算方法为:时间点2采集各个频率运行时间减去时间点1采集的相应频率的运行时间,得出各个频率在时间t内的运行时间,算出各个频率在时间t内占的时间比,各个频率乘以相应的时间比,然后相加得出权重频率。权重频率和CPU使用率是计算归一化CPU使用率的两个重要参数。
本发明作进一步改进,步骤S17中,采集用户交互信息是通过实时监控并收集用户交互信息模块来完成,所述交互动作信息包括点击、长按和滑动,所述应用界面信息为Activity信息。
本发明作进一步改进,实时监控并收集用户交互信息模块通过动态插桩方法来获取用户交互信息。
本发明作进一步改进,所述动态插桩方法是通过插桩框架xposed和插桩代码实现。
本发明作进一步改进,所述动态插桩方法包括以下步骤:前台应用执行,等待用户输入动作;用户的操作动作触发系统框架层的API执行;插桩框架xposed对系统框架层进行动态插桩拦截相应API并在该API执行前或者执行后插入插桩代码;获取交互动作信息及应用界面信息。通过插桩框架xposed对相应API插入插桩代码,即时获取用户交互信息。
与现有技术相比,本发明的有益效果是:利用Android设备默认Ondemandgovernor模式,通过调整CPU最大调节频率来限制用户交互过程中不必要的最高频率执行;借助用户交互的历史信息记录能够满足用户交互过程的性能需求同时降低能量的消耗;另外,将采集的CPU使用率转换为归一化的使用率能更好的衡量任务的繁重程度。通过综合考虑用户交互的场景及历史CPU资源使用情况,以相对低的可接受的频率运行而不牺牲用户体验。
附图说明
图1为本发明方法流程图;
图2为本发明CPU信息采集及使用率计算的具体流程图;
图3为本发明采集用户交互信息方法流程图;
图4为本发明的动态插桩示意图。
具体实施方式
下面结合附图和实施例对本发明做进一步详细说明。
本发明基于用户交互历史信息的CPU动态调频方法是根据用户的历史交互信息来动态调频,每一次用户交互以用户输入动作开始(例如用户点击动作),由该动作引起的屏幕刷新完成作为结束(例如一则新闻加载完成屏幕刷新完毕)。
一次用户交互涉及一段时间段。另外用户交互是在前台的应用界面上发生的,在Android系统中有四大组件Activity(界面)、Service(服务)、BroadcastReceiver(广播接收器)、ContentProvider(内容提供者),应用程序中,一个Activity通常就是一个单独的屏幕(窗口),它上面可以显示一些控件也可以监听并处理用户的事件做出响应,Activity是Android程序与用户交互的窗口。在本发明中,我们用一个界面(Activity)和在该界面上的用户输入动作标识一个用户交互,只有这两个元素界面和动作都相同才认为是同一个用户交互。通常来说,用户使用一个应用的交互习惯是相对稳定的,相同的用户交互行为会发生多次,例如在某个新闻应用上阅读新闻,用户下拉屏幕多次完成该页面的阅读。不同的交互场景往往对应不同的CPU资源使用情况,而相同的交互场景(在同一个界面上的相同的用户操作动作)的资源使用情况相对稳定又有规律。本发明通过记录用户交互的CPU资源使用情况作为历史信息,等到下次捕捉到该界面的用户操作动作时即可根据历史上该交互的信息快速反应而调整到合适的频率。
本发明将用户交互分为两类,一类用户交互动作会触发应用界面(Activity)的跳转。以腾讯新闻客户端为例,用户点击一则新闻触发应用从主界面(MainActivity)跳到新闻详情界面(NewsDetailActivity)。另外一类用户交互则停留在同一个用户界面(Activity),当用户在主界面一边浏览一边下拉滑动,每一次的滑动动作都没有触发界面的跳转。本发明包括实时监控并收集用户交互信息模块,能动态的捕捉用户的输入动作和该动作所在界面Activity。
如图1所示,本发明的基于用户交互历史信息的CPU动态调频方法,当本次交互为第一次交互时,比如腾讯新闻客户端在新闻详情界面(NewsDetailActivity),包括以下步骤:
S11:开始;
S12:监听当前应用的交互状态,比如出现滑动界面动作;
S13:查找历史交互信息表,确认此次交互是否发生过,如果是,执行步骤S14,如果否,执行步骤S15;本次交互为第一次执行,因此此次交互没有发生过,因此执行步骤S15;
S15:设置CPU频率调节模式为系统默认情况,如果此时CPU在Ondemand模式下,则设置CPU在最低频率和最高频率之间执行。然后同时执行获取此次交互归一化CPU使用率并保存步骤S16和步骤S17;
步骤S16的执行顺序为:
S161:采集CPU信息,计算CPU使用率和权重频率;
S162:CPU归一化负载计算;
S163:将计算出来的归一化CPU使用率最大值比如30%存入历史交互信息表,然后执行步骤S18;
S17:采集用户交互信息,包括交互动作信息和该动作所在应用界面系信息,将所述用户交互信息存入历史交互信息表,然后执行步骤S18;
S18:结束。
如果本次交互为第二次,则具体步骤为:
S11:开始;
S12:监听当前应用的交互状态;
S13:查找历史交互信息表,确认此次交互是否发生过,如果是,执行步骤S14,如果否,执行步骤S15;本次是第二次交互,因此已经发生过,接下来执行步骤S14;
S14:获取历史交互信息表中同样的交互最大归一化CPU使用率也就是第一次的30%,根据最大归一化CPU使用率30%计算目标频率,并根据目标频率调节CPU频率,然后执行获取此次交互归一化CPU使用率并保存步骤S16,所述调节CPU频率是指CPU在最低频率与目标频率之间进行动态调频;
步骤S16的执行顺序为:
S161:采集CPU信息,计算CPU使用率和权重频率;
S162:CPU归一化负载计算;
S163:将计算出来的归一化CPU使用率最大值比如32%,存入历史交互信息表,然后执行步骤S18;
S18:结束。
如果本次交互为第三次以上,则具体步骤为:
S11:开始;
S12:监听当前应用交互状态;
S13:查找历史交互信息表,确认此次交互是否发生过,如果是,执行步骤S14,如果否,执行步骤S15;本次交互已经发生过,接下来执行步骤S14;
S14:获取历史交互信息表中同样的交互最大归一化CPU使用率,对比第一次的30%和第二次的32%,应该选择第二次的32%,计算目标频率,并根据目标频率调节CPU频率,然后执行获取此次交互归一化CPU使用率并保存步骤S16;
步骤S16的执行顺序为:
S161:采集CPU信息,计算CPU使用率和权重频率;
S162:CPU归一化负载计算;
S163:将计算出来的归一化CPU使用率最大值比如31%,存入历史交互信息表,然后执行步骤S18;
S18:结束。
在CPU方面,本发明计算的归一化CPU使用率数据而不是通常意义上的CPU使用率。不同频率下的相同使用率代表完全不同的CPU资源使用情况。例如300MHz频率下40%的CPU使用率,假设该手机支持的最高频率是1000MHz,那么将该使用率归一化到最高频率下的使用率为40%*300/1000=12%,将CPU使用率转换为归一化CPU使用率能更好的衡量任务的繁重程度。
在收集计算CPU归一化使用率时,一次用户交互期间将得到一系列的归一化CPU使用率的值,我们将该次用户交互期间的归一化CPU使用率最大值添加到该次用户交互的历史CPU使用信息表中。当同一个用户交互再次发生时同样将这次用户交互期间的最大归一化使用率加入到该用户交互的CPU历史信息表中。在本实施例中,每个用户交互CPU历史信息表都保持最新三次的最大归一化CPU使用率。比如第四次归一化CPU使用率为35%,则只保存第二次的归一化CPU使用率32%,第三次的归一化CPU使用率31%及第四次归一化CPU使用率35%,当第五次交互时,则取归一化CPU使用率最大值35%来计算目标频率,进而调节CPU频率,这样能更好的根据交互场景及时响应,快速调节到合适的频率。
步骤S14中,取出所述历史交互信息表中最大归一化CPU使用率u,此次交互适用频率fc=fmax×u,其中fmax为设备支持的最高频率,目标频率值f为设备CPU所支持的一系列可用频率中不小于且最接近fc的频率值,然后将最大调节频率设为目标频率值f。有了目标频率,调节CPU频率则更改Android文件系统中最大调节频率max_scaling_frequency为目标频率值。调节成功后CPU只能在最低频率和最大调节频率范围内执行,不能超过目标频率执行从而限制了手机默认Ondemand模式下以手机支持的最高频率执行,满足性能需求的同时有效地降低了能量的消耗。
在本发明示例中,设置CPU频率是通过更改系统文件来实现的。前提是手机必须有root权限。以小米2s手机为例,小米2s支持的频率为384,486,594,702,810,918,1026,1134,1242,1350,1458,1566,1674,1728MHz,在CPUfreq文件下有许多文件,其中scaling_min_freq代表最低频率,scaling_max_freq代表最高频率,手机只能在这两个频率之间执行,若将scaling_max_freq调节为手机所支持的最低频率384MHz,则手机只能在最低频率运行。本发明在利用Ondmandgovernor调节模式的基础上,通过调节scaling_max_freq来限制手机的最高频率。当监测到相同的用户交互发生则根据历史信息表计算目标频率,然后设置scaling_max_freq为目标频率值。当监测到一个新的用户交互时,则将scaling_max_freq设置为手机支持频率最大值1728MHz同时将该用户交互信息添加到历史信息表中。
步骤S16中,交互过程中每隔时间t采集一次CPU信息,计算该时间段CPU使用率和权重频率,然后进行归一化负载计算,算出该时间段归一化CPU使用率。步骤S161中,如图2所示,在时间点1读取内核系统文件获取CPU运行时间及频率,记录总的CPU时间total1和空闲时间idle1及各个频率的运行时间,间隔时间t,在时间点2再次读取内核系统文件获取CPU运行时间及频率,记录总的CPU时间total2、空闲时间idle2及各个频率运行时间,CPU使用率CPUusage=1–(idle2–idle1)/(total2–total1),权重频率的计算方法为:时间点2采集各个频率运行时间减去时间点1采集的相应频率的运行时间,得出各个频率在时间t内的运行时间,算出各个频率在时间t内占的时间比,各个频率乘以相应的时间比,然后相加得出权重频率。
Android是基于Linux内核的,在Linux/Unix下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行时间,系统内核执行的时间,和空闲系统进程执行的时间。平时所说的CPU利用率是指:CPU执行非系统空闲进程的时间除以CPU总的执行时间。本发明通过读取系统文件获取CPU的执行时间及频率信息,/proc/stat文件包含了CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。读取该文件可以得到一系列的CPU时间如下所示:
user从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含nice值为负进程。
nice从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间;
system从系统启动开始累计到当前时刻,处于核心态的运行时间;
idle从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间;
iowait从系统启动开始累计到当前时刻,IO等待时间;
irq从系统启动开始累计到当前时刻,硬中断时间;
softirq从系统启动开始累计到当前时刻,软中断时间;
总的CPU时间totalCPUTime=user+nice+system+idle+iowait+irq+softirq,计算时,采样两个时间点的数据,这两个时间点的间隔设为tms,在本发明示例中,休眠时间t为125ms后再采样,对于时间点1,记录总的CPU时间total1,记录空闲时间idle1,对于时间2,同样记录total2和idle2。
CPU使用率为:CPUusage=1–(idle2–idle1)/(total2–total1),利用该公式计算CPU使用率。最后将CPU使用率归一化到最高频率,在本发明示例中,采用的手机型号为小米2S,手机支持的最高频率为1728MHz。
CPU的使用率计算是每隔125ms采样计算的,但是这段时间的频率有可能会变化,那么就用一个权重频率(weightedfrequency)代表这段时间的CPU频率,权重频率计算是基于Android系统文件下time_in_state文件,这个文件记录了每个频率所处的时间,举例如下,实际上我们手机是有14个频率,下面这个例子只是为了表示方便。
根据两个采集时间点的时间差求出每个频率所处时间,然后每个频率在这125ms时间内所占的比例分别乘以他们的频率再加起来就是最后的权重频率。比如小米2s手机设备有14个频率值,在125ms时间内,每个频率所占的时间的比例乘以相应的频率,加起来就是权重频率了,不是所有的频率都会用到,如果文件中频率执行时间为0的,表示这段时间没有以这个频率执行。
步骤S17中,采集用户交互信息是通过实时监控并收集用户交互信息模块来完成,所述交互动作信息包括点击、长按和滑动,所述应用界面信息为Activity信息。
历史交互信息表是在编写程序时已经建立好的,刚开始为空的,当交互执行时,历史交互信息表中包含了归一化CPU使用率和用户交互信息,这些信息是程序执行时,动态添加进去的,如表1所示,展示的是腾讯新闻客户端的一个简单的历史信息表的示例,用户主要在主界面和新闻详情界面之间交互,例如用户在主界面上滑动屏幕,在该次用户交互期间(用户滑动动作开始到屏幕刷新结束)将采集到的归一化的CPU使用率的最大值65%放入表中。该历史信息表是动态变化的,表1只列出了一次用户交互的历史CPU使用率的值。在实际实施本发明时,当同样的用户交互再次发生时,仍然将此次交互期间归一化的CPU使用率最大值继续放入表格中,对于同一个用户交互,表格中始终保持最新的三次历史交互情况。
表1
如图3和图4所示,实时监控并收集用户交互信息模块通过动态插桩方法来获取用户交互信息,所述动态插桩方法是通过插桩框架xposed和插桩代码实现。所述动态插桩方法包括以下步骤:S210:前台应用执行,等待用户输入动作;S220:接收到用户的操作动作;S230:触发系统框架层的API(ApplicationProgrammingInterface,应用程序编程接口)执行;S240:插桩框架xposed对系统框架层进行动态插桩拦截相应API并在该API执行前或者执行后插入插桩代码;S250:获取交互动作信息及应用界面信息。
具体的,用户交互信息采集包括用户的交互动作和该动作所在Activity,实时监控并收集用户交互信息模块的具体实施框架采用动态插桩方法。动态插桩方法是对Android的Framework(框架)层进行插桩,Android系统分为四层:应用程序层、应用程序框架层、系统运行库层和Linux内核层,动态插桩只对第二层应用程序框架层简称框架层,进行插桩,应用程序框架层是开发人员进行Android开发的基础,很多核心应用程序也是通过这一层来实现其核心功能的,该层简化了组件的重用,开发人员可以直接使用其提供的组件及API来进行快速的应用程序开发。
前台应用执行,等待用户输入动作,用户操作动作会触发前台应用调用Android系统框架层的一系列API的执行,插桩框架xposed能对AndroidFramework层进行动态插桩拦截相应API,并在该API执行前或者执行后插入插桩代码。xposed是GitHUB上rovo89大大设计的一个针对Android平台的动态劫持项目,通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。与采取传统的Inhook方式相比,xposed在开机的时候完成对所有的HookFunction的劫持,在原Function执行的前后加上自定义代码。在本示例中,捕捉用户动作拦截AndroidFramework层中Activity类的dispatchTouchEvent方法,在该方法分发消息之前获取用户运动事件motionevents,运动事件描述了动作的动作代码和一系列的坐标值。动作代码表明了当触点按下或者弹起等引起的状态变化。坐标值描述了位置信息以及以他的运动属性。在Android中,事件主要包括点击、长按、滑动等操作,这些构成了Android的事件响应,总体来说,所有的事件都由如下三个部分作为基础构成:按下(action_down),移动(action_move),抬起(action_up)。通过拦截Activity类的API执行得到这些运动事件进而判断用户的输入动作,捕捉当前动作信息。用户动作所在Activity的捕捉则是拦截Android系统Framework层的Activity类的onResume方法,根据AndroidActivity生命周期,只有在执行onResume方法之后Activiy才会处于前台并且能和用户进行交互。最后步骤S250能实时捕捉到用户交互动作和动作所在Activity信息。在本发明示例中,一次用户交互涉及到一段时间段,起点为用户动作输入,终点为由该动作引起的界面刷新完毕。Android系统更新UI(界面)是采用消息队列模型,界面更新消息都是放在UI线程的消息队列里,按照先进先出的原则循环处理UI更新消息。本发明在步骤S230中通过监控主线程消息队列的入队和出队方法得到UI更新事件。
以上所述之具体实施方式为本发明的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照本发明所作的等效变化均在本发明的保护范围内。
Claims (10)
1.一种基于用户交互历史信息的CPU动态调频方法,其特征在于包括以下步骤:
S11:开始;
S12:监听当前应用的交互状态;
S13:查找历史交互信息表,确认此次交互是否发生过,如果是,执行步骤S14,如果否,执行步骤S15;
S14:获取历史交互信息表中同样的交互最大归一化CPU使用率,根据最大归一化CPU使用率计算目标频率,并根据目标频率调节CPU频率,然后执行获取此次交互归一化CPU使用率并保存步骤S16,所述调节CPU频率是指CPU在最低频率与目标频率之间进行动态调频;
S15:设置CPU频率调节模式为系统默认情况,然后同时执行获取此次交互归一化CPU使用率并保存步骤S16和步骤S17;
步骤S16的执行顺序为:
S161:采集CPU信息,计算CPU使用率和权重频率;
S162:CPU归一化负载计算;
S163:将计算出来的归一化CPU使用率最大值存入历史交互信息表,然后执行步骤S18;
S17:采集用户交互信息,包括交互动作信息和该动作所在应用界面系信息,将所述用户交互信息存入历史交互信息表,然后执行步骤S18;
S18:结束。
2.根据权利要求1所述的基于用户交互历史信息的CPU动态调频方法,其特征在于:所述交互由用户输入动作开始,至该动作引起的屏幕刷新完成结束。
3.根据权利要求1所述的基于用户交互历史信息的CPU动态调频方法,其特征在于:步骤S14中,所述历史交互信息表中最大归一化CPU使用率为u,此次交互适用频率fc=fmax×u,其中fmax为设备支持的最高频率,目标频率值f为设备CPU所支持的一系列可用频率中不小于且最接近fc的频率值,然后将最大调节频率设为目标频率值f。
4.根据权利要求1所述的基于用户交互历史信息的CPU动态调频方法,其特征在于:步骤S15中,CPU频率调节模式为系统默认情况下,CPU最大调节频率为设备CPU支持的最高频率。
5.根据权利要求1所述的基于用户交互历史信息的CPU动态调频方法,其特征在于:步骤S16中,交互过程中每隔时间t采集一次CPU信息,计算该时间段CPU使用率和权重频率,然后进行归一化负载计算,算出该时间段归一化CPU使用率。
6.根据权利要求5所述的基于用户交互历史信息的CPU动态调频方法,其特征在于:步骤S161中,在时间点1读取内核系统文件获取CPU运行时间及频率,记录总的CPU时间total1和空闲时间idle1及各个频率的运行时间,间隔时间t,在时间点2再次读取内核系统文件获取CPU运行时间及频率,记录总的CPU时间total2、空闲时间idle2及各个频率运行时间,CPU使用率CPUusage=1–(idle2–idle1)/(total2–total1),权重频率的计算方法为:时间点2采集各个频率运行时间减去时间点1采集的相应频率的运行时间,得出各个频率在时间t内的运行时间,算出各个频率在时间t内占的时间比,各个频率乘以相应的时间比,然后相加得出权重频率。
7.根据权利要求1所述的基于用户交互历史信息的CPU动态调频方法,其特征在于:步骤S17中,采集用户交互信息是通过实时监控并收集用户交互信息模块来完成,所述交互动作信息包括点击、长按和滑动,所述应用界面信息为Activity信息。
8.根据权利要求7所述的基于用户交互历史信息的CPU动态调频方法,其特征在于:实时监控并收集用户交互信息模块通过动态插桩方法来获取用户交互信息。
9.根据权利要求8所述的基于用户交互历史信息的CPU动态调频方法,其特征在于:所述动态插桩方法是通过插桩框架xposed和插桩代码实现。
10.根据权利要求9所述的基于用户交互历史信息的CPU动态调频方法,其特征在于:所述动态插桩方法包括以下步骤:
S210:前台应用执行,等待用户输入动作;
S220:接收到用户的操作动作;
S230:触发系统框架层的API执行;
S240:插桩框架xposed对系统框架层进行动态插桩拦截相应API并在该API执行前或者执行后插入插桩代码;
S250:获取交互动作信息及应用界面信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510345280.4A CN105045369B (zh) | 2015-06-19 | 2015-06-19 | 一种基于用户交互历史信息的cpu动态调频方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510345280.4A CN105045369B (zh) | 2015-06-19 | 2015-06-19 | 一种基于用户交互历史信息的cpu动态调频方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105045369A true CN105045369A (zh) | 2015-11-11 |
CN105045369B CN105045369B (zh) | 2018-11-27 |
Family
ID=54451968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510345280.4A Expired - Fee Related CN105045369B (zh) | 2015-06-19 | 2015-06-19 | 一种基于用户交互历史信息的cpu动态调频方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045369B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677482A (zh) * | 2015-12-31 | 2016-06-15 | 联想(北京)有限公司 | 一种频率调节方法及电子设备 |
CN105867582A (zh) * | 2015-12-31 | 2016-08-17 | 乐视移动智能信息技术(北京)有限公司 | 调频参数的调节方法、装置、调频器及移动终端 |
CN105955823A (zh) * | 2016-04-21 | 2016-09-21 | 深圳市万普拉斯科技有限公司 | 确定运算资源的运算频率的方法及系统 |
CN106527655A (zh) * | 2016-10-14 | 2017-03-22 | 珠海市魅族科技有限公司 | 电子设备省电方法及系统 |
CN106844047A (zh) * | 2017-01-11 | 2017-06-13 | 上海传英信息技术有限公司 | 一种智能终端的应用程序优化方法 |
CN107436839A (zh) * | 2017-07-17 | 2017-12-05 | 广东欧珀移动通信有限公司 | 进程负载获取方法、电子终端及计算机可读存储介质 |
WO2017206915A1 (zh) * | 2016-05-31 | 2017-12-07 | 广东欧珀移动通信有限公司 | 处理器中内核运行配置的确定方法以及相关产品 |
CN107608783A (zh) * | 2016-07-11 | 2018-01-19 | 中兴通讯股份有限公司 | 一种数据处理的方法及装置 |
CN108228435A (zh) * | 2017-04-21 | 2018-06-29 | 珠海市魅族科技有限公司 | 基于Ftrace的处理器执行状态模型搭建方法和系统 |
CN108228414A (zh) * | 2017-04-06 | 2018-06-29 | 珠海市魅族科技有限公司 | 基于Linux的处理器进程参数监测方法和监测系统 |
CN110442226A (zh) * | 2019-08-09 | 2019-11-12 | 上海工程技术大学 | 一种基于任务类型的特定任务终端处理器调频方法及装置 |
CN110647401A (zh) * | 2019-09-30 | 2020-01-03 | Oppo(重庆)智能科技有限公司 | 调频方法、调频装置、存储介质与电子设备 |
CN111190728A (zh) * | 2019-12-13 | 2020-05-22 | 北京山石网科信息技术有限公司 | 资源调整方法及装置 |
CN113032221A (zh) * | 2021-03-30 | 2021-06-25 | 深圳红途创程科技有限公司 | 数据采集和传输方法、装置、计算机设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130013124A1 (en) * | 2011-07-08 | 2013-01-10 | Park Daniel J | System and Method for the Multi-Dimensional Representation of Energy Control |
CN104407690A (zh) * | 2014-12-19 | 2015-03-11 | 中科创达软件股份有限公司 | 调节cpu工作频率的方法、装置及移动终端 |
-
2015
- 2015-06-19 CN CN201510345280.4A patent/CN105045369B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130013124A1 (en) * | 2011-07-08 | 2013-01-10 | Park Daniel J | System and Method for the Multi-Dimensional Representation of Energy Control |
CN104407690A (zh) * | 2014-12-19 | 2015-03-11 | 中科创达软件股份有限公司 | 调节cpu工作频率的方法、装置及移动终端 |
Non-Patent Citations (1)
Title |
---|
LIN ZHONG等: "Dynamic Power Optimization Targeting User Delays in Interactive Systems", 《IEEE TRANSACTIONS ON MOBILE COMPUTING》 * |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677482A (zh) * | 2015-12-31 | 2016-06-15 | 联想(北京)有限公司 | 一种频率调节方法及电子设备 |
CN105867582A (zh) * | 2015-12-31 | 2016-08-17 | 乐视移动智能信息技术(北京)有限公司 | 调频参数的调节方法、装置、调频器及移动终端 |
WO2017113696A1 (zh) * | 2015-12-31 | 2017-07-06 | 乐视控股(北京)有限公司 | 调频参数的调节方法、装置、调频器及移动终端 |
CN105955823A (zh) * | 2016-04-21 | 2016-09-21 | 深圳市万普拉斯科技有限公司 | 确定运算资源的运算频率的方法及系统 |
CN105955823B (zh) * | 2016-04-21 | 2020-02-11 | 深圳市万普拉斯科技有限公司 | 确定运算资源的运算频率的方法及系统 |
WO2017206915A1 (zh) * | 2016-05-31 | 2017-12-07 | 广东欧珀移动通信有限公司 | 处理器中内核运行配置的确定方法以及相关产品 |
CN107608783A (zh) * | 2016-07-11 | 2018-01-19 | 中兴通讯股份有限公司 | 一种数据处理的方法及装置 |
CN106527655A (zh) * | 2016-10-14 | 2017-03-22 | 珠海市魅族科技有限公司 | 电子设备省电方法及系统 |
CN106527655B (zh) * | 2016-10-14 | 2019-11-12 | 珠海市魅族科技有限公司 | 电子设备省电方法及系统 |
CN106844047A (zh) * | 2017-01-11 | 2017-06-13 | 上海传英信息技术有限公司 | 一种智能终端的应用程序优化方法 |
CN108228414A (zh) * | 2017-04-06 | 2018-06-29 | 珠海市魅族科技有限公司 | 基于Linux的处理器进程参数监测方法和监测系统 |
CN108228414B (zh) * | 2017-04-06 | 2021-03-16 | 珠海市魅族科技有限公司 | 基于Linux的处理器进程参数监测方法和监测系统 |
CN108228435A (zh) * | 2017-04-21 | 2018-06-29 | 珠海市魅族科技有限公司 | 基于Ftrace的处理器执行状态模型搭建方法和系统 |
CN108228435B (zh) * | 2017-04-21 | 2021-01-26 | 珠海市魅族科技有限公司 | 基于Ftrace的处理器执行状态模型搭建方法和系统 |
CN107436839A (zh) * | 2017-07-17 | 2017-12-05 | 广东欧珀移动通信有限公司 | 进程负载获取方法、电子终端及计算机可读存储介质 |
CN107436839B (zh) * | 2017-07-17 | 2020-07-17 | Oppo广东移动通信有限公司 | 进程负载获取方法、电子终端及计算机可读存储介质 |
CN110442226A (zh) * | 2019-08-09 | 2019-11-12 | 上海工程技术大学 | 一种基于任务类型的特定任务终端处理器调频方法及装置 |
CN110442226B (zh) * | 2019-08-09 | 2023-05-30 | 上海工程技术大学 | 一种基于任务类型的特定任务终端处理器调频方法及装置 |
CN110647401A (zh) * | 2019-09-30 | 2020-01-03 | Oppo(重庆)智能科技有限公司 | 调频方法、调频装置、存储介质与电子设备 |
CN110647401B (zh) * | 2019-09-30 | 2022-07-08 | Oppo(重庆)智能科技有限公司 | 调频方法、调频装置、存储介质与电子设备 |
CN111190728A (zh) * | 2019-12-13 | 2020-05-22 | 北京山石网科信息技术有限公司 | 资源调整方法及装置 |
CN111190728B (zh) * | 2019-12-13 | 2023-08-25 | 北京山石网科信息技术有限公司 | 资源调整方法及装置 |
CN113032221A (zh) * | 2021-03-30 | 2021-06-25 | 深圳红途创程科技有限公司 | 数据采集和传输方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105045369B (zh) | 2018-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105045369A (zh) | 一种基于用户交互历史信息的cpu动态调频方法 | |
US20160048682A1 (en) | Method and Apparatus for Clearing Malicious Power-Consuming Application, and User Terminal | |
CN104102543A (zh) | 一种云计算环境中负载调整的方法和装置 | |
CN102223416B (zh) | 一种媒体文件的传输方法及系统 | |
US9176869B2 (en) | Memory use for garbage collected computer environments | |
CN108989238A (zh) | 一种分配业务带宽的方法以及相关设备 | |
WO2017167120A1 (zh) | 一种管理应用程序的方法及装置 | |
WO2012072363A1 (en) | A method computer program and system to optimize memory management of an application running on a virtual machine | |
CN104239153A (zh) | 多核cpu负载均衡的方法和装置 | |
CN103684916A (zh) | 一种云计算下智能监控分析方法及系统 | |
CN104267874A (zh) | 一种调整终端上应用图标布局的方法及终端 | |
CN103037109B (zh) | 多核设备能耗管理方法及装置 | |
CN106155931B (zh) | 一种磁盘读限速的方法和装置 | |
CN105893141A (zh) | 一种多核处理器调控方法及装置及使用该方法的移动终端 | |
CN102752447A (zh) | 一种基于手机端应用程序使用频率的统计方法 | |
CN102622273A (zh) | 基于自学习负载预测的集群按需启动方法 | |
CN103198027A (zh) | 一种存储文件和提供文件的方法和装置 | |
CN103036975B (zh) | 虚拟机控制方法及装置 | |
WO2023221846A1 (zh) | 计算集群及其数据采集方法、设备及存储介质 | |
CN111694518A (zh) | 一种集群扩容或缩容后数据自动迁移的方法、装置、设备 | |
CN108845659B (zh) | 一种功耗优先的嵌入式处理器实时任务分配方法 | |
CN103902745A (zh) | 数据采集方法、装置和系统 | |
CN112306406A (zh) | 智能存储自动分级的方法、装置、存储介质及电子设备 | |
CN110347546B (zh) | 监控任务动态调整方法、装置、介质及电子设备 | |
KR20130076332A (ko) | 소모 전력을 최소화하기 위한 이동 단말기 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181127 |