微信号:androidperf

介绍:分享android 性能优化/android power 优化技术,经验.

PM QoS 和 DVFS

2016-04-20 12:38 androidperf

 

为了提高电池的使用寿命,为了节省功耗,linux引入了DVFS。而为了应用程序的性能,Linux 又引入了PM QoS。下图是linux kernel  power 管理中PM QOSDVFS相关的架构图。

               LinuxKernel Power Management

 

DVFS: 动态调整电压和频率技术,包括CPUDDRGPUDSPBUS等的电压,频率的动态调整。其目的是为了省电。CPUfreq:DVFS for CPU CoreDevfreq:DVFS for other devices

PM-QOSQuality of Service简单的说提供在省电和performance之间提供协调机制

 DVFS flow

  • 周期性采样得到其loadCPUGPU,DDR

  • 根据当前的load调整频率(clock

  • 根据设备的频率调整电压。

    工作流程

 

PM QOS

PM QoS简单的说提供在省电和performance 之间提供协调机制。我们知道,Linux PM的主要功能,是节省功耗,但同时,会付出一定的性能代价,例如延迟(latency)增加、吞吐量(throughput)下降。而PMQoS 便解决这个问题的一种技术。

Work flow

kernel系统各个实体对QoS的期望抽象为一个一个的constraint,围绕这些constraint,可以将系统的实体分为三类:clientpm qosframeworkservice。示意图如下:


Client提出对QoSconstraint。常见的client包括应用进程、GPUdevicenetdeviceflashdevice等,它们基于自身的实际特性,需要系统的QoS满足一定的条件,才能正常工作。

PM QoS core负责汇整、整理这些constraint,并根据实际情况,计算出它们的极值(最大或者最小)。

QOS service在需要的时候从PMQoS core处获取constraint的极值,并确保自身的行为,可以满足这些constraints。如cpuidleruntime pmpm domain等。

PM QoS frameworkconstraint分为2类,每一类包括若干个constraint,具体如下。

1)系统级的constraint,包括cpu&dmalatencynetworklatencynetworkthroughputmemorybandwidth 4constraint

2)设备级别的constraint,包括从低功耗状态resumelatencyactive状态的latency和一些QoS flag(如是否允许poweroff)。

Performance Issues of DVFS

为了节省功耗,所有的设备都工作在DVFS模式下,即所有的设备都不是工作在最高clock下,只有在需要时其clock才工作在较高的频率从而满足App的性能要求。而DVFS主要有下面的perfissue.

Issue 1: 调整频率太慢而导致性能问题。


Issue 2: 在有大量资源需求的时候,不能及时Bursts

 

Issue 3: 不对称的依赖关系

  • DMA latency/throughput 的性能好坏完全由CPU的频率确定。

  • DMA却不能对CPU load 有任何贡献。


 

Solution

这里有两种可能的solution.

  • DVFS devicesGPU,MDP,USB等)中处理PM QoS 需求(现在的处理方式)

  • DVFS framework中处理PM QoS而不是在DVFS devices中处理。

QoS on DVFS Devices

下面是典型的QoS应用,在其应用或driver中我们增加QoS   request

 

Issue1 “Touchscreen Event” CPU 提频到1GHz

  • User touch event àQoS request “at least 1000 MIPs”

                                         àCPUfreq runs CPU at 1GHz

 

Issue 2 “Video Decoding” QoS request DMA 吞吐量2.4GB,提高其DDR clockCPU 提频到500MHz

  • Video decoder gets a 1080p60Hz

                 àQoS request “DMA throughput of 2.4GB/s”

                 àCPUfreq runs CPU at 500MHz

 

                                 

                                                       


  No PM QoS request 示意图


 PM QoS DVFS 示意图

 

Work flow



 
Android性能优化 更多文章 Android Performance Case Study Android Performance Case Study(二) Android Graphic 架构 骁龙820 号称最强机 Android App Launching Made Gorgeous
猜您喜欢 干货 | Rancher Managed Network实践 调查:是什么让程序员快乐? 【R每日一贴】R画箱线图? 《跑男2》拉响综艺战 视频综艺哪家强?数据说话 探秘PHP拒绝服务攻击