在Intel®平台上优化多媒体应用程序功,cpu怎么看

怎么看 5
在Intel®平台上优化多媒体应用程序功耗 白皮书 ChaoHuang(黄超)ManujSabharwal (软件与服务事业部)(软件与服务事业部)
1 摘要 经过多年的硬件平台优化,硬件平台功耗逐年降低。
CPU有了新的低功耗状态,显示功耗也大幅下降。
然而,运行在平台上的软件所产生的功耗问题却越来越明显。
在软件方面,多媒体应用程序对功耗的影响更加引人关注。
事实上,研究表明优化过的多媒体应用程序播放时间是未优化过的媒体程序的两倍多。
这篇白皮书介绍了设计和开发绿色多媒体应用程序需要考虑的要素,以及如何分析和优化多媒体应用软件软件在Intel®平台下的功耗。
这篇白皮书旨在面向ISVs,OEMs,和其他技术相关人士。
介绍 续航问题越来越重要,相关电量续航研究通常比较一个平台和另一个平台的续航时间。
比如说:”DellXPS12在播放视频时能持续5小时9分钟…”从众多的比较报告我们可以看出,媒体/视频播放是最重要的用户使用模式之
一。
所以,多媒体应用程序的优化非常重要。
这篇白皮书将介绍一些常用的多媒体分析工具,以及经常需要分析和考虑到的多媒体应用程序的优化方法。
其中包括,硬件加速,存储优化,时钟同步,去除对系统时钟精度的修改等等。
多媒体程序功耗数据对比 进行方法讲解前,先看一组测试数据的对比。
测试系统:•Intel®处理器移动参考平台•Windows*8x64•Wi-Fi*连接•Intel®固态硬盘•4GB内存•NationalInstruments*DAQ为功耗测试•Intel®PowerGadget 负载:ElephantDream1080pHDH.264格式(/download)应用程序:8个媒体应用程序从图1测试结果我们可以看出:优化过的播放器播放时间是未优化播放器的两倍多。

2 图1播放器播放功耗对比图 工具介绍 我们使用了以下五个简单的开发工具来优化软件的功耗: BatteryLifeAnalyzer:BatteryLifeAnalyzer(简称BLA)具有简单的用户操作界面,它可以发现驱动,进程等可能导致硬件不能进入低功耗状态的各种不恰当行为,同时它还能提供硬件C状态持续时间等信息 Intel®PowerGadgetIntel®PowerGadget是Intel®酷睿处理上用于监测处理器功耗的软件工具。
它运行时为一悬浮窗体,操作非常简单。
同时相关性研究表明其对于活动状态负载的功耗测试准确率大于97% Windows*PerformanceAnalyzerWindows*PerformanceAnalyzer是Windows*平台上用于分析性能和功耗的常用分析工具,它支持ETW(Windows事件追踪),集各项操作系统性能分析于一个日志文件中,能分析Windows*平台所有进程、线程,用户态、内核态,DPCs,ISRs,时序,磁盘和文件I/O,内存,网络等等 Windows*PerformanceRecorder(WPR)Windows*PerformanceRecorder(WPR)为一提供测试脚本的工具,它有一系列预定义好的收集日志脚本,同时提供用户图形操作界面。
使用时,用户只需选择相应测试选项,然后点击测试按钮即可。
它可以收集CPU,GPU,存储和网络的各项数据。

3 GPUViewGPUView是Windows*平台分析处理图形显卡数据的工具,可以分析GPU队列,GPU唤醒和上下文相关的CPU队列,同时能提供唤醒活动状态的调用信息等实现低功耗多媒体播放要点:进行软件优化前,先简单介绍下优化的几个要点: 硬件加速优化:使用硬件加速解码(图形显卡)存储功耗优化:预先缓冲内容来达到尽可能少的存储访问内存拷贝优化:使用Overlay代替Blt减少拷贝操作避免频繁的唤醒:去掉不必要的唤醒。
如:sleep的调用,WaitForSingleObject和timers获取测试基准:对需要优化的软件,先获取一个测试基准,即优化前的功耗状态。
BLA测试:(操作步骤如下)使用管理员权限打开BatteryLifeAnalyzer运行媒体程序收集日志,按下“CaptureAll”,如图2所示为BLA操作界面: 图2BLA用户操作界面BLA测试结果:如下表,可以看出优化前C0处于一个非常高的状态,这对功耗的影响非常大。
PackageC0-C192.58PackageC22.3PackageC31.29
4 PackageC60.84PackageC73 表1BLA测试结果Intel®PowerGadget测试:(操作步骤如下:) 安装IntelPowerGadget打开IntelPowerGadget运行媒体程序收集日志,按下“StartLog”,如图3如示为Intel®PowerGadget操作界面 图3Intel®PowerGadget用户界面Intel®PowerGadget测试结果:从图4所示可以看出优化前平均功耗大概在7W左右 图4Intel®PowerGadget测试结果
5 Windows*PerformanceRecorder(WPR)收集日志: 有了测准后,使用分析工具WPR来进行分析日志的收集。
WPR提供了通过WPA快捷收集日志的脚本,它能提供测试CPU/I/O以及GPU活动状态的各类测试脚本,测试将产生ETL日志文件,这些文件可以被GPUView或WPA用来分析,如图5所示为WPA用户界面: 图5WPR用户界面 分析硬件负载日志: 硬件加速优化获得分析日志后,先用GPUView对其进行分析,如图6为一个优化前播放器的GPUView分析图:从图中可以看出GPU队列很空,而CPU队列一直忙碌。
这说明CPU一直在忙于解码,而并没有使用GPU做解码加速。

6 图6GPUView测试结果要解决CPU忙碌的问题,简单的方法是使用GPU硬件加速,可以使用Intel®MediaSDK如下伪代码所示简单启动硬件加速,或者也可以使用MFT等一些公共接口启动硬件加速方案。
sessionàInit(SW/HW/AUTO)//forsoftware/hardware/autodetectwhile(bitstream){ decodeDecodeFrameAsync(bitstream,[out]frame_d,[out]sync_d);coreSyncOperation(sync_e);}//ClosedowndecodeClose();//ClosesessionsessionClose();优化后再看GPUView的分析图:如图7可以看出GPU多了一个工作队列,同时可以看出CPU队列相比之前处于比较空闲的状态。

7 图7GPUView测试结果再比较优化硬件加速前后功耗,如表2可以看出,硬件加速优化了3W左右的功耗 Scenario PackagePower(W) Baseline 6.89 HardwareOffloadOptimization3.85 表2功耗对比分析存储访问优化使用WPA打开日志文件,如图8所示可以看出应用程序对存储访问非常频繁,大概100ms左右就有一次访问。
这也将影响整个平台的功耗。

8 图8WPA存储访问分析优化存储访问,可以使用预缓冲的方式,即一次读取更多的数据来减少存储访问的次数,使用SetCacheSize(i*1024);(ForiKBpre-read)来设置一次读取的大小,优化后,再查看WPA分析图如图9:可以看出存储访问大为减低,大概10多秒才有一次存储的访问。
图9WPA存储访问分析测试优化存储前后功耗如表3:优化后存储功耗大概省了400mW.
9 Scenario~100msecess(4Kbread) Storagepower(W)0.480 Burstmodereading(16MBread) 0.057 表3存储访问优化结果 CPU唤醒分析 再使用WPA对CPU的唤醒进行分析,如图10所示:可以看出进程在以1ms的时间间隔被唤醒,这对功耗的影响非常大。
仔细分析调用堆栈,发现程序循环调用了Sleep
(1)
图10WPA:CPU活动分析推荐使用以下代码来代替Sleep
(1)的循环调用:if(!
acquire_lock()){ 10 /*Spinonpausemax_spin_counttimesbeforebackingofftosleep*/for(intj=0;j(1)
对于这种情况,推荐使用以下的代码片断: Setrequiredtimer>15.6msec constintTimerIntervalMs=16; timeBeginPeriod(TimerIntervaMs); typedefstruct_WDF_TIMER_CONFIG{ULONGSize;PFN_WDF_TIMEREvtTimerFunc;ULONGPeriod;BOOLEANAutomaticSerialization;ULONGTolerableDelay;}WDF_TIMER_CONFIG,*PWDF_TIMER_CONFIG; 11 优化这一点后,测试数据对比:如表5可以看出优化后能省约0.7W左右的功耗 Scenario Power(W) TimerBeginPeriod/WaitForSingleObject
(1) ~0.800 DefaultTimer(15.6)orperiodicactiity ~0.191 表5时钟精度优化结果 内存拷贝优化: 由于传统渲染都使用BLT的方式,如图11:即把要输入到显示器的缓冲拷贝一份出来给内存然后再输出到显示器。
这样导致了内存功耗的浪费。
图11BLT方式下的内存使用为节省内存功耗,推荐直接渲染到显示表面,可以大量节省显示所花内存。
在Win8桌面模式,Win7以及之前的操作系统实现直接渲染使用overlay的方式,在Win8/DX11上用DirectFlip的方式。
如下所示为使用overlay的示例代码: •D3DPRESENT_PARAMETERSpp;•…•pp.BackBufferFormat=D3DFMT_YUY2;•pp.SwapEffect=D3DSWAPEFFECT_OVERLAY;•…•pDevEx->CreateAdditionalSwapChain(&pp,&pSwapChain); 12 •…•pSwapChain->GetBackBuffer(index,D3DBACKBUFFER_TYPE_MONO,&pRenderTarget);•…•pDXVAVP->VideoProcessBltHD(pRenderTarget,outputFrameCounter,numComposite, stream_data);•####使用后如图12,可以看出,减少了16MB的两次拷贝。
图12Overlay方式下的内存使用功耗测试对比:如表6可以看出使用Overlay的方式将节省约0.4W的功耗。
Scenario Packagepower(W) Blt 4.15 Overlay 3.75 全部优化后结果 表6内存优化后的结果 •BLA的数据,从表7可以看出C0被减少到了36.92%,功耗大大下降了。
PackageC0-C136.92 PackageC2 3.63 13 PackageC3 1.32 PackageC6 2.48 PackageC7 55.65 表7总体优化后BLA测试结果 同时从图13可以看出优化后系统时钟精度为默认的15.63ms. PackagePower(W)1 22436485106127148169190211232253274295316337358379400421442463484505526547568589610631 图13总体优化后BLA软件活动分析图•PowerGadget测试结果,从图14可以看出:优化后CPU功耗降至约3W.下降了4W左右。
PackagePower(Watt) 86420 图14总体优化后PowerGadget测试数据 问题总结 优化前,应用程序使用了软件处理而没有使用硬件加速。
应用程序频繁活动由于调用SleepAPI:功耗~500mW应用程序多个线程周期性相对独立的调用Sleep().最终导致整个进程在~1msec的间隔被频繁的唤醒。
14 应用程序将系统时间精度设置为~1msec:功耗~700mW应用程序存储访问~100msec导致存储数据频繁交换:功耗~400mW应用程序额外内存拷贝:功耗~300mW 优化总结 不要尝试修改系统默认时间精度15.6ms或者音频播放时间精度(10msec)使用Sleep,WaitForSingleObject和timerticks会导致系统频繁被唤醒使用Intel®MediaSDK或Microsoft*Mediafoundation进行硬件加速将取得明显的功耗下降存储访问采用预读取模式(5sec+)取代频繁访问Blu-Ray*播放应使用YUY2overlay取代RGB来进行内存优化 小结 软件对功耗有明显的影响。
媒体播放是用户最常见的使用模式之
一。
高效的代码使得优化媒体应用程序成为可能。
同时许多Intel®和Microsoft*的工具能够深入分析用户体验的各类问题,结合工具针对上述问题进行优化可以开发出低功耗的媒体应用程序。
关于作者 ChaoHuang(黄超),Intel软件与服务事业部软件工程师。
他多年从事多媒体软件功耗以及性能的优化工作,在多媒体方面发表过多篇技术专利。
ManujSabharwal,Intel软件与服务事业部软件工程师。
他一直从事软件功耗优化的研究工作,在业界发表多篇技术文章。
同时他还从事客户端的软件性能优化工作。
引用 •/en-us/articles/cpu-power-utilization-on-intel-architectures•/en-us/articles/intel-power-gadget/•/dd797814(v=vs.85).aspx•/en-us/blogs/2012/06/28/several-things-to-know-when-developing- location-aware-metro-style-apps/
•/en-us/articles/extending-battery-life-for-streaming-media-playback 15 •/technology-journal/2012/1601/intelligent-embedded-system•/en-us/energy-efficient-software•BatteryLifeAnalyzer:batterylifeanalyzer@•/content/www/us/en/architecture-and-technology/64-ia-32- architectures-optimization-manual.html?
wapkw=architectures%20optimization 16

标签: #phpmyadmin #服务器 #文件 #怎么看 #文件 #打不开 #放在 #文件