用于动态低延迟优化的系统和方法与流程

文档序号:13985181
用于动态低延迟优化的系统和方法与流程

本发明涉及基于处理器的系统运行,特别涉及关于基于处理器的系统运行的动态低延迟优化。



背景技术:

近年来,各种形式的基于处理器的平台的使用激增。例如,使用基于处理器的个人通信和数据处理平台,通常被称为智能手机,在过去几年急剧增长,并预计在可预见的将来将继续增长。例如,除了用于提供蜂窝电话通信服务之外,智能手机通常用于提供数据通信、数据处理、观看和/或创建流媒体、游戏和娱乐等。能够提供前述功能的应用程序的范围从使用较少处理能力和其它资源的应用程序(例如,瘦客户端(thin client)和简单的Web浏览器应用程序)到需要大量处理能力和/或资源的应用程序(例如,虚拟现实(VR)和增强现实(AR)应用程序、复杂的游戏和图形应用等)。

许多当前基于处理器的平台,特别是移动和电池供电的基于处理器的平台,其处理能力和资源通常都是有限的。例如,在智能手机实现中,诸如中央处理单元(CPU)、主存储器和输入/输出(I/O)器件的硬件资源明显只能提供有限的处理、可用性和功能。当基于处理器的平台同时运行多个应用程序时,这些应用程序将竞争使用基于处理器的平台的硬件资源。因此,基于处理器的系统的性能,特别是诸如具有有限硬件资源的智能手机的基于处理器的系统的性能,通常都会由于应用程序的同时执行而降低。例如,典型智能手机同时执行多个应用程序,所提供的多功能运行会导致可感知的延迟。

然而,智能手机(例如,基于ANDROID操作系统的移动设备)和提供通用计算功能的其它移动设备(例如,个人数字助理、平板电脑设备等)继续在全球范围广受欢迎,其已被广泛使用,变得几乎无处不在。相应地,对应用程序的需求也大幅增长,可在这些基于处理器的系统上使用的应用程序类型及其功能性和复杂性也在增加。特别地,随着游戏和应用程序市场的增长,对低延迟应用程序(例如,VR、AR、音频、车辆控制等)的需求增加。许多设备提供的基于处理器的平台和相关操作系统,如智能手机和提供通用计算功能的其它移动设备,并不是默认设计用于低延迟应用程序。因此,当在非优化操作系统里执行这种需要非常严格时间限制的应用程序时,用户体验经常受到很大的影响(例如,用户感觉到音频播放中的嗤嗤声、可察觉的丢失视频帧、数据更新的延迟等)。

虽然已经做出了一些对低延迟性能提供改进的尝试,但是现有的低延迟技术迄今还未达到最佳。例如,内核空间低延迟技术包括减少系统开销(例如,删除Linux内核中未使用的模块,以减少驱动程序加载时间)或实施通用低延迟Linux内核(例如,使用LinuxRT-patch实时补丁以将通用Linux内核改变为具有一定的“实时”能力),这可以在智能手机的ANDROID操作系统里实施。此外,还有许多用户空间低延迟技术。例如,用户空间低延迟技术包括减少系统开销的技术(例如,在ANDROID操作系统中预先禁用不需要的服务,诸如降低背景噪声),各种最小化应用程序代码大小的技术(例如,使用“-O3”编译选项(GNU编译器工具链),以提供运行速度优化指令和编译选项,减少启动时间),或使用结构良好的编码技术(例如仔细使用锁定机制、使用较少的延迟/睡眠、不阻挡回调等)。

这些低延迟优化技术通常被用于嵌入式系统编程,并且通常静态地实施到系统,在应用程序或系统运行之前实施,且不面向资源(即,不适于对特定硬件或软件模块进行优化)。例如,上述通用低延迟Linux内核并没有对执行任何特定应用程序进行优化,在应用程序需要一个实际的低延迟环境时,通常不会提供显著的改善。此外,当该低延迟Linux内核被实施在基于处理器的系统中时,低延迟内核静态地存在于该系统中(即,存在且运行),并不提供动态启用或禁用低延迟功能(例如,以每个应用程序为基础,其中诸如内核的低延迟实施对于一个或多个应用程序来说并不是有利的或期望的)。例如,LinuxRT-Patch实时补丁本身不提供动态功能,只是在编译之前实时选项可以通过配置列表(例如,由基于text-UI文字用户界面的菜单选项工具生成)进行配置,因此这些选项在Linux内核运行后都不可选。对于上述系统调整技术,不需要的功能(例如,驱动程序模块)被预先去除,因此该技术被静态地实施到系统。即使很少使用的功能被编译为可加载/可卸载模块以减少最终系统的尺寸,一旦需要这些模块功能时,加载/卸载模块会增加执行时间。

类似地,对于任何特定应用程序,用户空间低延迟技术也没有被优化,也是静态地实施,并根据应用程序所使用的资源,可能会或可能不会对应用程序所经历的延迟产生任何显著的影响。例如,通过使用优化的编译选项(例如,使用GNU编译器工具链的“-O3”编译选项)来提高运行性能在编译期间是适用的,但在运行期间是不能重回原来选项的。此外,现有的用户空间低延迟技术与现有的内核空间低延迟技术并没有紧密结合,因此并没有为操作系统和应用程序的组合提供低延迟优化,而是尝试单独和独立地解决操作系统和应用程序其中之一的延迟。例如,能够启动/停止系统服务的命令行可能对开发人员是可用的,但这些命令行工具对应用程序开发人员而言通常是不可访问的。而且,现有的用户空间低延迟技术专注于与应用程序相关的任务,而不是整个数据路径。此外,现有的用户空间低延迟技术不能直接访问基于处理器的系统硬件或其信息,而是通过一个硬件抽象层(HAL)进行界面连接,该硬件抽象层(HAL)阻挡对应用程序所使用的特定硬件的理解。



技术实现要素:

本发明涉及提供动态实施低延迟优化的系统和方法,其被配置以从硬件层执行,上到应用程序(例如,从应用程序层垂直贯穿操作系统至硬件层)。本发明的低延迟优化实施的实施方式被配置以允许操作系统(例如,ANDROID操作系统)维护本机(native)多功能的功能性,同时促进需要低延迟环境的应用程序的低延迟运行。根据实施例实施的低延迟运行针对特定应用程序进行了优化,特定应用程序与特定硬件连接,这些应用程序在基于主处理器的系统上运行,该系统根据本发明的概念被配置以用于进行低延迟优化。虽然根据本发明的概念低延迟运行针对特定应用程序进行优化,但实施例的低延迟优化并不以应用程序本身为目标,而是针对操作系统的用户空间层(例如,HAL、设备驱动框架、系统服务等),以提供一个环境给应用程序运行,其对该特定应用程序的低延迟运行进行了优化。例如,低延迟优化实施可以包括在用户空间(例如,操作系统框架)和内核空间里实施各种模块,其中这些模块协作以获得关于应用程序所使用的服务和硬件的信息,并提供这些信息以便促进有关应用程序的低延迟运行。

在根据实施例运行时,低延迟运行是通过一个低延迟优化实施来动态地启用或禁用,诸如以每个应用程序为基础,在适当时候或根据需要进行低延迟运行。因此,可使用低延迟优化实施的逻辑,以确定针对一个特定应用程序是否能够启用低延迟优化。所以,该逻辑可以以每个应用程序为基础,在适当时候或根据需要,动态地启用或禁用低延迟运行。

根据本发明实施例配置的一个低延迟优化实施,执行诸如从硬件层到应用程序的优化,包括一个多部分配置,其可用于获得有关应用程序所使用的服务和硬件的信息,并利用该信息以提供低延迟运行。例如,低延迟优化实施可以包括过程解析器功能,其被配置以获得有关应用程序使用基于处理器的系统服务和硬件的信息,以及优化引擎功能被配置以根据所获取的信息对所述应用程序执行基于处理器的系统的优化。实施例的过程解析器功能和/或优化引擎功能可以被提供作为布置在基于处理器的系统的操作系统框架中的一个或多个模块,诸如在其用户空间内。

过程解析器功能可以包括多个解析模块,其可用于查询有关应用程序所使用的服务和硬件的信息。例如,根据本发明的概念,实施例的低延迟优化实施的过程解析器功能包括用户空间解析逻辑和内核空间解析逻辑,用于获得有关应用程序所使用的服务和硬件的信息。

实施例的过程解析器功能的用户空间解析逻辑用于获得应用程序信息和关于由应用程序使用的服务的信息,以及由承载该应用程序的基于处理器的系统的一个或多个方面所提供的服务的信息。例如,用户空间解析逻辑可以通过与基于处理器的系统内核(如Linux内核)中的过程管理模块交互作用来获得应用程序的名称并查询自相关的资源。此外,用户空间解析逻辑可以通过查询布置在操作系统框架中的服务查询模块来找到被调用的操作系统服务(如ANDROID服务)的资源。

实施例的过程解析器功能的内核空间解析逻辑用于找到被调用的硬件的资源。例如,内核空间解析逻辑可以使用有关应用程序的信息和由应用程序使用的服务的信息,其是由与内核的逻辑交互作用的用户空间解析逻辑获得的(例如,布置在基于处理器的系统内核中的一个或多个模块),以确定应用程序所使用的硬件资源。内核与内核空间解析逻辑的交互作用,绕过硬件抽象层而获得有关应用程序使用的特定硬件的信息。

根据本发明的实施例,过程解析器功能的运行以获取有关应用程序使用服务和硬件的信息,可以在初始化应用程序时提供(如在启动应用程序时)。此外,这种过程解析器功能可以继续处理(如在后台运行)以便监控应用程序分配的任何新资源。

有关应用程序的信息以及应用程序使用的服务和硬件的信息,其是通过实施例的过程解析器功能获得,可以被传递到上述优化引擎功能,以便实施有关应用程序的低延迟优化。因此,本发明实施例的优化引擎逻辑(例如,作为布置在基于处理器的系统的操作系统框架中的一个或多个模块),可以从上述过程解析器功能获得查询结果,并且为应用程序执行优化。该优化可以包括诸如CPU核心分区、改变线程的调度策略和优先级、CPU工作频率管理、切换到使用高分辨率计时器、后台进程状态控制(例如,在启用低延迟模式时,暂停或禁用不必要的进程以减少系统的背景噪声)等。

本发明实施例的优化引擎逻辑被配置以记住有关应用程序已经实施了哪些优化。因此,优化引擎逻辑可以用于提供恢复处理,诸如在对应用程序实施优化之前将系统回滚(rollback)到初始状态。

前面已经相当广泛地概述了本发明的特征和技术优点,以便能够更好地理解以下对本发明的详细描述。以下将描述本发明的其他特征和优点,其形成本发明权利要求的主题。本领域技术人员应当理解,可以容易地以所公开的概念和具体实施例作为基础,来修改或设计出实现本发明相同目的的其它结构。本领域技术人员还应该认识到,这样的等同结构并不脱离如所附权利要求中阐述的本发明精神和范围。当结合附图考虑时,将从以下描述中更好地理解本发明特征关于其结构和运行方法的新颖特征、以及其它目的和优点。然而,应当明确地理解,每个附图仅为了说明和描述的目的,并不作为本发明限制的定义。

附图说明

为了更全面地理解本发明,以下结合附图进行描述,其中:

图1显示本发明实施例的对应用程序动态实施低延迟运行的低延迟优化实施;

图2显示本发明实施例的一个提供低延迟优化的过程的流程图;

图3-6、7A、7B、8A和8B显示关于图2所示过程的各个功能的详情;和

图9A和9B显示以下操作的模拟测试结果的比较:不进行优化的操作、使用现有通用的低延迟Linux内核的操作、以及使用本发明实施例的对特定应用程序进行优化的动态实施低延迟优化技术的操作。

具体实施方式

图1显示一个实施例的低延迟优化实施,其包括一个多部分配置,用于获得关于应用程序所使用的服务和硬件的信息,并利用该信息来提供动态实施低延迟运行。具体地,图1显示一个实施例的基于处理器的系统100(例如,具有有限的处理和/或其它功能的智能电话或其它设备),其配置用于优化特定应用程序的低延迟运行。图1实施例所示的低延迟优化实现配置包括在用户空间(例如,所示实施例的示例性ANDROID框架)和内核空间(例如,所示实施例的Linux内核)中实施的模块。所述模块中的各个模块一起协作以获得关于由应用程序使用的服务和硬件的信息,并提供该信息以促进关于应用程序的低延迟运行,这将在以下详细讨论。

应当理解,图1的各个模块或其部分可以被实施为代码段(例如,软件、固件和/或硬件逻辑)以执行本发明所述任务和功能。这些代码段可以由基于处理器的系统100的一个或多个处理器(例如,CPU、专用集成电路(ASIC)、可编程门阵列(PGA)、多核处理器的一个或多个核心处理器等)来运行以提供本发明实施例的运行。代码段可以存储在处理器可读介质中,诸如可以包括能够适当存储信息的任何介质。处理器可读介质的例子包括电子电路、半导体存储器件、只读存储器(ROM)、闪速存储器、可擦除ROM(EROM)、光盘ROM(CD-ROM)、光盘、硬盘等。

再次参考图1,所示基于处理器的系统100提供一个操作环境,该操作环境包括用户空间110(例如,操作系统框架,诸如可以包括ANDROID框架,提供一个为应用程序执行的环境)、硬件抽象层空间140(例如,HAL,其可以提供简化和抽象的应用程序编程接口(API),以允许应用程序使用基于主处理器的系统的硬件,而不管底层硬件的类型)、以及内核空间150(例如,操作系统内核,诸如可以包括Linux内核,在基于主处理器的系统内提供根或低级控制的环境)。基于处理器的系统100的操作环境根据本发明概念进行配置,以便为应用程序运行提供一个低延迟环境,从而通过基于处理器的系统促进应用程序的低延迟运行。

图1实施例所示的低延迟优化实施配置包括在用户空间110(例如,所述实施例的示例性ANDROID框架)和内核空间150(例如,所述实施例的Linux内核)中实施的模块。特别地,所述实施例的低延迟优化实施配置将低延迟控制模块120(包括过程解析模块121和优化引擎模块124)引入到用户空间110中。此外,所述低延迟优化实施配置将服务查询模块131配置在用户空间110的服务管理器113内,并且相应地将资源报告接口132布置成与在用户空间110中调用的系统服务进行通信。关于在内核空间150中实施的模块,所述实施例的低延迟优化实施配置将模块解析器模块160、内核线程(K线程)寄存器模块170和呼叫跟踪模块180引入到内核空间150中。另外,所述低延迟优化实施配置将标识记录模块191配置在内核空间150的框架注册器152中,并相应地将K线程创建器192、设备驱动框架标识193和资源报告接口194配置在内核空间150的设备驱动框架153中,将K线程创建器195、设备驱动模块标识196和资源报告接口197配置在内核空间150的设备驱动模块(如设备驱动模块154)中。以下详细描述根据本发明概念提供低延迟优化的上述模块的操作和交互。

根据实施例运行时,当在用户空间110运行一个期望有低延迟环境的应用程序时(例如,应用程序111,诸如可以包括VR应用程序、AR应用程序、音频应用程序、多媒体应用程序、实时系统控制应用程序或其它要求低延迟运行以进行正确运行和/或满足用户体验质量目标的应用程序),可以触发低延迟优化处理。活动管理器112管理用户空间110内的活动,根据本发明实施例运行时,其被调用以向低延迟控制模块120提供有关应用程序111的信息以便于进行低延迟优化处理。

实施例的低延迟控制模块120可用于确定(例如,使用由活动管理器112提供的应用程序111的信息)是否针对应用程序111提供低延迟优化(例如,确定应用程序111是否需要低延迟优化,确定应用程序111是否期望低延迟优化,确定是否能够关于应用程序111启用低延迟优化等)。因此,实施例的低延迟控制模块120可以动态地启用或禁用关于任何特定应用程序的低延迟优化处理。

在低延迟控制模块120确定关于应用程序111提供低延迟优化的情况下,实施例的过程解析器模块121用于获得关于应用程序111使用的服务和硬件的信息。例如,过程解析器模块121的用户空间解析器122可使用应用程序111的标识信息(例如,应用程序111的名称和/或其它识别信息)来查询应用程序111使用(例如,通过查询内核空间150的过程管理器151)的自相关资源(即,自相关资源是由应用程序111本身创建的资源或线程,而不是由应用程序111调用的系统服务创建的间接资源或线程)。另外,用户空间解析器122可以查询用户空间110的服务管理器113,以获得关于由应用程序111使用的各种服务的信息(例如,可以包括由应用程序111调用的间接资源或线程)。

服务查询模块131和资源报告接口132被所述实施例的用户空间解析器122用于查询由应用程序111调用的系统服务使用的资源(即,由应用程序111间接调用的资源,在此被称为间接资源)。在图1所示实施例中,服务查询模块131被配置在服务管理器113中,并且可与其一起用于查询和报告由应用程序(如应用程序111)调用的间接资源。另外,实施例的服务查询模块131可用于控制服务状态,诸如根据需要启用和/或禁用服务(例如,根据由低延迟控制模块120提供的控制信号)。所示实施例的资源报告接口132提供一个用于用户空间服务和内核模块(例如,驱动器、框架等)的接口,可用于提供查询和报告关于由应用程序111调用的资源,诸如可以包括由应用程序111使用的服务资源(如间接资源)以及由应用程序111本身创建的服务资源(即应用程序111直接调用的资源,在此称为自相关资源)。

过程解析模块121的内核空间解析器123可用于向内核空间150的一个或多个模块查询关于由应用程序111调用的资源的信息。例如,所示实施例的内核空间解析器123可以向模块解析器模块160查询,诸如使用有关应用程序111的信息以及由用户空间解析器122获得的应用程序111使用的服务,以获得关于由应用程序111调用的系统服务使用的硬件资源的信息(即间接资源,包括由应用程序111间接调用的硬件资源)。因此,实施例的内核空间解析器123可用于确定被调用硬件的资源。

实施例的模块解析模块160可以维护关于在设备节点名称和驱动程序之间关系的信息。因此,通过使用被调用硬件(如果有的话)的设备节点名称,模块解析模块160可以处理来自过程解析模块121的查询,以搜索其属于哪个设备驱动框架、设备驱动器和/或硬件模块,诸如通过查询所示实施例的K-线程注册器170。例如,K-线程注册器170可以维护内核线程与设备驱动器标识(例如,由设备驱动模块标识196表示的设备驱动模块154的标识)以及设备驱动框架(例如,由设备驱动框架标识193表示的设备驱动框架153的标识)之间的一个或多个关系列表。应当理解,除了传统的内核线程之外,本发明所指的内核线程可以包括用于中断处理程序的线程(例如,其中LinuxRT-patch实时补丁被配置以提供中断处理程序变成线程的操作)。运行时,包含设备驱动模块的设备驱动框架,其中一个或两者都可以包含内核线程,可以结合其各自的创建向框架注册器152注册。每个设备驱动框架(例如,设备驱动框架153)和设备驱动模块(例如,设备驱动模块154)的所有内核线程可以从一个内核线程创建器(例如,K-线程创建器192和K-线程创建器195)开始。实施例的框架注册器152的标识记录器191用于维护关于内核线程创建器与设备驱动器标识(例如,通过使用K-线程创建器195、设备驱动模块标识196和资源报告接口197而获得)以及由对应K-线程创建器(例如,K-线程创建器192或K-线程创建器195)所创建的设备驱动框架(例如,通过使用K-线程创建器192、设备驱动框架标识193和资源报告接口194而获得)之间关系的信息。呼叫跟踪模块180可以提供内核线程创建例程的门控模块。运行时,实施例的呼叫跟踪模块180收集有关K-线程创建器与来自标识记录器191的设备驱动器和设备驱动框架的标识之间关系的信息。从前述可以看出,实施例的标识记录器191存储设备驱动框架和设备驱动器及其对应的K-线程创建器的关系(例如,一对一映射,其中每个设备驱动框架或设备驱动器对应一个K-线程创建器)。另外或可替代地,实施例的呼叫跟踪模块180可用于反向跟踪以识别特定设备驱动框架(例如,设备驱动框架153)或与一个K-线程创建器(例如,K-线程创建器192或K-线程创建器195)相连的设备驱动器(例如,设备驱动模块154)。因此,通过分别使用资源报告接口194和197,呼叫跟踪模块180可以从所识别的设备驱动框架(例如,设备驱动框架153)或设备驱动器(例如,设备驱动模块154)获得有关硬件资源的信息。实施例的呼叫跟踪模块180还可以将这种设备驱动框架或设备驱动器与相应资源的关联输出到K-线程注册器170,以将关于由应用程序111调用的硬件资源的信息提供给模块解析模块160。因此,呼叫跟踪模块180可以用于获得关于由应用程序111调用的系统服务使用的硬件资源的信息(例如间接资源,包括由应用程序111间接调用的硬件资源),并提供给模块解析器160。从上述可以理解,实施例的K-线程注册器170存储设备驱动框架和设备驱动器及其相应资源的关系(例如,一对多映射,其中几个资源可以映射到同一设备驱动框架或设备驱动器,因为一个K-线程创建器可以创建多个内核线程,使得几个资源(线程)可以来自相同设备驱动框架和设备驱动器)。根据来自内核空间解析器123的查询,模块解析模块160可以向诸如过程解析模块121和/或优化引擎模块124报告关于由应用程序111调用的间接资源的信息。

从上述可以理解,实施例的过程解析模块121用于提供和/或便于提供(例如,通过模块解析模块160)有关应用程序111、由应用程序111使用的服务和/或硬件的信息到优化引擎模块124,用于执行低延迟优化。应当理解,在将这些信息提供给优化引擎模块124之后,实施例的过程解析模块121可以继续用于执行一个或多个上述功能,诸如执行后台处理以监控由应用程序111启动任何新资源,或以其它方式分配给应用程序111的任何新资源。

通过使用关于由应用程序111调用的特定服务和硬件的信息,优化引擎模块124可以实施有关应用程序111的低延迟优化,由此低延迟优化可以专门针对应用程序111进行定制,并考虑与应用程序111相关联的整个数据路径。由优化引擎模块124实施的低延迟优化可以包括CPU核心分区、改变线程的调度策略和优先级、CPU工作频率管理、切换到使用高分辨率计时器以及后台过程状态控制,例如在启用低延迟模式时暂停或禁用不必要的过程以减少系统的背景噪声。此外,实施例的优化引擎模块124被配置以记住已经实施了什么优化,以便于把系统回滚,诸如将应用程序执行的环境返回到对应用程序111实施优化前的初始状态。

应当理解,为了便于或以其它方式适应本发明概念的低延迟优化的运行,可以对基于处理器的系统100和/或提供的运行环境进行各种改变。例如,可以对操作系统进行一种或多种适配(例如,实施一个或多个操作系统补丁、可选操作系统功能模块、驱动器等)和/或可以将一个或多个特征添加到运行环境(例如,实施一个或多个资源、功能等)。下面是对操作系统进行适配的一个例子,可以配置LinuxRT-patch实时补丁(例如,提供中断处理程序可以变成线程的操作,诸如允许改变调度策略和优先级,以提供一个优化的任务调度器,并把自旋锁(spinlock)转换成为互斥锁(mutex),诸如消除“优先级反转”并在特定过程访问关键部分期间释放CPU时间)以促进一个通用、基本的低延迟优化(例如,可以和低延迟优化实施配置协同实施的一个或多个内核空间和/或用户空间低延迟优化技术结合使用)。下面是一个可以添加到操作环境的特征的例子,可以配置一个高分辨率计时器以适应低延迟操作(例如,Linux内核中的多个周期性任务是以jiffies计时器为基础的,其通常提供以毫秒为单位的计时分辨率,不能及时执行低延迟应用程序,然而一个可以提供诸如1纳秒计时分辨率的高分辨率计时器,就可以使这些周期性任务提供及时的性能)。还可以对基于处理器的系统和/或所提供的运行环境做出其他改变,以适应一个或多个前述对操作系统的适配和/或添加到操作环境的特征。例如,在实施或去实施低延迟优化技术时,可以添加逻辑以促进在jiffies计时器和高分辨率计时器之间的动态切换。

图2-8提供关于图1所述低延迟优化实现配置的实施例操作的详情的流程图。具体地,图2提供一个根据实施例的典型低延迟优化过程的高阶流程图。图3-8显示关于图2所述过程的各个功能的实施例的详情。

根据图2的流程200运行时,在步骤201,启动可应用低延迟优化的应用程序(例如,图1的应用程序111)。在步骤202,活动管理器112提供一个信号给低延迟控制模块120以启动有关应用程序111的低延迟优化处理。

根据实施例运行时,低延迟控制模块120分析应用程序111和/或与其相关联的信息,诸如用于确定是否针对应用程序111启用或禁用低延迟优化。例如,可以通过活动管理器112(例如,在步骤202)提供应用程序111的名称和/或其它标识信息(在此,统称为应用程序标识信息)给低延迟控制模块120,用于确定低延迟优化是否被启用或禁用和/或用于识别应用程序111调用的资源。另外或可替代地,实施例的低延迟控制模块120本身可以获得(例如,作为步骤203处理的一部分)应用程序标识信息或其某些部分,用于确定是否要启用或禁用低延迟优化和/或用于识别应用程序111调用的资源。例如,低延迟控制模块120的用户空间解析器122可用于获得诸如来自活动管理器112的应用程序标识信息。通过使用该信息,低延迟控制模块120可以访问一个数据库,其具有对应于应用程序名称和/或应用程序的其它标识信息而存储的有关启用和/或禁用低延迟优化的信息(在此被称为低延迟优化激活信息)。另外或可替代,应用程序111可以包括,或以其它方式与其相关联,有关启用和/或禁用应用程序111的低延迟优化的低延迟优化激活信息(例如,在存储类中、在共享对象文件中,诸如共享对象库或动态链接库文件,被提供为用户选择功能调用参数、命令行开关等)。应当理解,除了或替代有关应用程序111的启用和/或禁用低延迟优化的信息之外,根据实施例使用的低延迟优化激活信息可以包括关于针对应用程序111实施/不实施的一个或多个优化的信息、关于低延迟优化的用户设置和/或偏好的信息等。图2所示实施例的低延迟控制模块120使用步骤203的应用程序标识信息和/或低延迟优化激活信息,以确定是否对应用程序111实施(例如,启用/禁用)低延迟优化。

图3显示本发明实施例的关于在步骤203处执行功能的详情。如图3所示例子,应用程序标识信息和/或低延迟优化激活信息,可以被提供给过程解析模块121或以其它方式由过程解析模块121获得,可用于确定是否要对应用程序111启用低延迟优化。例如,在步骤301,可以分析低延迟优化激活信息以确定指示低延迟优化要被启用或要被禁用、以及可能一个或多个低延迟优化要被启用或不被启用的信息是否肯定存在。如图3实施例,如果低延迟优化激活信息包括指示关于应用程序111禁用低延迟优化的信息,则过程继续进行到本机(native)或初始应用程序启动例程(例如,图2的步骤210),因此,对应用程序111不实施低延迟优化处理。但是,如果低延迟优化激活信息包括指示应用程序111要启用低延迟优化的信息,或者不包括确定指示应用程序111要启用或禁用低延迟优化的信息,那么根据图3所示,过程继续进行到步骤302,分析有关应用程序111,以确定是否要实施低延迟优化和/或多个低延迟优化将被实施。

在图3实施例的步骤302,可以使用应用程序标识信息来访问一个和多个数据库,其具有对应于应用程序标识信息而存储的低延迟优化激活信息。例如,如果在步骤301分析的低延迟优化激活信息不包括确定指示低延迟优化将被启用或禁用的信息,或者如果在步骤301没有低延迟优化激活信息可用,则实施例的低延迟控制模块120可以使用应用程序111的应用程序标识信息以访问一个具有低延迟优化激活信息的数据库,用于确定关于应用程序111是否启用低延迟优化和/或是否要启用或禁用低延迟优化。即使在步骤301使用的低延迟优化激活信息包括指示低延迟优化要被启用的信息,在图3实施例的步骤302的过程可以仍然针对应用程序111作进一步的分析,诸如使用应用程序111的应用程序标识信息以访问一个具有低延迟优化激活信息的数据库,用于确定是否针对应用程序111启用低延迟优化。例如,尽管用户设置可以指示要启用低延迟优化,但是基于处理器的系统100的一个或多个方面,其操作系统和/或操作环境却阻止低延迟优化,或建议不对应用程序111实施低延迟优化。另外或可替代地,在步骤302提供的使用应用程序标识信息而获得的低延迟优化激活信息,可以提供关于应用程序111的启用和/或禁用特定低延迟优化的信息。

根据实施例在步骤303运行时,确定有关应用程序标识信息是否匹配一个要启用低延迟优化的数据库条目(例如,比较应用程序识别信息与一个要实施低延迟优化的应用程序列表)。另外或可替代地,可以分析在步骤303使用应用程序标识信息而访问的低延迟优化激活信息,以确定是否关于应用程序111启用低延迟优化和/或启用或禁用一个或多个低延迟优化。根据图3的实施例运行时,如果应用程序标识信息与要启用的低延迟优化的条目不匹配,或者如果使用应用程序标识信息而获得的低延迟优化激活信息包括指示低延迟优化将被禁用的信息,过程进行到本机(native)或初始应用程序启动例程(例如,图2的步骤210),因此,不对应用程序111实施进一步的低延迟优化处理。但是,如果应用程序标识信息与要对其启用的低延迟优化的条目匹配,或者如果使用应用程序标识信息而获得的低延迟优化激活信息包括指示要启用低延迟优化的信息,则图3所示实施例的过程继续,对应用程序111做进一步的低延迟优化处理(例如,图2的步骤204)。

再次参考图2,如果在步骤203确定对应用程序111启用低延迟优化,那么对应用程序111执行进一步的低延迟优化处理。因此,在所示实施例的步骤204,低延迟控制模块120的过程解析模块121的用户空间解析器122可以使用应用程序标识信息向过程管理器151和/或服务管理器113的服务查询模块131查询由应用程序111调用的自相关和间接资源。例如,用户空间解析器122可以用于查询由应用程序111使用的用户空间110的所有资源。

图4显示本发明实施例的关于在步骤204执行功能的详情,向内核空间150的过程管理器151查询由应用程序111调用的自相关资源。在图4所示实施例的步骤401,用户空间解析器122使用应用程序标识信息以向过程管理器151查询关于由应用程序111调用的资源的信息。例如,应用程序标识信息可以用于查询自相关资源,诸如由应用程序111调用的线程(例如,一个在代码中明确调用的“Thread”(线程)类或库功能,诸如JAVA中的“Thread”类和C中的“pthread”)。相应地,过程管理器151可以使用应用程序标识信息来确定应用程序111的资源,诸如由应用程序111调用的线程,并在步骤402提供关于资源的信息给用户空间解析器122。提供给用户空间解析器122的关于资源的信息可以包括过程(线程)ID、过程(线程)名称、过程(线程)状态等。在图4实施例的步骤403,用户空间解析器122可以用于收集由过程管理器151和/或其它源提供的信息以提供有关应用程序111的资源信息。因此,在所示实施例的步骤404,用户空间解析器122提供关于应用程序111的资源信息给优化引擎模块124(例如,关于应用程序111的自相关资源,对应用程序111实施低延迟优化)。

图5显示本发明实施例的关于在步骤204执行功能的详情,向用户空间110的服务管理器查询由应用程序111使用的间接资源。在图5所示实施例的步骤501,用户空间解析器122使用应用程序标识信息向服务管理器113查询关于由应用程序111调用的资源的信息。但是,在一个常规的服务管理器实施中,没有直接的技术知道在运行环境中服务的线程和硬件资源是什么。因此,实施例的服务管理器113中提供服务查询模块131,在步骤502用于查询来自系统服务的资源。例如,服务查询模块131可以使用应用程序标识信息来确定经由资源报告接口(例如,资源报告接口511a和511b中的一个适当的接口)的系统服务的资源,诸如由应用程序111调用的系统服务的线程和其它资源,并在步骤502提供关于资源的信息给用户空间解析器122。提供给用户空间解析器122的关于资源的信息可以是诸如硬件信息、过程(线程)ID、过程(线程)名称、过程(线程)状态等。在图5实施例的步骤503,用户空间解析器122可用于收集由服务管理器113的服务查询模块131和/或其它源所提供的信息,以提供有关应用程序111的资源信息。因此,在所示实施例的步骤504,用户空间解析器122提供关于应用程序111的资源信息给内核空间解析器123(例如,以便查询由应用程序111调用的系统服务使用的硬件资源)和/或优化引擎模块124(例如,关于应用程序111的间接资源,对应用程序111实施低延迟优化)。

再次参考图2,所示实施例的过程包括在步骤205确定关于间接资源是否由应用程序111调用。例如,低延迟控制模块120可以分析由用户空间解析器122获得的关于应用程序111的资源信息和/或由低延迟控制模块120获得的上述低延迟优化激活信息,以确定应用程序111是否调用间接资源。应当理解,在当前的ANDROID架构中,例如,应用程序没有直接访问硬件,因此应用程序呼叫由服务提供的方法,以便使用硬件数据(例如,传感器、摄像机、视频编解码器、音频编解码器等)。尽管在传统实施中,只有系统服务可以与系统硬件交互,利用服务调用相应的HAL功能,所示实施例的低延迟优化配置包括资源报告接口(例如,资源报告接口132)以收集和报告由系统服务使用的硬件资源,由此可以使用该信息以确定系统服务是否调用硬件资源(例如,在执行图5的例子中的功能之后,来自系统服务的硬件资源可以经由服务查询模块131和资源报告接口132而获得)。如果确定系统服务没有调用硬件资源,则所示实施例的过程继续行进到步骤208,运行(例如,通过优化引擎模块124)以实施关于由应用程序111调用的用户空间110的资源的低延迟优化。但是,如果确定系统服务确实调用了硬件资源,则所示实施例的过程继续行进到步骤206,运行(例如,通过过程解析模块121)以获得由应用程序111使用的关于硬件资源的信息。

在所示实施例的步骤206,低延迟控制模块120的过程解析模块121的内核空间解析器123可以使用由用户空间解析器122提供的关于应用程序111的应用程序标识信息和/或资源信息,以查询由应用程序111调用的资源的内核。例如,内核空间解析器123可用于向模块解析模块160查询由应用程序111调用的系统服务使用的所有硬件资源。

实施例的模块解析模块160使用关于资源的信息,诸如设备节点识别信息,由查询中的内核空间解析器123提供,以在步骤207获得由应用程序111调用的关于间接资源的信息。但是,在一个常规的内核实施中,并没有直接的方法来报告对应该查询的硬件资源。因此,在内核中提供K-线程注册器170和呼叫跟踪模块180,在内核的框架注册器中提供标识记录器191,在内核的设备驱动框架153中提供K-线程创建器192、设备驱动框架标识193和资源报告接口194,以及在内核的设备驱动模块(例如,设备驱动模块154)中提供K-线程创建器195、设备驱动模块标识196和资源报告接口197,用于收集有关硬件资源的信息,用于根据内核空间解析器123的查询而提供。图6和图7提供本发明实施例的关于上述功能块的运行详情,以收集有关硬件资源的信息。

图6显示本发明实施例的标识记录器191收集设备模块(例如,设备驱动器和/或设备驱动框架)的标识的运行。在运行时,在每个模块(诸如设备驱动器或设备驱动框架)的注册期间,相应模块的K-线程创建器(例如,K-线程创建器192或195)及其各自标识(例如,设备驱动框架标识193或设备驱动模块标识196)将被报告给图1所示的标识记录器191。实施例使用的模块标识可以包括字符串(例如,字母数字字符串、数字、名称)或适用于在运行环境中唯一标识模块的任何其它形式的值。标识记录器191可用于记录设备驱动器标识(例如,设备驱动模块标识196)和设备驱动框架标识(例如,设备驱动框架标识193)及其相应的K-线程创建器(例如,K-线程创建器195和K-线程创建器192)的关系,记录在诸如框架注册器152的数据库里和/或基于处理器的系统100内的其它地方,用于根据发明实施例进行查询。

图7A和7B显示本发明实施例的用于构建设备驱动器/设备驱动框架和内核线程之间的关系的运行。在运行时,设备驱动器和设备驱动框架的所有内核线程是通过一个K-线程创建器(例如,K-线程创建器192和/或K-线程创建器195)创建的。因此,实施例的呼叫跟踪模块180与一个或多个K-线程创建器一起工作,以构建设备驱动器/设备驱动框架和内核线程之间的关系。在运行时,可以在每次内核线程创建时调用呼叫跟踪模块180。例如,当创建内核线程时,可以调用呼叫跟踪模块180用于收集有关线程的信息。当呼叫跟踪模块180被调用时,呼叫跟踪模块180可以执行反跟踪以找到该内核线程属于哪个K-线程创建器(例如,实施例的呼叫跟踪模块180将通过查询标识记录器191知道K-线程创建器属于哪个设备驱动器或设备驱动框架),然后可以经由相应的资源报告接口(例如,资源报告接口194或资源报告接口197)从找到的设备驱动器(例如,设备驱动模块154)或设备驱动框架(例如,设备驱动框架153)查询资源。作为一个例子,呼叫跟踪模块180可以使用全局符号列表172来进行反跟踪以找出哪个K-线程创建器创建线程。在一个特定实施例中,呼叫跟踪模块180可以经由GNU编译器的一个公共内置功能获得呼叫功能返回地址(例如“__builtin_return_address()”),并计算实际的呼叫功能开始地址。接着,通过查询Linux内核中的全局符号列表(例如,从“kallsyms”模块),可以利用计算出的功能起始地址来获得功能名称。在示例性实施例运行时,由呼叫跟踪模块180找出的功能名称应该是K-线程创建器(例如,K-线程创建器192或K-线程创建器195)(即,所述低延迟优化配置的K-线程创建器中的一个合适的K-线程创建器)。尽管可能有多个“K-线程创建器”,根据本发明实施例,这些K-线程创建器中的每个都属于设备驱动模块或设备驱动框架,因此呼叫跟踪模块180可以通过查询标识记录器191确定该特定“K-线程创建器”的所属主体。因此,呼叫跟踪模块180可以找出K-线程创建器所属的框架和模块,并从所找出的框架或模块(例如,设备驱动框架153和/或设备驱动模块154)进一步查询资源。例如,呼叫跟踪模块180可以从所找出的模块查询资源,例如使用其资源报告接口(例如,资源报告接口194或197)来报告资源(例如,线程ID、线程状态等)。因此,根据实施例利用由呼叫跟踪模块180获得的关系信息来获得由应用程序111调用的关于间接资源的信息,并提供该由应用程序111调用的关于间接资源的信息给模块解析模块160。

实施例的呼叫跟踪模块180用于提供由应用程序111调用的关于间接资源的信息给K-线程注册器170,以便提供应用程序111调用的关于间接资源的信息给模块解析模块160。因此,在运行时,模块解析模块160可以在图2的步骤207将应用程序111调用的关于间接资源的信息报告给过程解析模块121和/或优化引擎模块124。

图8A显示步骤207执行的有关功能的详情,用以将应用程序111调用的关于间接资源的信息提供给过程解析模块121和/或优化引擎模块124。使用调用的设备驱动器的设备节点识别信息,实施例的内核空间解析器123可以向模块解析模块160查询应用程序111调用的间接资源(例如,通过用户空间解析器122查询服务管理器113的服务查询模块131来确定)。如图8B所示,在运行时,每当驱动程序向设备驱动框架注册时,驱动程序也注册其自己的设备节点名称为其自己的标识(例如,使用字符串,诸如字母数字字符串、数字、名称或任何适合在运行环境内唯一识别该模块的其它值),给到模块解析器模块160,以提供一个设备节点名称数据库用于查询。因此,在根据图8A所示实施例运行时,在步骤801,模块解析模块160可以使用该设备节点识别信息来确定相应的设备驱动器和/或设备驱动框架(例如,设备驱动框架153、设备驱动模块154等),并用于向K-线程注册器170查询设备驱动器或设备驱动框架涉及的有关硬件资源的信息。在步骤802,实施例的K-线程注册器170将确认的设备驱动器和/或相应的设备驱动框架的资源报告给模块解析模块160。因此,模块解析模块160可以收集与应用程序111相关的间接资源信息,并将有关硬件资源信息(例如,过程(线程)ID、过程名称(线程)、过程状态(线程)等)报告给内核空间解析器123(例如,便于查询由应用程序111使用的硬件资源)和/或优化引擎模块124(例如,用于对应用程序111实施关于应用程序111的间接资源的低延迟优化)。

再次参考图2,根据所述实施例,过程继续行进到步骤208运行(例如,通过优化引擎模块124)以实施由应用程序111调用的关于自相关和/或间接资源的低延迟优化。例如,实施例的优化引擎模块124可以提供关于基于处理器的系统100的一个或多个模块的控制,用于配置和/或启动适用于应用程序111的一个或多个低延迟优化技术,诸如实施CPU内核分区、更改线程的调度策略和优先级、CPU工作频率管理、切换到使用高分辨率计时器、后台过程状态控制等。在运行时,优化引擎124可以访问一个数据库的信息,该数据库具有关于特定应用程序将要实施的一个或多个低延迟优化技术的数据(例如,上述数据库存储低延迟优化激活信息)。实施例的优化引擎模块124可以利用这些低延迟优化激活信息,其提供关于应用程序111将要实施的低延迟优化技术的数据,以针对应用程序111选择性地启用/禁用适当的低延迟优化技术(例如,确定一个或多个优化适合提供给有关应用程序111的低延迟改进,确定一个或多个优化不适合提供给关于应用程序111的低延迟改进,指定一个或多个优化用于在应用程序111的用户设置和/或偏好中实施/不实施等)。

应当理解,根据本发明实施例,可以启用各种低延迟技术(例如,一种或多种优化技术125-127)以提供一个低延迟运行环境给应用程序111运行。例如,本发明实施例的关于任何特定应用程序实施的特定低延迟优化技术可以包括现有的低延迟优化技术,诸如通过选择性地实施以下一个或多个:最小化应用程序二进制文件的大小(例如,减少启动时间和/或执行时间)、CPU分区(例如,有效地利用所有CPU内核进行多任务和负载平衡,和/或减少上下文切换以允许更多CPU时间被保留用于执行指令)、修整(trimmingdown)系统(例如,预删除没用的模块和代码以减小系统大小并减少加载时间)、调用速度优化指令的编译选项(例如,诸如GNU(图形处理器)编译器工具链的“-O3”编译选项,其可以提供优化指令以便以更有效的方式执行逻辑)、利用结构良好的代码(例如,提高性能)、实施较小延迟和/或较少睡眠(例如,减少CPU等待时间并使应用程序111更加灵敏)等。另外或可替代地,根据本发明实施例,关于任何特定应用程序实施的特定低延迟优化技术可以包括新开发的、可能通常可用的低延迟优化技术,诸如通过选择性地实施以下一个或多个:控制后台服务状态控制(例如,当启用用于应用程序执行的低延迟环境时减少背景噪声,同时允许恢复到初始环境以保持初始多功能能力)、提供高分辨率计时器(例如,提供一个具有高阶分辨率的计时器,诸如纳秒级别分辨率,利用动态开/关逻辑以允许具有严格时间限制的任务能够及时地执行)等。此外,根据本发明实施例,关于任何特定应用程序而实施的特定低延迟优化技术可另外或可替代地包括专用低延迟优化技术,诸如通过选择性地实施以下一个或多个:改变(应用程序的)线程的调度策略和优先级(例如,通过降低很少使用的服务/线程的优先级,同时增加时间要求严格的任务的优先级,和/或改变时间要求严格的任务的调度策略以占用更多CPU时间,同时使其它非时间要求严格的任务释放CPU时间或使用较少CPU时间,来优化应用程序111的性能)、为不同目的创建不同的优化配置(例如,为音频应用程序提供不同的优化配置以优化音频编解码器、网络和存储,为VR(虚拟现实)应用程序提供不同的优化配置以优化传感器、GPU和视频编解码器,为手势控制提供不同的优化配置以优化相机和GPU,为汽车控制提供不同的优化配置以优化传感器、GPS(全球定位系统)和音频编解码器)。

在所示实施例的流程200的步骤208上所提供的操作可以包括:通过优化引擎模块124实施除上述启用/禁用低延迟优化技术之外的功能。例如,实施例的优化引擎模块124可用于记录其启用的特定的优化技术(例如,连同任何特定的配置参数、设置等),如优化回滚(rollingback)。因此,实施例可以利用该信息,便于以后将基于处理器的系统100的操作环境返回到在实施应用程序111的优化之前存在的状态,诸如当应用程序111退出或终止时,当应用程序111进入一个不再需要/期望低延迟操作的操作状态时等等。

在步骤207,已经提供了启用/禁用一个或多个低延迟优化技术的操作,所示实施例的操作进行到步骤208,实施被启用的一个或多个低延迟优化技术。例如,根据优化引擎模块124提供的控制信号,基于处理器的系统100的一个或多个功能模块,例如CPU、存储器控制器、调度器、传感器(例如,陀螺仪、加速度计、罗盘等)、音频编解码器、视频编解码器、存储、网络等,可以实施所选择的低延迟优化技术以提供一个适当的低延迟操作环境用于执行应用程序111。其后,所示实施例的流程200进行到步骤210,其中执行应用程序启动例程,以在基于处理器的系统100的低延迟操作环境内执行应用程序111。

应当理解,虽然已经参照应用程序111的初始执行描述了图2所示实施例的流程200的各种操作,但可以在执行应用程序111期间实施所述的各种操作(例如,在执行应用程序111期间周期性地、在整个执行应用程序111期间连续地、在执行应用程序111期间根据一个或多个事件实施等)。例如,过程解析模块121可以执行上述操作中的一个或多个操作,以在应用程序111运行期间获得应用程序111使用有关服务和硬件的信息,并将该信息提供给优化引擎模块124。相应地,优化引擎模块124可以执行上述操作中的一个或多个操作,以启用/禁用其后被确定为适合于应用程序111的一个或多个低延迟优化技术。

图9A和9B显示以下操作的模拟测试结果比较:不进行优化的操作、使用现有通用的低延迟Linux内核的操作、以及使用本发明概念对特定应用程序进行优化的动态实施低延迟优化技术的操作。图9A和9B的模拟显示InvenSenseMPU6500六轴(陀螺仪+加速度计)MEMSMOTIONTRACKINGTM设备的模拟操作中接收传感器数据的时间差,该模拟是在包括ROCKCHIPRK3288(具有ARMv7内核)CPU、支持400MHz时钟速度的2GBDDRRAM、Linux内核版本3.10.0和ANDROID5.1操作系统的测试环境中操作的。图9A和9B的模拟结果显示接收传感器(图9A的加速度计和图9B的陀螺仪)数据的一段时间内的时间差,确定为td=tactual–texpected,其中td是实际的和期望的接收传感器数据之间的时间差,tactual是实际接收传感器数据的时间,而texpected是期望接收传感器数据的时间(例如,在所示模拟中为4毫秒)。在图9A和9B中,正值时间差表示比预期更晚接收到传感器数据,负值时间差意味着比预期更早接收到传感器数据。因此,时差值越接近0,就越“实时”。从图9A(加速度计)和图9B(陀螺仪)的模拟结果图可以容易地看到,使用本发明概念对应用程序111执行低延迟优化,比没有使用优化或使用普通低延迟Linux内核优化,更加一致地实时接收传感器数据。

尽管已经详细描述了本发明及其优点,但应当理解,在不脱离由所附权利要求定义的本发明精神和范围的情况下,可以对本发明进行各种修改、替换和变更。此外,本申请的范围并不受限于说明书中描述的过程、机器、制造、物质组成、手段、方法和步骤的特定实施例。本领域普通技术人员从本发明的披露容易理解,根据本发明,可是使用目前存在的或以后开发的、能够基本上执行与在此描述的实施例相同功能或基本上实现相同结果的方法、机器、制造、物质的组成、手段、方法或步骤。因此,所附权利要求旨在包括这些过程、机器、制造、物质的组成、手段、方法或步骤在其范围内。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1