CN111542808B - 预测电子设备上运行应用的线程的最优数量的方法和系统 - Google Patents
预测电子设备上运行应用的线程的最优数量的方法和系统 Download PDFInfo
- Publication number
- CN111542808B CN111542808B CN201880081436.4A CN201880081436A CN111542808B CN 111542808 B CN111542808 B CN 111542808B CN 201880081436 A CN201880081436 A CN 201880081436A CN 111542808 B CN111542808 B CN 111542808B
- Authority
- CN
- China
- Prior art keywords
- application
- electronic device
- threads
- scheduler behavior
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000006399 behavior Effects 0.000 claims description 84
- 238000012549 training Methods 0.000 claims description 19
- 238000010801 machine learning Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 8
- 238000013145 classification model Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012706 support-vector machine Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 208000003028 Stuttering Diseases 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Power Sources (AREA)
Abstract
因此,本文的实施例公开用于预测用于电子设备中的应用的线程的最优数量的方法。该方法包括:由应用线程控制器实时地从应用接收预测将产生的线程的数量的请求。此外,该方法包括由应用线程控制器基于从应用接收到的请求来测量电子设备的当前状态。此外,该方法包括由应用线程控制器基于调度器行为模型和电子设备的当前状态来预测针对应用将产生的线程的最优数量。此外,该方法包括由应用线程控制器基于预测来推荐将由应用产生的线程的数量。
Description
技术领域
本公开涉及应用线程管理,并且更具体地,涉及用于预测在电子设备上运行的应用的线程的最优数量的方法和系统。
背景技术
在电子设备中,开发者通常设置用于应用的固定数量的线程。每个线程由单个核(例如,CPU)来执行,该单个核具有其自己的线程队列、随机存取存储器(RAM)上的分配的存储器。通过调度器来为线程指配处理核。例如,当可用的激活的核的数量小于线程应用请求的数量时,可以为多个线程指配单个核,该多个线程被顺序地执行。
发明内容
技术问题
用于线程的执行时间依赖于系统条件(例如,指配的核的线程队列的当前长度、主存储器的状态、当前激活多少处理器等)。对于在电子设备中运行应用的所有条件,固定数量的线程是非最优的。
解决方案
因此,本文的实施例公开用于预测电子设备中的应用的线程的最优数量的方法。该方法包括:由应用线程控制器实时地从应用接收预测将产生的线程的数量的请求。此外,该方法包括由应用线程控制器响应于从应用接收到的请求来测量电子设备的当前状态。此外,该方法包括由应用线程控制器基于调度器行为模型和电子设备的当前状态来预测针对应用将产生的线程的数量。此外,该方法包括由应用线程控制器基于预测来推荐将由应用产生的线程的数量。
在实施例中,电子设备的当前状态包括但不限于当前中央处理单元(CPU)负载、当前随机存取存储器(RAM)使用、当前温度、当前存储器状态、电子设备中的激活的核的数量,以及当前电池条件和由应用所请求的线程的数量。
在实施例中,在电子设备运行后台任务时动态地确定电子设备的当前状态。
在实施例中,在电子设备运行前台任务时动态地确定电子设备的当前状态。
在实施例中,在不执行任何应用的情况下动态地确定电子设备的当前状态。
在实施例中,调度器行为模型包括与一个或多个设备状态相对应的多个调度器行为配置、与多个调度器行为配置相对应的应用的运行时(run-time)以及与多个调度器行为配置相对应的所产生的线程计数。
在实施例中,由应用线程控制器基于调度器行为模型和电子设备的当前状态来预测针对应用将产生的线程的数量包括:识别用于电子设备的当前状态的多个调度器行为配置、从多个调度器行为配置中选择调度器行为配置,以及通过选择与所选择的调度器行为配置相对应的线程计数来预测针对应用将产生的线程的数量。所选择的调度器行为配置导致用于电子设备的当前状态的最小运行时。
在实施例中,由应用线程控制器针对电子设备的各种状态动态地学习多个调度器行为配置。
因此,本文的实施例公开了一种用于预测应用的线程的最优数量的电子设备。电子设备包括包含应用的存储器,以及处理器。应用线程控制器与存储器和处理器通信。应用线程控制器被配置为实时地从应用接收预测将产生的线程的数量的请求。应用线程控制器被配置为响应于从应用接收到的请求来测量电子设备的当前状态。应用线程控制器被配置为基于调度器行为模型和电子设备的当前状态来预测针对应用将产生的线程的数量。应用线程控制器被配置为基于预测来推荐将由应用产生的线程的数量。
当结合以下描述和附图来考虑本文的实施例的这些及其他方面时,将更好地理解和了解本文的实施例的这些及其他方面。然而,应当理解,尽管以下描述指示优选的实施例及其很多特定细节,但通过说明而非限制的方式给出以下描述。在不背离本文的实施例的精神的情况下可以在其范围内进行许多改变和修改,并且本文的实施例包括所有这样的修改。
在进行以下的具体实施方式之前,可能有利的是,阐述贯穿本专利文献所使用的某些词语和词组的定义:术语“包括”和“包含”及其派生词指包括但不限于;术语“或”是包括性的,意指和/或;词组“与...相关联的”和“与此相关联的”及其派生词可以意指包括、被包括在内、与...互连、包含、被包含在内、连接到或与...连接、耦合到或与...耦合、可与...通信、与...协作、交织、并置、接近于、绑定到或与...绑定、具有、具有...的属性等;以及术语“控制器”意指控制至少一个操作的任何设备、系统或其部分,这样的设备可以实施为硬件、固件或软件或者其至少两个的某组合中。应当注意到,与任何特定控制器相关联的功能可以是集中的或分布的,无论是本地的还是远程的。
此外,可以通过一个或多个计算机程序来实施或支持如下所述的各种功能,一个或多个计算机程序中的每个由计算机可读程序代码形成并且被具体化在计算机可读介质中。术语“应用”和“程序”指的是适于在合适的计算机可读程序代码中实施的一个或多个计算机程序、软件组件、指令集合、过程、函数、对象、类、实例、相关数据或其部分。词组“计算机可读程序代码”包括任何类型的计算机代码,包括源代码、目标代码和可执行代码。词组“计算机可读介质”包括能够由计算机访问的任何类型的介质,诸如只读存储器(ROM)、随机存取存储器(RAM)、压缩盘驱动器、光盘(CD)、数字视盘(DVD),或任何其他类型的存储器。“非暂时性”计算机可读介质不包括输送瞬时电信号或其他信号的有线、无线、光学或其他通信链路。非暂时性计算机可读介质包括其中数据能够被永久地存储的介质和诸如可重写光盘或可擦除存储器设备的、其中数据能够被存储并且稍后被改写的介质。
本发明的有益效果
本文的实施例的主要目的是提供用于预测电子设备中的应用的线程的最优数量的方法和系统。
本文的实施例的另一目的是实时地从应用接收预测将产生的线程的数量的请求。
本文的实施例的另一目的是确定用于电子设备的当前状态的多个调度器行为配置的运行时。
本文的实施例的另一目的是从多个调度器行为配置中选择调度器行为配置,其中所选择的调度器行为配置导致用于电子设备的当前状态的应用的最小运行时。
本文的实施例的另一目的是基于调度器行为模型和电子设备的当前状态来预测针对应用将产生的线程的数量。
本文的实施例的另一目的是通过选择与花费用于电子设备的当前状态的最小运行时的调度器行为配置相对应的线程计数来预测针对应用将产生的线程的数量。
本文的实施例的另一目的是由应用线程控制器针对电子设备的各种状态动态地学习多个调度器行为配置。
本文的实施例的另一目的是产生用于应用的线程的数量。
附图说明
为了对本公开及其优点的更加完全的理解,现在参考结合附图所采取的以下描述,在附图中,相同的附图标记表示相同部分:
图1图示出根据现有技术的其中电子设备控制用于应用的线程的产生的示例;
图2图示出根据如在本文公开的实施例的用于控制用于应用的线程的产生的电子设备的概览;
图3图示出根据如在本文公开的实施例的应用线程控制器的框图;
图4图示出根据如在本文公开的实施例的用于推荐用于在电子设备中执行的应用的线程的数量的方法的流程图;
图5图示出根据如在本文公开的实施例的在推荐用于在电子设备中执行的应用的线程的数量时,用于基于调度器行为模型和电子设备的当前状态来预测针对应用将产生的线程的数量的各种操作的流程图;
图6图示出根据如在本文公开的实施例的用于控制用于在电子设备中执行的应用的线程的产生的各种操作的示例序列图;
图7A图示出根据现有技术的其中通过管理用于照相机应用的线程来生成全景图像的示例;
图7B图示出根据如在本文公开的实施例的其中在生成全景图像时通过控制用于照相机应用的线程的产生来解释全景质量增强的示例;
图8A图示出根据现有技术的其中当许多任务在后台中运行时——诸如紧接在重启电子设备之后——来解释应用的启动的示例;
图8B图示出根据如在本文公开的实施例的其中当许多任务在后台中运行时——诸如紧接在重启电子设备之后、基于用于应用的线程的产生——来解释应用的启动的示例;
图9A图示出根据现有技术的其中当电子设备过热时操作视频回放应用的示例;
图9B图示出根据如在本文公开的实施例的其中当电子设备过热时,基于用于视频回放应用的线程的产生来操作视频回放应用的示例;
图10A图示出根据现有技术的其中解释存储器的迟缓(sluggishness)的示例;
图10B图示出根据如在本文公开的实施例的其中基于用于应用的线程的产生来避免存储器的迟缓的示例;以及
图11A和图11B图示出根据如在本文公开的实施的其中用于训练预测针对应用将产生的线程的最优数量的机器学习模型的各种操作的示例。
具体实施方式
以下讨论的图1至图11B以及用于在该专利文献中描述本公开的原理的各种实施例是仅为示例的方式并且不应以任何方式被解释为限制本公开的范围。那些本领域技术人员将理解,本公开的原理可以实施在任何适当地布置的系统或设备中。
贯穿本专利文献来提供对于某些词语的定义,那些本领域普通技术人员应该理解,在许多实例中(如果不是大多数实例中),这样的定义适用于这样的定义的词语的在先的以及将来的使用。
参考在附图中图示的且在以下描述中详述的非限制性的实施例来更加全面地解释在本文的实施例及其各种特征和有利的详情。省略对公知的组件和处理技术的描述,以便不会不必要地模糊本文的实施例。另外,在本文描述的各个实施例不必是互斥的,这是因为一些实施例能够与一个或多个其他实施例相结合以形成新的实施例。如本文所使用的术语“或者”指的是非排他性的或,除非另外指出其他。本文所使用的示例的意图仅是促进对能够实践本文的实施例的方式的理解并且进一步使得本领域技术人员能够实践在本文的实施例。因此,示例不应当被理解为限制在本文的实施例的范围。
如在本领域中按照惯例,可以就执行所描述的一个或多个功能的块(block)而言来描述和说明实施例。可以在本文被称为单元或者模块等的这些块通过诸如逻辑门、集成电路、微处理器、微控制器、存储器电路、无源电子组件、有源电子组件、光学组件、硬连线电路等的模拟和/或数字电路被物理地实施,并且可以可选地通过固件和/或软件驱动。电路例如可以被体现在一个或多个半导体芯片中,或者被体现在诸如印刷电路板等的基板支承(support)上。可以通过专用硬件,或者通过处理器(例如,一个或多个编程微处理器和相关联的电路),或者通过执行块的一些功能的专用硬件和执行框的其他功能的处理器的组合来实施构成块的电路。在不背离本公开的范围的情况下,实施例的每个块可以被物理地分离为两个或更多相互作用和分立的块。同样地,在不背离本公开的范围的情况下,实施例的块可以被物理地组合为更复杂的块。
附图用于帮助容易地理解各种技术特征,并且应当理解,在本文提出的实施例不受附图限制。因此,除具体地在附图中阐述的那些之外,本公开应当被解释为扩展为任何变化、等同物和代替。尽管在本文可以使用术语第一、第二等以描述各个元素,但这些元素不应当受限于这些术语。这些术语通常仅用于将一个元素与另一元素相区别。
图1图示出根据现有技术的其中电子设备100控制用于应用110的线程的产生的示例。考虑其中当在处理器中仅激活4个核时应用110请求8线程来执行程序的情形。由于激活的核的数量小于所请求的线程,所以在电子设备100中运行应用110是非最优的,其可能导致使得线程中的一些等待核可用于处理。这可能导致电子设备100中的线程创建开销。此外,如果应用110是存储器密集的并且存储器120(例如RAM,等)满,那么线程请求更多存储器来执行应用。这导致用于执行应用的时间延迟。此外,电子设备100没有最优地利用系统资源,以致提供不可靠的/差的用户体验。
因此,期望解决上述缺点和缺陷,并且提供有用的替选。
因此,本文的实施例实现用于预测应用的线程的最优数量的电子设备。电子设备包括包含应用的存储器,以及处理器。应用线程控制器与存储器和处理器通信。应用线程控制器被配置为实时地从应用接收预测将产生的线程的数量的请求。应用线程控制器被配置为响应于从应用接收到的请求来测量电子设备的当前状态。应用线程控制器被配置为基于调度器行为模型和电子设备的当前状态来预测针对应用将产生的线程的数量。应用线程控制器被配置为基于预测来推荐将由应用产生的线程的数量。
与常规方法和系统不同,所提出的方法可以用于基于调度器行为模型来实时地预测线程的当前最优数量,并且电子设备的当前状态指示诸如当前CPU负载、当前RAM使用、当前温度、当前存储器状态、电子设备中的激活的核的数量以及当前电池条件的参数。这导致电子设备中的更快执行时间。因此,电子设备改善用户体验。
所提出的方法可以用于基于电子设备的当前状态和调度器行为配置来实时地预测线程的当前最优数量。这导致在重启电子设备之后立即以平滑方式快速地启动应用,并且电子设备执行许多后台任务。
在示例中,当应用开始在已经运行多个后台任务的电子设备的嵌入平台上运行时,电子设备在该时刻对系统参数进行采样,并且应用利用电子设备的当前状态来预测在该时刻用于应用的线程的理想数量。这将导致在该时刻的应用的最佳性能。
该方法可以用于通过以自动方式根据系统条件变化线程分配来维持电子设备的实时性能并且改善用户体验。该方法可以用于动态地确定用于特定系统条件的线程资源的数量并且以自动方式增强用于开发者的最优性能。
现在参考附图,并且更具体地参考图2至图11,示出了优选的实施例。
图2图示出根据如在本文公开的实施例的用于控制用于应用110的线程的产生的电子设备100的概览。例如,电子设备100可以是但不限于智能电话、个人数字助理(PDA)、平板型计算机、膝上型计算机、个人媒体播放机设备、无线web观看设备、个人耳机设备、应用特定设备等。例如,应用可以是但不限于社交网络应用、web应用、本地应用、电子邮件应用、呼叫应用、消息收发应用、游戏应用、多媒体应用、视频应用等。
在实施例中,电子设备100包括应用110、存储器120、处理器130、通信器140和应用线程控制器150。应用线程控制器150与存储器120、处理器130和通信器140通信。
在实施例中,应用线程控制器150被配置为实时地从应用110接收预测将产生的线程的数量的请求。总体上,每个任务通常包括被称为“线程”的一个或多个执行抽象。线程典型地包括其自己的指令指针并且有时具有其自己的堆栈。典型地,每线程地调度对CPU的访问。任务因此是一个或若干线程被独立地调度以在CPU(多个)上运行的环境,并且甚至在多处理器架构中也不一定一次全部(或者甚至多于一个)被调度的环境。
在实施例中,可以以包括系统调用、寄存器设置等的各种形式来实施请求。
此外,应用线程控制器150被配置为基于从应用110接收到的请求来测量电子设备100的当前状态。在实施例中,电子设备100的当前状态包括但不限于当前CPU负载、当前RAM使用、当前温度、当前存储器状态、电子设备100中的激活的核的数量、线程内的工作负载以及当前电池条件。
在实施例中,当电子设备100处于空闲状态中时,或在与电子设备100相关联的应用110作为后台任务或前台任务运行时,动态地确定电子设备100的当前状态。
基于电子设备100的当前状态和调度器行为模型,应用线程控制器150被配置为预测针对应用110将产生的线程的数量。
在实施例中,调度器行为模型包括与一个或多个设备状态相对应的多个调度器行为配置、与多个调度器行为配置相对应的应用110的运行时以及与多个调度器行为配置相对应的所产生的线程计数。
在实施例中,应用线程控制器被配置为基于机器学习(ML)模型来预测针对应用将产生的线程的数量。可以基于回归模型、分类模型、支持向量机(SVM)模型、神经网络方式或任何其他ML方式中的至少一个来开发ML模型。从在一时间段从电子设备100收集的系统数据(例如,当前CPU负载、当前RAM使用、当前温度、当前存储器状态、电子设备100中的激活的核的数量、当前电池条件等)训练ML模型。
在实施例中,多个回归模型使用当前测量的系统参数来预测应用110的运行时间,每个运行时间针对给定数量的线程。选择预测最小运行时间的模型,并且将线程的对应的数量预测为最优的数量。
在示例中,使用训练数据,‘K’个回归模型被一次地训练为从系统参数预测运行时间。在运行时期间,在电子设备100上,每个回归模型预测当前运行时间。此外,选择预测最低的运行时间的回归模型并且选择相对应的线程的数量作为用于特定应用的线程的最优数量。
在实施例中,分类模型将所测量的当前系统参数分类到属于线程的最优数量的类中。在这种情况下,每个输出类对应于线程的数量(a number of thread)。
在实施例中,应用线程控制器150被配置为训练用于不同的系统条件的ML模型(考虑模型类型1)以预测针对给定系统条件和线程计数所花费的时间。这导致多个模型(每个线程计数一个模型)。在推理过程期间,选择预测用于当前系统条件的最小运行时间的ML模型,并且将相对应的线程计数对待为最优。也就是说,koptimal=ArgMinkTk(systemparameters),其中k是线程计数,Tk()从第k模型给出预测的时间。
在另一实施例中,在创建用于每个可能的线程计数的运行时预测模型(即,模型类型1)之后,应用线程控制器150利用模型(即,模型类型1)以标记训练数据(例如,系统条件)本身,其中标记现在是通过由模型类型1训练的模型所预测的最优线程计数。此外,应用线程控制器150训练分类模型以将训练数据(例如,系统条件参数)分类到类中,其中类标记是最优线程数量。这导致单个分类模型。
在示例中,最优线程预测确定为分类问题,其中,唯一的类id被指配给考虑中的每个数量的线程。使用训练集合,分类模型(例如,神经网络,等等)被训练为一次地将测量的系统条件参数分类到类之一中。在运行时期间,分类模型从当前系统参数预测类。线程的最优数量是与通过分类模型所预测的类相对应的数量。
在实施例中,应用线程控制器150被配置为识别用于电子设备100的当前状态的多个调度器行为配置。此外,应用线程控制器150被配置为从多个调度器行为配置中选择调度器行为配置。调度器行为配置提供用于电子设备100的当前状态的最小运行时。此外,应用线程控制器150被配置为通过选择对应于所选择的调度器行为配置的线程计数来预测针对应用110将产生的线程的数量。
在实施例中,调度器行为配置指示电子设备100的状态、在该电子设备100的状态由应用110花费的时间以及在该电子设备100的状态所产生的线程计数中的至少一个。
在实施例中,调度器行为配置可以包括与存储器120和/或CPU资源的分配相关联的信息以预测针对应用110将产生的线程的数量。
在实施例中,调度器行为配置可以包括关于存储器配置数据和线程配置数据的信息。用于存储器配置数据和线程配置数据的特定值和/或设置可以对应于用于应用110的特定相应存储器缓冲器和CPU线程配置设置。存储器配置数据可以对应于存储器资源的量、大小和存储器120有多少当前是空闲的。线程配置数据可以对应于CPU线程的量、线程的运行时间和/或线程优先排序。应当理解的是,可以针对应用110来相对应地设置/分配其他类型的资源和/或资源属性以改善性能。
在实施例中,由应用线程控制器150针对电子设备100的各种状态动态地学习多个调度器行为配置。
在示例中,应用线程控制器150可以用于基于所使用的线程的数量和通过诸如所需的周期或线程运行时间长度的度量所表示的线程的复杂度来预测针对应用110将产生的线程的数量。
在实施例中,应用线程控制器150可以提供基于调度器行为配置和电子设备100的当前状态来有效地预测针对应用110将产生的线程的数量的线程管理部。在预测针对应用将产生的线程的数量之后,应用线程控制器150被配置为建议用于应用110的线程的最优数量,使得应用110需要产生该线程。
此外,应用线程控制器150可以用于提供应用110和在操作系统(OS)(未示出)中执行的调度器之间的桥,以用于改善电子设备100的性能。OS能够根据调度系统来在核的资源当中分配多个处理线程。如在该技术中通常理解地,线程表示可以在不同的核上基本上分开地调度对的并且独立地执行的应用程序(例如,指令集合)的部分。
此外,OS控制应用110和计算机程序的执行,并且在电子设备100中提供调度、输入输出控制、文件和数据管理、存储器管理以及通信控制和有关的服务。
在实施例中,应用线程控制器150可以包括线程分配逻辑,该线程分配逻辑可以被安排为至少部分地基于监视的实时计算数据、当前CPU负载、当前RAM使用、当前温度、当前存储器状态、电子设备100中的激活的核的数量以及当前电池条件来向至少一个应用110分配线程。
在实施例中,应用线程控制器150可以包括线程分配逻辑,该线程分配逻辑可以包括对于下述可能是有用的线程分配数据:基于关于多个调度器行为配置的学习的信息向适当的应用分配线程。
在实施例中,应用线程控制器150可以包括线程分配逻辑,该线程分配逻辑可以包括对于下述可能是有用的线程分配数据:基于关于多个调度器行为配置的学习的信息向适当的应用分配线程。
在实施例中,应用线程控制器150可以包括线程分配逻辑,该线程分配逻辑可以被安排为至少部分地基于监视的实时计算数据、当前CPU负载、当前RAM使用、当前温度、当前存储器状态、电子设备100中的激活的核的数量以及当前电池条件来向至少一个应用110分配线程。
此外,电子设备100可以提供(provide for)多个处理核,例如每个处理核包含用于执行算术、逻辑和数据流指令的处理单元、寄存器、高速缓存等。此外,处理核可以与存储器120通信,该存储器120逻辑上被示出为单个实体,但是典型地由包括随机存取存储器、盘驱动、闪速驱动等的各种存储器设备组成。
存储器120可以保存该技术中普遍已知的类型的OS程序(未示出)以及将由操作系统程序管理其执行的多个应用程序。
处理器130被配置为执行存储在存储器120中的指令并且执行各种处理。通信器140被配置用于在内部硬件组件之间内部地通信并且经由一个或多个网络与外部设备通信。通信器140被配置用于与应用线程控制器150通信以控制用于嵌入在电子设备100中的应用110的线程的产生。
处理器130用来执行可以被加载到存储器120中的用于应用110的指令。依赖于实施方式,处理器130可以是一个或多个处理器的集合或可以是多处理器核。此外,可以使用其中在单个芯片上主处理器与辅助处理器一起存在的一个或多个异构处理器系统来实施处理器130。作为另一说明性示例,处理器130可以是包含相同类型的多个处理器的对称多处理器系统。
存储器120还存储将由处理器130执行的指令。存储器120可以包括非易失性存储元件。这样的非易失性存储元件的示例可以包括磁性硬盘、光盘、软盘、闪速存储器或者电可编程存储器(EPROM)或电可擦除且可编程(EEPROM)存储器的形式。另外,在一些示例中,存储器120可以被考虑为非暂时性存储介质。术语“非暂时性”可以指示存储介质没有被具体化在载波或者传播的信号中。然而,术语“非暂时性”不应当被解释为存储器120是非可移动的。在一些示例中,存储器120可以被配置为与存储器相比存储更大量的信息。在某些示例中,非暂时性存储介质可以(例如,在随机存取存储器(RAM)或高速缓存中)存储能够随着时间改变的数据。
尽管图2示出电子设备100的各种硬件组件,但是将理解的是,其他实施例不就此受限。在其他实施例中,电子设备100可以包括更少或更多数量的组件。此外,仅为了说明性目的而使用组件的标签或名称,并且组件的标签或名称不限制本公开的范围。一个或多个组件可以被组合在一起以执行与控制用于嵌入在电子设备100中的应用的线程的产生相同的或基本相似的功能。
图3图示出根据如在本文公开的实施例的应用线程控制器150的框图。在实施例中,应用线程控制器150包括请求接收控制器152、当前状态测量控制器154、线程预测控制器156以及产生控制器158。
请求接收控制器152被配置为实时地从应用110接收预测将产生的线程的数量的请求。当前状态测量控制器154被配置为测量电子设备100的当前状态。基于调度器行为模型和电子设备100的当前状态,线程预测控制器156被配置为预测针对应用110将产生的线程的数量。在预测针对应用110将产生的线程的数量之后,产生控制器158被配置为产生针对应用110的该数量的线程。
在实施例中,线程预测控制器156被配置为针对电子设备100的当前状态确定用于多个调度器行为配置的运行时。此外,线程预测控制器156被配置为从多个调度器行为配置中确定针对电子设备100的当前状态花费最小运行时的调度器行为配置。此外,线程预测控制器156被配置为通过选择与针对电子设备100的当前状态花费最小运行时的调度器行为配置相对应的线程计数来预测针对应用110将产生的线程的数量。
尽管图3示出应用线程控制器150的各种硬件组件,但是将理解的是,其他实施例不就此受限。在其他实施例中,应用线程控制器150可以包括更少或更多数量的组件。此外,仅为了说明性目的而使用组件的标签或名称,并且组件的标签或名称不限制本公开的范围。一个或多个组件可以被组合在一起以执行与控制用于嵌入在电子设备100中的应用的110线程的产生相同的或基本上相似的功能。
图4图示出根据如在本文公开的实施例的用于推荐用于在电子设备100中执行的应用110的线程的数量的方法的流程图400。在402,方法包括实时地从应用110接收预测将产生的线程的数量的请求。在实施例中,方法允许请求接收控制器152实时地从应用110接收预测将产生的线程的数量的请求。
在404,方法包括测量电子设备100的当前状态。在实施例中,方法允许当前状态测量控制器154测量电子设备100的当前状态。
在406,方法包括基于调度器行为模型和电子设备100的当前状态来预测针对应用110将产生的线程的数量。在实施例中,方法允许线程预测控制器156基于调度器行为模型和电子设备100的当前状态来预测针对应用110将产生的线程的数量。
在408,方法包括推荐将由应用110产生的线程的数量。在实施例中,方法允许产生控制器158推荐将由应用110产生的线程的数量。
该方法可以用于动态地决定用于特定系统条件的线程资源的数量,以便增强用于应用110的最优性能。该方法可以用于在系统错误条件(例如,电话升温、核故障等)期间提供一致的用户体验。
可以以所呈现的顺序、以不同的顺序或同时地执行流程图400中的各种动作、行为、框、步骤等。此外,在一些实施例中,在不背离本公开的范围的情况下,可以对动作、行为、框、步骤等中的一些进行省略、添加、修改、跳过等。
图5图示出根据如在本文公开的实施例的在推荐用于在电子设备100中执行的应用110的线程的数量时,用于基于调度器行为模型和电子设备100的当前状态来预测针对应用110将产生的线程的数量的流程图406。通过线程预测控制器156来执行操作(406a至406c)。
在406a,方法包括识别用于电子设备100的当前状态的多个调度器行为配置。在406b,方法包括从多个调度器行为配置中选择调度器行为配置。所选择的调度器行为配置导致用于电子设备100的当前状态的应用的最小运行时。在406c,方法包括通过选择与所选择的调度器行为配置相对应的线程计数来预测针对应用110将产生的线程的数量。
可以以所呈现的顺序、以不同的顺序或同时地执行流程图406中的各种动作、行为、框、步骤等。此外,在一些实施例中,在不背离本公开的范围的情况下,可以对动作、行为、框、步骤等中的一些进行省略、添加、修改、跳过等。
图6图示出根据如在本文公开的实施例的用于控制用于在电子设备100中执行的应用110的线程的产生的各种操作的示例序列图。在602,应用110向应用线程控制器150发送应用参数请求。应用参数请求对应于预测针对应用110将产生的线程的数量。应用参数请求包括诸如每线程的周期、每线程的存储器需求等的信息。在604,应用线程控制器150向OS170发送系统参数请求。在606,基于系统参数请求,OS 170向应用线程控制器150发送系统参数响应。系统参数响应包括信息(例如,CPU负载、电池等)。在608,基于系统参数响应,应用线程控制器150预测线程的最优数量。在610,在预测线程的最优数量之后,应用110需要产生该线程。
图7A图示出根据现有技术的其中通过照相机应用来生成全景图像的示例。为了构造全景图像,照相机应用将一个帧附加到另一帧,并且针对拼接用于全景图像的帧的主要需求是例如对于30fps是实时的。照相机应用典型地使用多个线程以得到高性能。但是基于现存的方法,由于在诸如高CPU负载、低速存储器等的条件下,用于照相机应用的线程的数量是非最优的,所以针对拼接用于全景图像的帧的处理以更慢的速率——例如,15fps——运行。因此,显著帧丢失出现,使得全景图像质量降低。
图7B图示出根据如在本文公开的实施例的其中在生成全景图像时通过控制用于照相机应用的线程产生来解释全景质量增强的示例。在所提出的方法中,应用线程控制器150从照相机应用接收预测将产生的线程的数量的请求。应用线程控制器150测量电子设备100的当前状态,诸如当前CPU负载、当前RAM使用和电子设备100中的激活的核的数量。此外,应用线程控制器150基于所请求的线程计数、当前CPU负载、当前RAM使用和电子设备100中的激活的核的数量来预测针对照相机应用将产生的线程的数量,使得由于线程的数量,针对拼接用于全景图像的帧的最优处理在最优运行速率(例如25fps)运行。因此,避免显著帧丢失,使得全景图像质量被提高。
图8A图示出根据现有技术的其中当许多任务在后台中运行时——诸如紧接在重启电子设备100(例如,智能电话)之后——来解释应用110的启动的示例。在现存的方法中,考虑其中如果当智能电话被重启时多个任务在智能电话的后台中运行,然后智能电话以非常缓慢的方式启动应用的情况。在示例中,应用110请求并且获取用于启动应用的8线程,使得处理被划分为8个部分以在8个核上运行,但是因为已经存在后台中运行的多个任务,所以应用启动花费更多时间。
图8B图示出根据如在本文公开的实施例的其中当许多任务在后台中运行时——诸如紧接在重启电子设备100(例如,智能电话)之后、基于用于应用110的线程的产生——来解释应用110的启动的示例。
在所提出的方法中,应用线程控制器150接收预测针对应用110将产生的线程的数量的请求。此外,应用线程控制器150测量当前CPU负载、当前RAM使用和电子设备100中的激活的核的数量中的至少一个。此外,应用线程控制器150基于当前CPU负载、当前RAM使用和电子设备100中的激活的核的数量中的至少一个以及线程计数来预测针对应用110将产生的线程的数量,使得应用线程控制器150建议较少的线程(例如,两个线程),使得处理被划分为较少的部分,这花费最小时间来启动应用。基于所提出的方法,启动应用所花费的时间等于最大队列等待时间和处理的各部分的最大运行时的总和。基于所提出的方法,应用110在智能电话被重启之后平滑地、快速地以及立即地启动并且工作。
图9A图示出根据现有技术的其中当电子设备100(例如,智能电话)过热时操作视频回放应用的示例。在现存的方法中,考虑其中当智能电话变得过热时,禁用少数的(few)核,使得实时地视频回放断断续续(stutter)。在示例中,应用请求并且获取用于播放视频应用的8线程,但是由于智能电话变得过热并且核中的一些是不活动的,所以视频应用仅在2个核中运行。核(即,6个核)的不可用降低线程效率并且增加视频应用的开销。这导致降低用户体验。
图9B图示出根据如在本文公开的实施例的其中当电子设备100(例如,智能电话)过热时,基于用于视频回放应用的线程的产生来操作视频回放应用的示例。
在所提出的方法中,应用线程控制器150接收预测针对视频应用将产生的线程的数量的请求。此外,应用线程控制器150测量当前CPU负载、当前RAM使用和电子设备100中的激活的核的数量中的至少一个。此外,应用线程控制器基于当前CPU负载、当前RAM使用和电子设备100中的激活的核的数量中的至少一个以及线程计数来预测针对视频应用将产生的线程的数量,使得应用线程控制器150建议较少的线程(例如,两个线程),使得处理被划分为较少的部分。因此,方法能够用于提高线程效率并且减少视频应用的开销。因此,甚至当智能电话过热时,视频回放也更平滑地工作。
图10A图示出根据现有技术的其中解释存储器120的迟缓的示例。在现存的方法中,考虑由于内存泄漏而使RAM使用可能较高,这导致迟缓的情况。在示例中,应用请求并且获取用于应用110的8线程,并且由处理的线程进行的并行RAM存取使执行减慢。这导致电子设备100的低劣的性能。
图10B图示出根据如在本文公开的实施例的其中基于用于应用110的线程的产生来避免存储器120的迟缓的示例。在所提出的方法中,应用线程控制器150接收预测针对应用110将产生的线程的数量的请求。此外,应用线程控制器150测量当前CPU负载、当前RAM使用和电子设备100中的激活的核的数量中的至少一个。此外,应用线程控制器150基于当前CPU负载、当前RAM使用和电子设备100中的激活的核的数量中的至少一个以及来线程计数来预测针对应用将产生的线程的数量,使得应用线程控制器150建议较少的线程(例如,一个线程),使得处理被划分为较少的部分,并且用于应用进程的并行RAM接入的需求被降低,因此设备迟缓被减少。
图11A和图11B图示出根据如在本文公开的实施例的其中用于训练预测针对应用110将产生的线程的最优数量的机器学习模型的各种操作的示例图示。
如在图11A中所示,各种操作用于训练可以预测针对应用110将产生的线程的最优数量使得应用110的运行时被最小化的机器学习模型。第一步骤是训练回归模型的集合,每个回归模型能可以测对于给定数量的线程应用110所花费的运行时。可以对于不同数量的线程并且对于包括但不限于存储器使用、激活的核的数量、CPU负载等的各种系统条件通过在硬件(例如,应用线程控制器150)上运行应用110若干次来收集训练数据。可以记录关于每个运行应用110花费的时间。此后,基于由应用110使用的线程的数量,将训练数据划分为互斥的子集。根据每个子集,回归模型被训练为针对线程的相对应的数量预测应用110的运行时。对于给定系统状态,通过使用每个回归模型以针对每个线程来预测用于应用的运行时并且然后选择预测最小运行时的回归模型来决定将被产生的线程的最优数量。该整个模型在图11A中被命名为模型-1。
图11B描述下述模型-2:其可以直接地从系统状态预测将产生的线程的数量,而不对于每个线程预测运行时并且然后获得最小运行时。模型-2可以被设计为分类器,该分类器将系统状态分类到之一中,其中基于用于给定系统状态的线程的最优数量来定义类。为了训练此类分类器,需要通过用于每个训练样本的最优线程来标记训练数据。如图11A中所示,模型-1用于标记训练数据。模型-1基本上预测用于每个训练/测试样本的线程的最优数量并且预测的线程的最优数量用于标记训练/测试数据。诸如支持向量机(SVM)、神经网络和判定树之类的分类器能够被用于模型-2。
可以通过在至少一个硬件设备上运行的并且执行网络管理功能以控制元件的至少一个软件程序来实施在本文公开的实施例。
尽管已经就各个实施例描述了本公开,但可以向本领域技术人员建议各种改变和修改。本公开旨在包括落入所附权利要求的范围内的这样的改变和修改。
Claims (12)
1.一种用于预测用于电子设备中的应用的线程的最优数量的方法,包括:
由应用线程控制器从所述应用实时地接收预测将产生的线程的数量的请求;
由所述应用线程控制器响应于从所述应用接收到的请求来测量所述电子设备的当前状态,其中,所述电子设备的当前状态指示当前CPU负载、当前RAM使用、当前温度、当前存储器状态、所述电子设备中的激活的核的数量以及当前电池条件中的至少一个;
由所述应用线程控制器基于调度器行为模型和所述电子设备的当前状态来预测针对所述应用将产生的线程的数量,其中,所述调度器行为模型是用于预测针对所述应用将产生的线程的最优数量的机器学习模型;以及
由所述应用线程控制器基于所述预测来推荐将由所述应用产生的线程的数量,
其中,所述调度器行为模型包括多个回归模型和用于将所述电子设备的当前状态分类为类别之一的分类器,所述多个回归模型中的每个用于基于电子设备的当前状态预测针对给定数量的线程的、与所述应用相关的运行时间,对应于所述多个回归模型中的预测最小运行时间的回归模型的线程的数量被确定为针对所述应用的最优数量。
2.根据权利要求1所述的方法,其中,所述调度器行为模型包括与一个或多个设备状态相对应的多个调度器行为配置、与所述多个调度器行为配置相对应的所述应用的运行时以及与所述多个调度器行为配置相对应的所产生的线程计数。
3.根据权利要求1所述的方法,其中,由所述应用线程控制器基于所述调度器行为模型和所述电子设备的当前状态来预测针对所述应用将产生的线程的数量包括:
识别用于所述电子设备的当前状态的多个调度器行为配置;
从所述多个调度器行为配置中选择调度器行为配置,其中,所选择的调度器行为配置导致针对所述电子设备的当前状态的应用的最小运行时;以及
通过选择与所选择的调度器行为配置相对应的线程计数来预测针对所述应用将产生的线程的数量。
4.根据权利要求3所述的方法,其中,由所述应用线程控制器针对所述电子设备的各种状态动态地学习所述多个调度器行为配置,其中,每个调度器行为配置指示所述电子设备的状态、所述应用在所述电子设备的状态花费的时间以及在所述电子设备的状态产生的线程计数。
5.根据权利要求1所述的方法,进一步包括:
训练机器学习模型,包括:
基于由所述应用使用的线程的数量来将训练数据划分到互斥的子集中,以及
训练所述多个回归模型中的每个以预测针对每个线程的所述应用的运行时。
6.根据权利要求5所述的方法,其中,所述训练数据包括存储器使用、激活的核的数量或CPU负载中的至少一个。
7.一种用于预测用于应用的线程的最优数量的电子设备,包括:
存储器,包括应用;
处理器;和
应用线程控制器,耦合到所述存储器和所述处理器,其中,所述应用线程控制器被配置为:
从所述应用实时地接收预测将产生的线程的数量的请求,
响应于从所述应用接收到的请求来测量所述电子设备的当前状态,其中,所述电子设备的当前状态指示当前CPU负载、当前RAM使用、当前温度、当前存储器状态、所述电子设备中的激活的核的数量以及当前电池条件中的至少一个,
基于调度器行为模型和所述电子设备的当前状态来预测针对所述应用将产生的线程的数量,其中,所述调度器行为模型是用于预测针对所述应用将产生的线程的最优数量的机器学习模型,以及
基于所述预测来推荐将由所述应用产生的线程的数量,
其中,所述调度器行为模型包括多个回归模型和用于将所述电子设备的当前状态分类为类别之一的分类器,所述多个回归模型中的每个用于基于电子设备的当前状态预测针对给定数量的线程的、与所述应用相关的运行时间,对应于所述多个回归模型中的预测最小运行时间的回归模型的线程的数量被确定为针对所述应用的最优数量。
8.根据权利要求7所述的电子设备,其中,所述调度器行为模型包括与一个或多个设备状态相对应的多个调度器行为配置、与所述多个调度器行为配置相对应的所述应用的运行时以及与所述多个调度器行为配置相对应的所产生的线程计数。
9.根据权利要求7所述的电子设备,其中,基于所述调度器行为模型和所述电子设备的当前状态来预测针对所述应用将产生的线程的数量包括:
识别用于所述电子设备的当前状态的多个调度器行为配置;
从所述多个调度器行为配置中选择调度器行为配置,其中,所选择的调度器行为配置导致针对所述电子设备的当前状态的应用的最小运行时;以及
通过选择与所选择的调度器行为配置相对应的线程计数来预测针对所述应用将产生的线程的数量。
10.根据权利要求9所述的电子设备,其中,由所述应用线程控制器针对所述电子设备的各种状态动态地学习所述多个调度器行为配置,其中,每个调度器行为配置指示所述电子设备的状态、所述应用在所述电子设备的状态花费的时间以及在所述电子设备的状态产生的线程计数。
11.根据权利要求7所述的电子设备,其中,所述应用线程控制器被进一步配置为:
训练机器学习模型,包括:
基于由所述应用使用的线程的数量来将训练数据划分到互斥的子集中,以及
训练所述多个回归模型中的每个以预测针对每个线程的用于所述应用的运行时。
12.根据权利要求11所述的电子设备,其中,所述训练数据包括存储器使用、激活的核的数量或CPU负载中的至少一个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201741046612 | 2017-12-26 | ||
IN201741046612 | 2017-12-26 | ||
PCT/KR2018/015775 WO2019132330A1 (en) | 2017-12-26 | 2018-12-12 | Method and system for predicting optimal number of threads for application running on electronic device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111542808A CN111542808A (zh) | 2020-08-14 |
CN111542808B true CN111542808B (zh) | 2024-03-22 |
Family
ID=66950311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880081436.4A Active CN111542808B (zh) | 2017-12-26 | 2018-12-12 | 预测电子设备上运行应用的线程的最优数量的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11347557B2 (zh) |
EP (1) | EP3676704A4 (zh) |
CN (1) | CN111542808B (zh) |
WO (1) | WO2019132330A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324387A (zh) * | 2020-01-20 | 2020-06-23 | 北京无限光场科技有限公司 | 应用任务的控制方法、装置、终端及系统 |
KR102649071B1 (ko) * | 2020-08-21 | 2024-03-19 | 주식회사 딥엑스 | 프루닝된 인공신경망 모델을 구동하도록 구성된 신경망 프로세싱 유닛 |
CN114519002A (zh) * | 2022-01-07 | 2022-05-20 | 南京航空航天大学 | 评估cpu多线程环境对深度学习模型训练差异影响的测试方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101091164A (zh) * | 2004-05-20 | 2007-12-19 | Bea系统公司 | 用于具有自调整线程模型的应用服务器的系统和方法 |
WO2011025720A1 (en) * | 2009-08-28 | 2011-03-03 | Advanced Micro Devices, Inc. | Optimized thread scheduling via hardware performance monitoring |
CN103294550A (zh) * | 2013-05-29 | 2013-09-11 | 中国科学院计算技术研究所 | 一种异构多核线程调度方法、系统及异构多核处理器 |
CN104657219A (zh) * | 2015-02-27 | 2015-05-27 | 西安交通大学 | 一种用于异构众核系统下的应用程序线程数动态调整方法 |
CN106716365A (zh) * | 2014-09-26 | 2017-05-24 | 微软技术许可有限责任公司 | 异构线程调度 |
CN107209548A (zh) * | 2015-02-13 | 2017-09-26 | 英特尔公司 | 在多核处理器中执行功率管理 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182109B1 (en) * | 1996-03-08 | 2001-01-30 | International Business Machines Corporation | Dynamic execution unit management for high performance user level network server system |
US20020046230A1 (en) * | 1998-04-29 | 2002-04-18 | Daniel J. Dieterich | Method for scheduling thread execution on a limited number of operating system threads |
US6182210B1 (en) * | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6477561B1 (en) * | 1998-06-11 | 2002-11-05 | Microsoft Corporation | Thread optimization |
US7137117B2 (en) * | 2000-06-02 | 2006-11-14 | Microsoft Corporation | Dynamically variable idle time thread scheduling |
US7363626B2 (en) * | 2003-03-24 | 2008-04-22 | Sun Microsystems, Inc. | Thread level application partitioning |
US7363369B2 (en) * | 2003-10-16 | 2008-04-22 | International Business Machines Corporation | Monitoring thread usage to dynamically control a thread pool |
US7681196B2 (en) * | 2004-11-18 | 2010-03-16 | Oracle International Corporation | Providing optimal number of threads to applications performing multi-tasking using threads |
US8413151B1 (en) * | 2007-12-19 | 2013-04-02 | Nvidia Corporation | Selective thread spawning within a multi-threaded processing system |
US8219999B2 (en) * | 2008-07-31 | 2012-07-10 | International Business Machines Corporation | System and method for determining a number of threads to maximize utilization of a system |
US8954977B2 (en) * | 2008-12-09 | 2015-02-10 | Intel Corporation | Software-based thread remapping for power savings |
US8881157B2 (en) * | 2009-09-11 | 2014-11-04 | Empire Technology Development Llc | Allocating threads to cores based on threads falling behind thread completion target deadline |
US9594599B1 (en) * | 2009-10-14 | 2017-03-14 | Nvidia Corporation | Method and system for distributing work batches to processing units based on a number of enabled streaming multiprocessors |
KR20110089649A (ko) * | 2010-02-01 | 2011-08-09 | 삼성전자주식회사 | 병렬 연산 처리 방법 및 장치 |
JP5772948B2 (ja) * | 2011-03-17 | 2015-09-02 | 富士通株式会社 | システムおよびスケジューリング方法 |
US9043788B2 (en) * | 2012-08-10 | 2015-05-26 | Concurix Corporation | Experiment manager for manycore systems |
US9563474B2 (en) * | 2013-06-13 | 2017-02-07 | Wipro Limited | Methods for managing threads within an application and devices thereof |
US9342374B2 (en) * | 2013-06-28 | 2016-05-17 | Dell Products, L.P. | Method of scheduling threads for execution on multiple processors within an information handling system |
US20160077871A1 (en) * | 2014-09-17 | 2016-03-17 | Advanced Micro Devices, Inc. | Predictive management of heterogeneous processing systems |
KR102384345B1 (ko) * | 2015-05-15 | 2022-04-19 | 삼성전자 주식회사 | 스레드를 실행하는 방법, 프로세서 및 기록매체 |
US10146583B2 (en) * | 2016-08-11 | 2018-12-04 | Samsung Electronics Co., Ltd. | System and method for dynamically managing compute and I/O resources in data processing systems |
US10871989B2 (en) * | 2018-10-18 | 2020-12-22 | Oracle International Corporation | Selecting threads for concurrent processing of data |
-
2018
- 2018-12-12 WO PCT/KR2018/015775 patent/WO2019132330A1/en unknown
- 2018-12-12 CN CN201880081436.4A patent/CN111542808B/zh active Active
- 2018-12-12 EP EP18894561.2A patent/EP3676704A4/en active Pending
- 2018-12-19 US US16/225,595 patent/US11347557B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101091164A (zh) * | 2004-05-20 | 2007-12-19 | Bea系统公司 | 用于具有自调整线程模型的应用服务器的系统和方法 |
WO2011025720A1 (en) * | 2009-08-28 | 2011-03-03 | Advanced Micro Devices, Inc. | Optimized thread scheduling via hardware performance monitoring |
CN103294550A (zh) * | 2013-05-29 | 2013-09-11 | 中国科学院计算技术研究所 | 一种异构多核线程调度方法、系统及异构多核处理器 |
CN106716365A (zh) * | 2014-09-26 | 2017-05-24 | 微软技术许可有限责任公司 | 异构线程调度 |
CN107209548A (zh) * | 2015-02-13 | 2017-09-26 | 英特尔公司 | 在多核处理器中执行功率管理 |
CN104657219A (zh) * | 2015-02-27 | 2015-05-27 | 西安交通大学 | 一种用于异构众核系统下的应用程序线程数动态调整方法 |
Non-Patent Citations (1)
Title |
---|
Automatic performance prediction of multithreaded programs: a simulation approach;TARVO;Automated Software Engineering;第25卷;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111542808A (zh) | 2020-08-14 |
WO2019132330A1 (en) | 2019-07-04 |
EP3676704A4 (en) | 2020-09-30 |
EP3676704A1 (en) | 2020-07-08 |
US20190196874A1 (en) | 2019-06-27 |
US11347557B2 (en) | 2022-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9952905B2 (en) | Methods and systems to identify and migrate threads among system nodes based on system performance metrics | |
Yadwadkar et al. | Wrangler: Predictable and faster jobs using fewer resources | |
KR102671425B1 (ko) | 프로세서 코어 상의 작업 배치를 결정하기 위한 시스템, 방법 및 디바이스 | |
TWI599960B (zh) | 在多核心處理器中執行電源管理 | |
KR102506605B1 (ko) | 고성능 ssd들을 사용하여 롱 테일 레이턴시를 감소시키기 위한 랙-레벨의 스케줄링 | |
CN111542808B (zh) | 预测电子设备上运行应用的线程的最优数量的方法和系统 | |
TWI628539B (zh) | 在多核心處理器中執行電源管理 | |
US8595743B2 (en) | Network aware process scheduling | |
US9229779B2 (en) | Parallelizing heterogeneous network communications in smart devices based on selection of task allocation strategy | |
US20180052711A1 (en) | Method and system for scheduling video analysis tasks | |
US9396028B2 (en) | Scheduling workloads and making provision decisions of computer resources in a computing environment | |
CN110389816B (zh) | 用于资源调度的方法、装置以及计算机可读介质 | |
WO2017067586A1 (en) | Method and system for code offloading in mobile computing | |
US9424105B2 (en) | Preempting tasks at a preemption point of a kernel service routine based on current execution mode | |
US11831410B2 (en) | Intelligent serverless function scaling | |
US11422857B2 (en) | Multi-level scheduling | |
US20210089296A1 (en) | Firmware boot task distribution to enable low latency boot performance | |
US11507425B2 (en) | Compute instance provisioning based on usage of physical and virtual components | |
US9229716B2 (en) | Time-based task priority boost management using boost register values | |
CN115658278B (zh) | 一种支持高并发协议交互的微任务调度机 | |
US20220222122A1 (en) | Model-based resource allocation for an information handling system | |
US11972242B2 (en) | Runtime environment optimizer for JVM-style languages | |
US20230350722A1 (en) | Apparatuses and methods for determining an interdependency between resources of a computing system | |
US11343134B1 (en) | System and method for mitigating analytics loads between hardware devices | |
US20240111596A1 (en) | Quality-of-Service Partition Configuration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |