`

高通平台Performance机制学习总结

阅读更多
高通平台Performance机制学习总结
利用在高通平台中的Performance机制,可以提高性能,比如应用的启动速度,滑动流畅性等。接下来就看下高通给我们提供的Performance机制
1.该机制的JNI层实现部分位于
./vendor/qcom/proprietary/android-perf/QPerformance/jni/com_qualcomm_qti_Performance.cpp

上层实现位于
./vendor/qcom/proprietary/android-perf/QPerformance/src/com/qualcomm/qti/Performance.java

2.framework层的使用需要通过反射机制调用com.qualcomm.qti.Performance
具体实现在:
./frameworks/base/core/java/android/util/BoostFramework.java

在BoostFramework的构造函数中通过反射调用Performance对象,而BoostFramework中的好多方法是被hide掉的,可能是为了安全考虑吧,在应用层无法使用,只能在系统层使用。现在举一个例子当应用启动时创建进程的时候可以使用高通给我们提供的Performance机制。
在ActivityManagerService中,构造中会判断是否启动该机制
mIsLaunchBoostv2_enabled = mContext.getResources().getBoolean(
                   com.android.internal.R.bool.config_enableLaunchBoostv2);
if(mIsLaunchBoostv2_enabled) {
           lBoost_v2_TimeOut = mContext.getResources().getInteger(
                   com.android.internal.R.integer.lboostv2_timeout_param);
           lBoost_v2_ParamVal = mContext.getResources().getIntArray(
                   com.android.internal.R.array.lboostv2_param_value);
        }

在startProcessLocked中进行判断:
 // Start launch boost v2
                if (mIsLaunchBoostv2_enabled == true && sPerfBoost_v2 == null) {
                    sPerfBoost_v2 = new BoostFramework();
                }
                if (sPerfBoost_v2 != null) {
                   sPerfBoost_v2.perfLockAcquire(lBoost_v2_TimeOut, lBoost_v2_ParamVal);
                   sIsLaunchBoostv2_set = true;
                }

接下来看一下核心部分BoostFramework的实现
构造函数中通过反射获得Performance对象
    public BoostFramework() {

        if (mIsLoaded == false) {
            try {
                Class perfClass;
                PathClassLoader perfClassLoader;

	        perfClassLoader = new PathClassLoader(PERFORMANCE_JAR,
                                  ClassLoader.getSystemClassLoader());
                perfClass = perfClassLoader.loadClass(PERFORMANCE_CLASS);
                mConstructor = perfClass.getConstructor();

                Class[] argClasses = new Class[] {int.class, int[].class};
                mAcquireFunc =  perfClass.getDeclaredMethod("perfLockAcquire", argClasses);
                Log.v(TAG,"mAcquireFunc method = " + mAcquireFunc);

                argClasses = new Class[] {};
                mReleaseFunc =  perfClass.getDeclaredMethod("perfLockRelease", argClasses);
                Log.v(TAG,"mReleaseFunc method = " + mReleaseFunc);

                argClasses = new Class[] {MotionEvent.class, DisplayMetrics.class, int.class, int[].cla

之前调用的方法perfLockAcquire的真是面目
/** @hide */
    public int perfLockAcquire(int duration, int... list) {
        int ret = -1;
        try {
            Object retVal = mAcquireFunc.invoke(mPerf, duration, list);
            ret = (int)retVal;
        } catch(Exception e) {
            Log.e(TAG,"Exception " + e);
        }
        return ret;
    }

通过构造中的mAcquireFunc =  perfClass.getDeclaredMethod("perfLockAcquire", argClasses);看其调用的还是Performance中的perfLockAcquire方法。
在Performance.java中会深入到JNI层:
static {
        try {
            System.loadLibrary("qti_performance");
        } catch (UnsatisfiedLinkError e) {
        }
    }

/** &hide */
    public int perfLockAcquire(int duration, int... list) {
        int rc = REQUEST_SUCCEEDED;
        handle = native_perf_lock_acq(handle, duration, list);
        if (handle == 0)
            rc = REQUEST_FAILED;
        return rc;
    }


1
1
分享到:
评论

相关推荐

    高通平台RF调试总结

    文档的标题“高通平台RF调试总结”指明了文章内容主要针对高通公司的某些特定平台(例如msm8916)进行的RF调试工作。RF调试通常与无线通信设备中的功率放大器(Power Amplifier,PA)、天线开关模块(Antenna Switch...

    高通平台android开发总结

    在Android开发领域,高通平台因其高性能和广泛的应用而备受关注。本文将深入探讨在高通平台上进行Android系统开发的相关知识点,包括bootloader、kernel以及Android应用层的开发经验。 一、Bootloader Bootloader...

    打开高通机器performance的脚本

    shell脚本,打开高通机器的performance模式,包括cpu和gpu

    高通平台android-modem 架构总结

    本文将基于“高通平台android-modem 架构总结”这一主题,深入探讨高通Android Modem架构的关键组件和工作原理。 首先,我们要理解的是高通Modem的硬件架构。高通的Modem通常集成在骁龙(Snapdragon)系列SoC...

    高通平台android开发总结.zip

    "高通平台Android开发总结"文档很可能是对在高通芯片上进行Android应用和系统开发经验的全面总结,提供了深入的技术见解和实践指南。下面我们将详细探讨与这个主题相关的一些关键知识点。 1. 高通平台特性: - ...

    高通平台debug工具介绍

    高通平台 debug 工具介绍 高通平台 debug 工具是一组功能强大且广泛应用于高通平台开发和测试的工具集。这些工具可以帮助开发者和测试工程师更好地 debug 和优化高通平台上的应用程序和系统软件。本文将对高通平台...

    Qualcomm平台android开发总结

    1、 高通平台android开发总结. 7 1.1 搭建高通平台环境开发环境. 7 1.2 搭建高通平台环境开发环境. 7 1.2.1 高通android智能平台概述. 7 1.2.1.1 什么是L4,REX,BREW,AMSS以及相互之间的关系. 7 1.2.2 选择合适的源...

    高通平台驱动开发文档(花了五千大洋培训得来的资料哦)

    【高通平台驱动开发文档概览】 高通平台驱动开发主要涉及在高通开发板上进行的系统构建、编译和调试工作。这份文档详细介绍了如何建立高通平台的开发环境,涵盖了Android和Modem的编译流程,以及对特定芯片如高通...

    高通平台Security学习笔记

    本章介绍Security相关的术语以及基本知识,因为对于初次接触Security的同 事来说,一些基本概念和术语的理解很有必要。 首先,要理解Security研究需要解决的问题,要达到的目的是什么?无非是 要保证数据在传播过程...

    高通平台audio入门v1.0.zip,高通平台audio入门v1.0.zip,高通audio入门,高通audio入门

    通过学习“高通平台audio入门v1.0.docx”文档,开发者可以掌握高通平台上的音频开发基础知识,从而能够创建出高效、低延迟且音质优秀的音频应用程序。在实际操作中,这将有助于提升移动设备的多媒体体验,满足用户对...

    高通平台最新学习资料

    ### 高通平台MDM9628学习资料解析 #### 一、引言 本文档旨在介绍高通平台MDM9628芯片组的学习资料。MDM9628是高通推出的用于移动通信领域的芯片解决方案之一,其具备一系列先进的特性与功能,能够支持多种无线通信...

    高通平台Driver开发的参考文档

    在联想公司工作总结个高通平台Driver开发的经验。

    高通平台android开发总结.docx

    本文将对高通平台上的Android开发进行深入的总结,涵盖环境搭建、编译流程、启动分析以及相关工具的使用,旨在帮助开发者更好地理解和掌握这一领域的知识。 1.1 搭建高通平台环境开发环境 搭建高通平台的Android...

    高通平台充电方案高通平台充电方案

    "高通平台充电方案" 高通平台充电方案是指使用 Qualcomm 平台的充电解决方案,该方案提供了灵活的充电管理,能够满足不同类型的锂离子电池的充电需求。该方案的核心组件是 Power Management IC(PM IC),它负责...

    高通平台学习

    高通平台学习的重点在于理解如何使用Device Tree Source (DTS)来初始化硬件。DTS文件是一种用来描述硬件属性和配置的文本文件,它通过一种叫做Device Tree的机制来实现硬件设备信息的描述。这种机制最初是为了简化...

    高通平台SPI显示

    在嵌入式系统和移动设备领域,高通平台以其高性能和广泛的硬件支持而闻名。SPI(Serial Peripheral Interface)是一种常见的串行通信协议,用于连接微控制器和其他外围设备。在这个场景中,"高通平台SPI显示"指的是...

    高通平台传输限定字节,需要申请dma

    在嵌入式系统和物联网设备中,数据传输是至关...总结来说,面对高通平台IIC传输32字节的限制,通过启用DMA可以显著提升数据传输的效率和吞吐量。正确理解和应用DMA技术,对于优化嵌入式系统的性能和资源利用至关重要。

    高通平台audio入门

    在本文中,我们将深入探讨高通平台上的音频(Audio)入门知识,主要涉及软硬件系统框架、Bringup流程以及各个层次的实现。首先,我们来看看高通平台的Audio系统是如何构建的。 ### 1. Audio软硬件系统框架 #### ...

Global site tag (gtag.js) - Google Analytics