LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

在Workload Automation中实现suspend分析

1. 背景

这里涉及到两个工具analyze_suspend.py和Workload Automation。

下面analyze_suspend.py简称为ASPY,Workload Automation简称为WA。

ASPY着重于对Suspend/Resume流程进行分析,然后得出每个阶段的分析结果。对流程进行优化,流程越短也就意味着更低的功耗。

WA是ARM维护的用于自动产生特定负荷,然后进行测试,获取结果并给出分析结果的自动化工具。

将ASPY融入WA,有助于对Suspend/Resume进行自动化分析,并且获取批量分析结果。

1.2 ASPY介绍

在《Suspend to RAM和Suspend to Idle分析,以及在HiKey上性能对比》中使用analyze_suspend.py对HiKey的suspend/resume进行量化,并进行了优化。

 

ASPY官网:https://01.org/zh/suspendresume

代码维护:https://github.com/01org/pm-graph/

官网维护在ANALYZE SUSPENDHome对ASPY的能做什么?有什么益处?适用于谁?进行了介绍。

Overview对如何使用ASPY进行优化进行了解读。

Community介绍了代码维护在Github上。

Getting Started详细介绍了如何使用ASPY,包括Downloading、Configure kernel、Configure command line、Usage等等。

News&Blogs是一些案例的介绍。

1.3 WA介绍

WA是用于Linux或Android平台执行workload,并且测量结果、分析输出报告。

Workload Automation分析及其使用》中对WA进行了分析并给出了一个简单示例。

3. 基于WA对ASPY进行自动化

将ASPY融入进WA大概分为两部分,一部分是创建workload,另一部分是创建分析结果的result_processor。

3.1 创建Suspend Workload

 执行suspend workload,需要借助于RTC作为Resume源;对/sys/power/state写入mem/freeze触发suspend流程,然后等待RTC设备超时唤醒触发resume流程。

同时需要在在触发suspend流程之前,清空ftrace和dmesg,并设置好Tracepoints;在resume流程之后,保存ftrace和dmesg。

 

3.1.1 关于class Workload

 class Workload是所有workloads的基类,其中主要成员如下:

paramenters是此Workload的参数。

setup是Workload的配置工作,在run之前。

run是执行此Workload的核心。

update_result在run之后获取测试结果。

teardown做一些收尾工作。

validate在Workload开始前进行一些有效性验证。

3.1.2 实现Suspend Workload

 

3.2 创建SuspendAnalyze result_processor

 

4. 分析实例

 

posted on 2017-09-30 15:27  ArnoldLu  阅读(1562)  评论(0编辑  收藏  举报

导航