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

文档序号: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使用的服务和/或硬