CN111831409B - 线程调度方法、装置、存储介质及电子设备 - Google Patents

线程调度方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN111831409B
CN111831409B CN202010627014.1A CN202010627014A CN111831409B CN 111831409 B CN111831409 B CN 111831409B CN 202010627014 A CN202010627014 A CN 202010627014A CN 111831409 B CN111831409 B CN 111831409B
Authority
CN
China
Prior art keywords
thread
processor unit
threads
type
migrated
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
Application number
CN202010627014.1A
Other languages
English (en)
Other versions
CN111831409A (zh
Inventor
谢柳杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202010627014.1A priority Critical patent/CN111831409B/zh
Publication of CN111831409A publication Critical patent/CN111831409A/zh
Application granted granted Critical
Publication of CN111831409B publication Critical patent/CN111831409B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例公开了一种线程调度方法、装置、存储介质及电子设备,其中,本申请实施例确定当前处理器单元所在调度域的不均衡负载值;当不均衡负载值大于预设阈值时,从调度域中确定出负载值最大的目标处理器单元;确定出待迁移线程,并判断待迁移线程是否为第一类线程;当待迁移线程为第一类线程时,统计迁移后第一运行队列中第一类线程的第一数量,以及迁移后当前处理器单元的第二运行队列中第一类线程的第二数量;当第一数量不小于第二数量,将待迁移线程由目标处理器单元迁移至当前处理器单元,以使调度域内各处理器单元上第一类线程的数量趋于均衡,进而提高用户交互事件中任务的执行效率,减少卡顿现象。

Description

线程调度方法、装置、存储介质及电子设备
技术领域
本申请涉及电子设备技术领域,具体涉及一种线程调度方法、装置、存储介质及电子设备。
背景技术
随着技术的发展,电子设备中安装的各类应用程序越来越多,例如视频类应用、游戏类应用以及即时通讯类应用等。这使得电子设备经常需要在前台和后台运行很多个应用程序,容易在用户交互场景中出现卡顿现象。
发明内容
本申请实施例提供一种线程调度方法、装置、存储介质及电子设备,能够减少系统卡顿。
第一方面,本申请实施例提供一种线程调度方法,包括:
确定当前处理器单元所在调度域的不均衡负载值;
当所述不均衡负载值大于预设阈值时,从所述调度域中确定出负载值最大的目标处理器单元;
从所述目标处理器单元的第一运行队列中确定出待迁移线程,并判断所述待迁移线程是否为第一类线程,其中,所述第一类线程为执行用户交互事件中相关任务的线程;
当所述待迁移线程为第一类线程时,统计迁移后所述第一运行队列中第一类线程的第一数量,以及迁移后所述当前处理器单元的第二运行队列中第一类线程的第二数量;
当所述第一数量不小于所述第二数量,或者根据所述第一数量和所述第二数量判定迁移后的所述当前处理器单元和所述目标处理器单元上的第一类线程的数量处于均衡时,将所述待迁移线程由所述目标处理器单元迁移至所述当前处理器单元。
第二方面,本申请实施例还提供一种线程调度装置,包括:
负载检测模块,用于确定当前处理器单元所在调度域的不均衡负载值;
目标选择模块,用于当所述不均衡负载值大于预设阈值时,从所述调度域中确定出负载值最大的目标处理器单元;
线程检测模块,用于从所述目标处理器单元的第一运行队列中确定出待迁移线程,并判断所述待迁移线程是否为第一类线程,其中,所述第一类线程为执行用户交互事件中相关任务的线程;
线程数统计模块,用于当所述待迁移线程为第一类线程时,统计迁移后所述第一运行队列中第一类线程的第一数量,以及迁移后所述当前处理器单元的第二运行队列中第一类线程的第二数量;
线程迁移模块,用于当所述第一数量不小于所述第二数量,或者根据所述第一数量和所述第二数量判定迁移后的所述当前处理器单元和所述目标处理器单元上的第一类线程的数量处于均衡时,将所述待迁移线程由所述目标处理器单元迁移至所述当前处理器单元。
第三方面,本申请实施例还提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本申请任一实施例提供的线程调度方法。
第四方面,本申请实施例还提供一种电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行如本申请任一实施例提供的线程调度方法。
本申请实施例提供的技术方案,确定当前处理器单元所在调度域的不均衡负载值;当不均衡负载值大于预设阈值时,从调度域中确定出负载值最大的目标处理器单元;从目标处理器单元的第一运行队列中确定出待迁移线程,并判断待迁移线程是否为第一类线程,其中,第一类线程为执行用户交互事件中相关任务的线程;当待迁移线程为第一类线程时,统计迁移后第一运行队列中第一类线程的第一数量,以及当前处理器单元的第二运行队列中第一类线程的第二数量;当第一数量不小于第二数量,或者根据第一数量和第二数量判定迁移后的当前处理器单元和目标处理器单元上的第一类线程的数量处于均衡时,将待迁移线程由目标处理器单元迁移至当前处理器单元,也就是说,如果迁移后的当前处理器单元上运行的第一类线程的数量不多于迁移后的目标处理器单元上运行的第一类线程的数量时,或者根据第一数量和第二数量判定迁移后的当前处理器单元和目标处理器单元上的第一类线程的数量处于均衡时,才会迁移该第一类线程,可以避免迁移后当前处理器单元上挂载过多的第一类线程而导致调度域内各处理器单元上第一类线程的数量不均衡,进而提高用户交互事件中任务的执行效率,减少卡顿现象。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的线程调度方法的流程示意图。
图2为本申请实施例提供的线程调度方法中调度域层级示意图。
图3为本申请实施例提供的线程调度装置的结构示意图。
图4为本申请实施例提供的电子设备的第一种结构示意图。
图5为本申请实施例提供的电子设备的第二种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请的保护范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例提供一种线程调度方法,该线程调度方法的执行主体可以是本申请实施例提供的线程调度装置,或者集成了该线程调度装置的电子设备,其中该线程调度装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑、笔记本电脑、或者台式电脑等设备。
请参阅图1,图1为本申请实施例提供的线程调度方法的流程示意图。本申请实施例提供的线程调度方法的具体流程可以如下:
在101中,确定当前处理器单元所在调度域的不均衡负载值。
在102中,当不均衡负载值大于预设阈值时,从调度域中确定出负载值最大的目标处理器单元。
android系统是当前如智能手机、平板电脑等电子设备最主流的移动操作系统之一,其底层实现为linux。以智能手机为例,智能手机上运行的各个线程,需要遵循linux内核的调度规则。线程是运行在CPU上的,而CPU频率由其上面运行线程的整体负载决定,频率越高,执行速度越快。
在ARM标准的架构中,CPU核心的算力是存在差异的,一般会将算力较强的核心称为大核,算力较弱的核心称为小核。比如,对于八核心处理器来说,一般具有四个大核,四个小核。需要说明的是,上述核心数量仅为举例说明,本申请实施例对于处理器的核心数量并不做具体限制。
Linux将所有同一级别的CPU归为一个“调度组”,然后将同一级别的所有的调度组组成一个“调度域”。请参阅图2,图2为本申请实施例提供的线程调度方法中调度域层级示意图。以具有四个大核、四个小核的八核CPU为例,其中,四个小核CPU0、CPU1、CPU2、CPU3构成一个调度域,四个大核CPU4、CPU5、CPU6、CPU7构成一个调度域,这两个调度域又构成最上层的调度域。在四个小核构成一个调度域内,一个小核作为一个调度组,在四个大核构成一个调度域内,一个大核作为一个调度组,对于顶层调度域来说,4个小核作为一个调度组,4个大核作为一个调度组。
本申请实施例中,将一个处理器核心当作一个独立的处理器单元。
考虑到存储层次对迁移开销的影响,本申请负载均衡方法在一个调度域内的调度组之间进行,并且从最底层的调度域向上层调度域做均衡。
本申请实施例将进行负载均衡处理的处理器单元作为当前处理器单元。其中,负载均衡的触发方式可以有多种,比如,每个CPU核心都会有tick触发函数,每次tick到来就执行一些常规的任务,例如更新下负载情况。当CPU核心的tick到来时,检查当前的时间是否超过下次均衡的时间,超过就通过软中断触发一次均衡。或者,当CPU核心进入到idle(空闲)状态时,会触发负载均衡,从其他繁忙的CPU核心上拉取一些任务过来执行。
在触发负载均衡后,确定当前处理器单元所在调度域的不均衡负载值,当检测到当前处理器单元的不均衡负载值大于预设阈值,比如,当前处理器单元的不均衡负载值大于0,则从该调度域内确定出负载值最大的目标处理器单元。
比如,在一实施例中,“确定当前处理器单元所在调度域的不均衡负载值”包括:
获取当前处理器单元所在调度域内每一调度组的负载值;
根据每一调度组的负载值计算所述调度域的第一平均负载值,并确定所述调度域内的最繁忙的调度组的第二平均负载值;
将所述第二平均负载值与所述第一平均负载值之间的差值,作为所述当前处理器单元所在调度域的不均衡负载值。
该实施例中,在一个处理器单元触发负载均衡时,将该处理器单元作为当前处理器单元,获取该当前处理器单元所在的调度域内每一调度组的负载值,其中,将调度组内各处理器单元的负载的平均值作为调度组的负载值。计算调度域内各调度组的平均负载值,记为第一平均负载值。根据各调度组的负载值确定出该调度域内最繁忙的调度组,计算该最繁忙的调度组内各处理器单元的平均负载值,记为第二平均负载值,计算第一平均负载值与第二平均负载值之间的差值,将该差值作为该调度域的不均衡负载值。其中,平均负载值最大的调度组即为最繁忙调度组。
在对四个小核或者四个大核构成的调度域内的线程进行调度时,由于一个调度组内只有一个处理器单元,则在计算调度组的负载值时,直接将该调度组内的一个处理器单元的负载值作为该调度组的负载值。
以四个小核CPU0、CPU1、CPU2、CPU3构成的调度域为例,假设CPU0的负载值为2,CPU1的负载值为2,CPU2的负载值为2,CPU3的负载值为6,其中,假设CPU0为当前处理器单元,根据这四个处理器单元的负载值计算出该调度域的平均负载值为3,即第一平均负载值为3,最繁忙的调度组为CPU3,其负载值为6,即第二平均负载值为6,则可以计算得到该调度域的不均衡负载值为6-3=3,假设预设阈值为0,则该调度域的不均衡负载值大于预设阈值,可以判定需要对最繁忙的处理器单元上的线程进行迁核处理,此时,选择调度域内负载最大的处理器单元作为目标处理器单元,即CPU3,从CPU3上选择线程迁移到CPU0。
此处需要说明的是,上述例子中处理器单元的具体负载值是为了便于读者理解本申请的方案,在举例时进行了简化处理,在实际应用中,以实际计算得到的负载值为准。
在103中,从目标处理器单元的第一运行队列中确定出待迁移线程,并判断待迁移线程是否为第一类线程,其中,第一类线程为执行用户交互事件中相关任务的线程。
在104中,当待迁移线程为第一类线程时,统计迁移后第一运行队列中第一类线程的第一数量,以及迁移后当前处理器单元的第二运行队列中第一类线程的第二数量。
本申请实施例中会对影响用户交互场景的卡顿的线程进行识别并标记。例如,如果一些线程是用于执行用户交互事件中相关任务,则将该线程标记为ux(userexperience,用户体验)线程。
其中,识别并标记ux线程的方式如下:
系统中的线程有系统类线程和应用类线程之分,应用类线程是指某个应用进程创建的只影响到该应用运行的线程,比如某应用进程创建的UI线程、Render线程、UnityMain线程等,而系统类线程为是指操作系统层面的为整个系统的运行服务的线程,比如Surfaceflinger线程、SystemUI线程等。ux线程包括一些系统类线程和一些应用类线程。
其中,电子设备的系统架构至少包括应用框架(framework)层和内核(kernel)层,本申请实施例,从框架层和内核层的角度对ux线程进行识别和标记,例如,应用框架层为一些直接执行用户交互事件中相关任务的线程添加预设标签,以将这些线程标记为静态ux线程,内核层将一些间接地影响到用户交互事件中相关任务执行的线程标记为动态ux线程。
例如,在一实施例中,该方法还包括:确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程。
比如,在一实施例中,“确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程”包括:当检测到有进程切换至前台运行时,确定前台进程;从前台进程的线程中识别出用于执行用户交互事件中相关任务的第一预设线程,为第一预设线程添加预设标签,以将线程标记为第一类线程。
其中,第一预设线程一般是应用级线程,这些线程可以是通过对实际的卡顿场景进行分析来确定。比如,在测试中,如果某一用户交互场景下发生了应用卡顿,通过对该场景分析发现卡顿现象是某个线程处理任务太慢导致的,则可以认为该线程是用于执行用户交互事件中相关任务的,该线程的运行与用户体验紧密相关,可以将该线程作为第一预设线程。
基于此,可以通过对各种可能的卡顿场景进行测试,记录这些导致卡顿出现的线程。电子设备中存储这些第一预设线程的相关信息,当进程切换到前台运行时,将该进程下的属于预先记录的第一预设线程的线程都标记为ux线程。
比如,第一预设线程包括进程运行时创建的一些用于直接执行用户交互事件的相关任务的线程,例如,UI(user interface,用户界面)线程,Render(渲染)线程,GL线程,用户输入事件的分发线程,用户输入事件的检测线程等。这些线程是否能够流畅运行决定着是否会在用户与该进程的交互界面中产生用户可感知的卡顿。
比如,用户使用聊天软件与某一好友聊天,用户在对话框输入文字,电子设备通过服务器将用户输入的文字发送至该好友的电子设备。在这次交互事件中,需要UI线程、Render线程、用户输入事件的分发线程、用户输入事件的检测线程等线程共同工作,以完成本次用户交互事件,其中,每一个线程的运行都需要系统为其分配资源。因此,在检测到该聊天软件在前台运行时,识别出这些线程,将其标记为ux线程。
可以理解的是,对于电子设备来说,存储的第一预设线程的相关信息并不是不可修改的,当进行系统升级时,可以对第一预设线程的相关信息进行更新。
在另一实施例中,确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程,还包括:当检测到有第二预设线程创建时,将创建的第二预设线程标记为第一类线程,其中,第二预设线程为系统级线程。
由于在执行用户交互事件的过程中,除了应用级线程之外,可能还涉及到一些系统级的线程来完成任务,系统框架层也需要将这些系统级线程标记为ux线程。一般这些线程在系统启动时就会创建,因此,可以在检测到系统启动时,识别出这些线程并进行标记,比如,Surfaceflinger线程、系统动画线程等。或者,在系统运行过程中,如果检测到有新的系统类线程创建并用来执行用户交互事件中相关任务,系统框架层也将这些线程标记为ux线程。比如,SystemUI线程。其中,第二预设线程也可以通过对实际的卡顿场景进行分析来确定。比如,在测试中,如果某一用户交互场景下发生了应用卡顿,通过对该场景分析发现卡顿现象是某个系统级线程处理任务太慢导致的,则可以认为该系统级线程是用于执行用户交互事件中相关任务的,该系统级线程的运行与用户体验紧密相关,可以将该系统级线程作为第二预设线程。电子设备中存储这些第二预设线程的相关信息,如果检测到系统创建了这些线程,则将其标记为ux线程。
其中,Linux使用task_struct结构体描述和记录线程,每个线程都有对应的task_struct结构体。task_struct中记录了线程的名称、标识符、状态、优先级、内存指针、上下文数据等属性信息。因此,应用框架层可以在task_struct结构体中增加ux flag成员,以将前台进程的UI线程、Render线程、GL线程等执行用户交互事件中相关任务的线程,通过标记uxflag位,使内核层能够识别该线程的任务属性。
需要说明的是,上述几种静态ux线程仅为举例说明,并不局限于此,只要是直接地执行用户交互事件中相关任务的线程,使得其运行情况直接地影响到用户体验的线程,都可以将其标记为静态ux线程。对于应用框架层来说,在检测到新创建的线程是用来执行用户交互事件,或者检测到某些常驻系统级线程是用以处理用户交互事件时,为这些线程添加ux标签,以将其标记为静态ux线程。
在另一实施例中,“从前台进程的线程中识别出用于执行用户交互事件中相关任务的第一预设线程,作为目标线程”还包括:在前台进程的运行过程中,当检测到有新线程创建时,确定新创建的线程是否用于执行用户交互事件中的相关任务;当新创建的线程用于执行用户交互事件中的相关任务时,将新创建的线程作为目标线程。
前台进程在运行过程中,如果有用户交互事件发生,除了上述第一预设线程之外,还可能会有一些临时创建的任务线程,这些任务线程的运行也会直接影响到是否会在用户与该进程的交互界面中产生用户可感知的卡顿。因此,应用框架层会将这些线程也标记为ux线程,以优化系统对该线程的资源分配。
其中,电子设备根据检测到的用户指令确定发生的用户交互事件。用户交互事件一般是指用户触发了某指令后,电子设备需要即时的对该指令进行响应,进行某种处理并将处理结果显示在界面上的情况。例如,用户使用电子设备观看视频、编辑短信、使用聊天软件、使用游戏软件、控制电子设备界面的切换、使用浏览浏览网页等,都属于用户交互事件。比如,用户使用聊天软件与某一好友聊天,用户在对话框输入文字,电子设备通过服务器将用户输入的文字发送至该好友的电子设备。在这个过程中,电子设备需要调度多个线程以完成本次用户交互事件,从该用户交互事件的开始到完成的整个过程中,进程创建的用来完成这次用户交互事件的线程都可以认为是与用户体验相关的线程。
在另一实施例中,为目标线程添加预设标签之后,该方法还包括:若前台进程为应用进程,则在检测到前台进程切换至后台运行时,删除第一预设线程的预设标签。当前台进程切换到后台运行时,该进程的运行情况已经与用户体验无关,其线程的重要程度也有所下降,因此,可以将该进程对应的第一预设线程的ux标记删除,将这些ux线程恢复为普通线程。
此外,对于那些在用户交互事件中临时创建的任务线程来说,在执行完对应的任务后就会被销毁,其自然会丢失掉ux标签。而对于系统级的第二预设线程来说,即使发生了进程的前后台切换,这些线程始终与用户体验相关,所以始终保有ux标签。
上述实施例介绍了静态ux线程的识别。还有一些线程虽然并没有直接地执行用户交互事件的相关任务,但是这些线程的运行情况也会影响到静态ux线程的运行情况,进而间接地影响到用户交互事件的相关任务的执行。也就是说,这些线程并不是总是与用户体验相关,但是这些线程在执行过程的某段时间内,可能通过资源约束与静态ux线程产生关联,因此,在一些实施例中,为了进一步地减少交互场景下的卡顿现象,将这些与静态ux线程之间有约束关系的线程也标记为ux线程。而一旦这种约束关系结束,就会将该线程恢复至非ux线程。本申请实施例中将这类线程定义为动态ux线程。其中,具体的约束关系包括但不限于进程间通信、线程间通信或者持有临界区资源等。比如,静态ux线程通过进程间通信请求的普通线程,静态ux线程通过某种线程间通信方式请求的普通线程,持有静态ux线程需要的等待信号量、读写信号量、互斥锁等临界区资源的普通线程等,本申请实施例中将这类线程标记为动态ux线程。
基于此,在一些实施例中,“确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程”还包括:对具有预设标签的线程的运行状态进行检测;当检测到有具有预设标签的线程进入阻塞状态,则确定与进入阻塞状态的线程之间有约束关系的关联线程;为关联线程添加预设标签,以将关联线程标记为第一类线程。
在一些实施例中,为关联线程添加预设标签之后,该方法还包括:当检测到约束关系解除时,删除关联线程的预设标签。
其中,关于线程的阻塞状态,在内核层面一般会区分为D状态(Uninterruptablesleep状态,不可中断的睡眠状态)和S状态(interruptable sleep状态,可中断的睡眠状态),比如,线程发起IO请求但得不到满足,就进入D状态;线程发起同步Binder请求,就会进入S状态。线程进入这些状态一般都是因为这些都是线程任务执行途中因为某些原因或者逻辑,需要主动或者被动地放弃CPU资源。
该实施例中,内核层对静态ux线程的状态进行检测,当检测到ux线程进入到堵塞状态时,确定出与进入堵塞状态的ux线程之间具有约束关系的关联线程,如果这些关联线程没有及时分配到资源,比如处理器资源,而导致运行受阻,则由于关联线程的运行缓慢又会导致该ux线程长时间处于阻塞状态,因此,为了避免该ux线程长时间处于阻塞状态,内核层会将识别出的关联线程也标记为ux线程,以提高其处理效率,保证其及时执行,进而快速解除该ux线程的阻塞状态。
上文介绍了ux线程的识别与标记。对于运行队列中的线程,内核可以根据检测其是否携带有预设标签来判断该线程是否为ux线程,比如,若待迁移线程具有预设标签,则判定待迁移线程为第一类线程,若待迁移线程不具有预设标签,则判定待迁移线程不为第一类线程。
需要说明的是,本申请实施例中,将除ux线程之外的线程记为第二类线程。需要说明的是,这里的第一类线程和第二类线程中的“第一类”和“第二类”,仅仅是为了区分线程是否具有ux标签,而不是说将系统中的线程仅划分为这两种类别。
一般情况下,内核中的线程是有区分调度类的,内核中的线程最常见的是CFS(complete fair schedule,完全公平调度)调度类线程、RT(RealTime scheduler,实时调度)调度类线程。不同的调度类采用不同的调度机制,本申请的调度机制适用于CFS调度类线程。
目前的电子设备中,有较多CFS调度类线程为ux线程,从用户体验的角度来说,属于ux线程的CFS调度类线程比起其他普通CFS线程要重要的多,常规的负载均衡机制,出于调整负载考虑,将当前CPU核心上的ux线程迁移到某个目标CPU核心上,而该CPU运行队列已存在其它ux线程时,会造成过多ux线程挂载在同个运行队列的情况,从负载视角上看可能已经均衡了,但对同一个运行队列上的ux线程而言,由于它们优先级相当,数量的增加将会导致它们各自的调度延迟增加,在队列中等待被执行的时间延长,更易造成系统卡顿问题。
为了减少因为ux线程的调度而导致的系统卡顿,本申请实施例在按照负载均衡进行线程调度的同时,每个运行队列增加成员,以统计当前运行队列中挂载的ux线程个数。当负载均衡执行时,若迁移的是ux线程,则需要保证迁移后目标CPU核心的运行队列中ux线程的数量,与迁移后当前CPU核心的运行队列中ux线程的数量保持均衡或者趋向于均衡,否则该ux线程不进行迁移,以确保各个CPU核心上的ux线程的数量基本保持一致。具体如下:
在确定出目标处理器单元后,从目标处理器单元的第一运行队列中确定出待迁移线程,其中,第一运行独队列有对应的LRU(Least Recently Used,最近最少使用)链表,该链表的队首为最近一次运行的线程,队尾为最远一次运行的线程,将队尾的线程作为待迁移线程。
之后,检测该待迁移线程是否为ux线程。
如果该待迁移线程为ux线程,则要对目标处理器单元上运行的ux线程的数量,以及迁移后的当前处理器单元上运行的ux线程的数量进行分别统计,以评估:假设进行迁移的话,迁移之后调度域内各CPU核心上的ux线程的数量相对于迁移之前,是否趋向于基本一致。
在105中,当第一数量不小于第二数量,或者根据第一数量和第二数量判定迁移后的当前处理器单元和目标处理器单元上的第一类线程的数量处于均衡时,将待迁移线程由目标处理器单元迁移至当前处理器单元。
其中,在一实施例中,假设目标处理器单元上原本有8个ux线程,减去要迁移的那个ux线程,则有7个ux线程,即第一数量等于7,假设当前处理器单元上只有5个ux线程,加上要迁移的那个ux线程,则将有6个ux线程,即第一数量显然大于第二数量,并且,相对于迁移之前,迁移之后的目标处理器单元和当前处理器单元上ux线程的数量之差有所减少,趋向于负载均衡,则可以将待迁移的ux线程迁移到目标处理器单元上运行。
虽然迁移后的当前CPU核心上各ux线程的调度延迟有所延长,但是目标CPU核心上有更多的ux线程的调度延迟被缩短了,所以从整体上来说,ux线程的整体调度延迟是被缩短的,确保了各个CPU核心上的ux线程的数量趋向于基本一致。上述ux线程数量仅为便于读者理解方案而进行的举例说明,不造成对本申请实施例的限制。
或者,在另一实施例中,假设目标处理器单元上原本有5个ux线程,减去要迁移的那个ux线程,则有4个ux线程,即第一数量等于4,假设当前处理器单元上原本只有4个ux线程,加上要迁移的那个ux线程,则将有5个ux线程,这种情况下,虽然如果进行迁移的话,会导致第一数量小于第二数量,但是,对于ux线程来说,与迁移之前相比,即使进行迁移也不会破坏原本的负载均衡,也就是说,根据第一数量和第二数量可以判定迁移后的当前处理器单元和目标处理器单元处于负载均衡状态,此时,可以将待迁移线程由目标处理器单元迁移至当前处理器单元。其中,当第一数量小于第二数量,但是第一数量与第二数量的差值的绝对值不大于1时,判定迁移后的当前处理器单元和目标处理器单元上的第一类线程的数量处于均衡,此时仍然可以进行ux线程的迁移。
此外,可以理解的是,如果待迁移的线程不是ux线程,则将待迁移线程由目标处理器单元迁移至当前处理器单元。
并且,迁移完成后返回101,继续对当前处理器单元所在调度域的不均衡负载值检测,如此循环往复,直至该调度域的不均衡负载值不超过预设阈值。
具体实施时,本申请不受所描述的各个步骤的执行顺序的限制,在不产生冲突的情况下,某些步骤还可以采用其它顺序进行或者同时进行。
由上可知,本申请实施例提供的线程调度方法,确定当前处理器单元所在调度域的不均衡负载值;当不均衡负载值大于预设阈值时,从调度域中确定出负载值最大的目标处理器单元;从目标处理器单元的第一运行队列中确定出待迁移线程,并判断待迁移线程是否为第一类线程,其中,第一类线程为执行用户交互事件中相关任务的线程;当待迁移线程为第一类线程时,统计迁移后第一运行队列中第一类线程的第一数量,以及当前处理器单元的第二运行队列中第一类线程的第二数量;当第一数量不小于第二数量,或者根据第一数量和第二数量判定迁移后的当前处理器单元和目标处理器单元上的第一类线程的数量处于均衡时,将待迁移线程由目标处理器单元迁移至当前处理器单元,也就是说,如果迁移后的当前处理器单元上运行的第一类线程的数量不多于迁移后的目标处理器单元上运行的第一类线程的数量时,或者根据第一数量和第二数量判定迁移后的当前处理器单元和目标处理器单元上的第一类线程的数量处于均衡时,才会迁移该第一类线程,可以避免迁移后当前处理器单元上挂载过多的第一类线程而导致调度域内各处理器单元上第一类线程的数量不均衡,进而提高用户交互事件中任务的执行效率,减少卡顿现象。
在一实施例中还提供一种线程调度装置。请参阅图3,图3为本申请实施例提供的线程调度装置300的结构示意图。其中该线程调度装置300应用于电子设备,该线程调度装置300包括负载检测模块301、目标选择模块302、线程检测模块303、线程数统计模块304以及线程迁移模块305,如下:
负载检测模块301,用于确定当前处理器单元所在调度域的不均衡负载值;
目标选择模块302,用于当所述不均衡负载值大于预设阈值时,从所述调度域中确定出负载值最大的目标处理器单元;
线程检测模块303,用于从所述目标处理器单元的第一运行队列中确定出待迁移线程,并判断所述待迁移线程是否为第一类线程,其中,所述第一类线程为执行用户交互事件中相关任务的线程;
线程数统计模块304,用于当所述待迁移线程为第一类线程时,统计迁移后所述第一运行队列中第一类线程的第一数量,以及迁移后所述当前处理器单元的第二运行队列中第一类线程的第二数量;
线程迁移模块305,用于当所述第一数量不小于所述第二数量,或者根据所述第一数量和所述第二数量判定迁移后的所述当前处理器单元和所述目标处理器单元上的第一类线程的数量处于均衡时,将所述待迁移线程由所述目标处理器单元迁移至所述当前处理器单元。
在一些实施例中,负载检测模块301还用于:
获取当前处理器单元所在调度域内每一调度组的负载值;
根据每一调度组的负载值计算所述调度域的第一平均负载值,并确定所述调度域内的最繁忙的调度组的第二平均负载值;
将所述第二平均负载值与所述第一平均负载值之间的差值,作为所述当前处理器单元所在调度域的不均衡负载值。
在一些实施例中,线程检测模块303还用于:检测所述待迁移线程是否具有预设标签,其中,若所述待迁移线程具有所述预设标签,则判定所述待迁移线程为第一类线程,若所述待迁移线程不具有所述预设标签,则判定所述待迁移线程不为第一类线程。
在一些实施例中,线程迁移模块305还用于:当所述待迁移线程不为第一类线程时,将所述待迁移线程由所述目标处理器单元迁移至所述当前处理器单元;
所述将所述待迁移线程由所述目标处理器单元迁移至所述当前处理器单元之后,返回执行确定当前处理器单元所在调度域的不均衡负载值。
在一些实施例中,该线程调度装置还包括线程标记模块,该线程标记模块用于:确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程。
在一些实施例中,该线程标记模块还用于:当检测到有进程切换至前台运行时,确定前台进程;
从所述前台进程的线程中识别出用于执行用户交互事件中相关任务的第一预设线程,为所述第一预设线程添加预设标签,以将所述线程标记为第一类线程。
在一些实施例中,该线程标记模块还用于:当检测到有第二预设线程创建时,将创建的第二预设线程标记为第一类线程,其中,所述第二预设线程为系统级线程。
在一些实施例中,该线程标记模块还用于:
对所述第一类线程的运行状态进行检测;
当检测到有第一类线程进入阻塞状态,则确定与进入阻塞状态的第一类线程之间有约束关系的关联线程;
为所述关联线程添加预设标签,以将所述关联线程标记为所述第一类线程。
应当说明的是,本申请实施例提供的线程调度装置与上文实施例中的线程调度方法属于同一构思,通过该线程调度装置可以实现线程调度方法实施例中提供的任一方法,其具体实现过程详见线程调度方法实施例,此处不再赘述。
由上可知,本申请实施例提出的线程调度装置,确定当前处理器单元所在调度域的不均衡负载值;当不均衡负载值大于预设阈值时,从调度域中确定出负载值最大的目标处理器单元;从目标处理器单元的第一运行队列中确定出待迁移线程,并判断待迁移线程是否为第一类线程,其中,第一类线程为执行用户交互事件中相关任务的线程;当待迁移线程为第一类线程时,统计迁移后第一运行队列中第一类线程的第一数量,以及当前处理器单元的第二运行队列中第一类线程的第二数量;当第一数量不小于第二数量,或者根据第一数量和第二数量判定迁移后的当前处理器单元和目标处理器单元上的第一类线程的数量处于均衡时,将待迁移线程由目标处理器单元迁移至当前处理器单元,也就是说,如果迁移后的当前处理器单元上运行的第一类线程的数量不多于迁移后的目标处理器单元上运行的第一类线程的数量时,或者根据第一数量和第二数量判定迁移后的当前处理器单元和目标处理器单元上的第一类线程的数量处于均衡时,才会迁移该第一类线程,可以避免迁移后当前处理器单元上挂载过多的第一类线程而导致调度域内各处理器单元上第一类线程的数量不均衡,进而提高用户交互事件中任务的执行效率,减少卡顿现象。
本申请实施例还提供一种电子设备。所述电子设备可以是智能手机、平板电脑等设备。请参阅图4,图4为本申请实施例提供的电子设备的第一种结构示意图。电子设备400包括处理器401和存储器402。其中,处理器401与存储器402电性连接。
处理器401是电子设备400的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或调用存储在存储器402内的计算机程序,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
存储器402可用于存储计算机程序和数据。存储器402存储的计算机程序中包含有可在处理器中执行的指令。计算机程序可以组成各种功能模块。处理器401通过调用存储在存储器402的计算机程序,从而执行各种功能应用以及数据处理。
在本实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的计算机程序,从而实现各种功能:
确定当前处理器单元所在调度域的不均衡负载值;
当所述不均衡负载值大于预设阈值时,从所述调度域中确定出负载值最大的目标处理器单元;
从所述目标处理器单元的第一运行队列中确定出待迁移线程,并判断所述待迁移线程是否为第一类线程,其中,所述第一类线程为执行用户交互事件中相关任务的线程;
当所述待迁移线程为第一类线程时,统计迁移后所述第一运行队列中第一类线程的第一数量,以及迁移后所述当前处理器单元的第二运行队列中第一类线程的第二数量;
当所述第一数量不小于所述第二数量,或者根据所述第一数量和所述第二数量判定迁移后的所述当前处理器单元和所述目标处理器单元上的第一类线程的数量处于均衡时,将所述待迁移线程由所述目标处理器单元迁移至所述当前处理器单元。
在一些实施例中,请参阅图5,图5为本申请实施例提供的电子设备的第二种结构示意图。电子设备400还包括:射频电路403、显示屏404、控制电路405、输入单元406、音频电路407、传感器408以及电源409。其中,处理器401分别与射频电路403、显示屏404、控制电路405、输入单元406、音频电路407、传感器408以及电源409电性连接。
射频电路403用于收发射频信号,以通过无线通信与网络设备或其他电子设备进行通信。
显示屏404可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图像、文本、图标、视频和其任意组合来构成。
控制电路405与显示屏404电性连接,用于控制显示屏404显示信息。
输入单元406可用于接收输入的数字、字符信息或用户特征信息(例如指纹),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。其中,输入单元406可以包括指纹识别模组。
音频电路407可通过扬声器、传声器提供用户与电子设备之间的音频接口。其中,音频电路407包括麦克风。所述麦克风与所述处理器401电性连接。所述麦克风用于接收用户输入的语音信息。
传感器408用于采集外部环境信息。传感器408可以包括环境亮度传感器、加速度传感器、陀螺仪等传感器中的一种或多种。
电源409用于给电子设备400的各个部件供电。在一些实施例中,电源409可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
虽然图中未示出,电子设备400还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的计算机程序,从而实现各种功能:
确定当前处理器单元所在调度域的不均衡负载值;
当所述不均衡负载值大于预设阈值时,从所述调度域中确定出负载值最大的目标处理器单元;
从所述目标处理器单元的第一运行队列中确定出待迁移线程,并判断所述待迁移线程是否为第一类线程,其中,所述第一类线程为执行用户交互事件中相关任务的线程;
当所述待迁移线程为第一类线程时,统计迁移后所述第一运行队列中第一类线程的第一数量,以及迁移后所述当前处理器单元的第二运行队列中第一类线程的第二数量;
当所述第一数量不小于所述第二数量,或者根据所述第一数量和所述第二数量判定迁移后的所述当前处理器单元和所述目标处理器单元上的第一类线程的数量处于均衡时,将所述待迁移线程由所述目标处理器单元迁移至所述当前处理器单元。
由上可知,本申请实施例提供了一种电子设备,所述电子设备确定当前处理器单元所在调度域的不均衡负载值;当不均衡负载值大于预设阈值时,从调度域中确定出负载值最大的目标处理器单元;从目标处理器单元的第一运行队列中确定出待迁移线程,并判断待迁移线程是否为第一类线程,其中,第一类线程为执行用户交互事件中相关任务的线程;当待迁移线程为第一类线程时,统计迁移后第一运行队列中第一类线程的第一数量,以及当前处理器单元的第二运行队列中第一类线程的第二数量;当第一数量不小于第二数量,或者根据第一数量和第二数量判定迁移后的当前处理器单元和目标处理器单元上的第一类线程的数量处于均衡时,将待迁移线程由目标处理器单元迁移至当前处理器单元,也就是说,如果迁移后的当前处理器单元上运行的第一类线程的数量不多于迁移后的目标处理器单元上运行的第一类线程的数量时,或者根据第一数量和第二数量判定迁移后的当前处理器单元和目标处理器单元上的第一类线程的数量处于均衡时,才会迁移该第一类线程,可以避免迁移后当前处理器单元上挂载过多的第一类线程而导致调度域内各处理器单元上第一类线程的数量不均衡,进而提高用户交互事件中任务的执行效率,减少卡顿现象。
本申请实施例还提供一种存储介质,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,所述计算机执行上述任一实施例所述的线程调度方法。
需要说明的是,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过计算机程序来指令相关的硬件来完成,所述计算机程序可以存储于计算机可读存储介质中,所述存储介质可以包括但不限于:只读存储器(ROM,Read OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
此外,本申请中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或模块,而是某些实施例还包括没有列出的步骤或模块,或某些实施例还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。
以上对本申请实施例所提供的线程调度方法、装置、存储介质及电子设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (7)

1.一种线程调度方法,其特征在于,包括:
确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程,包括:当检测到有第二预设线程创建时,将创建的第二预设线程标记为第一类线程,其中,所述第二预设线程为系统级线程;对所述第一类线程的运行状态进行检测;当检测到有第一类线程进入阻塞状态,则确定与进入阻塞状态的第一类线程之间有约束关系的关联线程;为所述关联线程添加预设标签,以将所述关联线程标记为所述第一类线程;
确定当前处理器单元所在调度域的不均衡负载值,包括:获取当前处理器单元所在调度域内每一调度组的负载值;根据每一调度组的负载值计算所述调度域的第一平均负载值,并确定所述调度域内的最繁忙的调度组的第二平均负载值;将所述第二平均负载值与所述第一平均负载值之间的差值,作为所述当前处理器单元所在调度域的不均衡负载值;
当所述不均衡负载值大于预设阈值时,从所述调度域中确定出负载值最大的目标处理器单元;
将所述目标处理器单元的第一运行队列中位于LRU链表队尾的线程确定为待迁移线程,并判断所述待迁移线程是否为第一类线程;
当所述待迁移线程为第一类线程时,统计迁移后所述第一运行队列中第一类线程的第一数量,以及迁移后所述当前处理器单元的第二运行队列中第一类线程的第二数量;
当所述第一数量不小于所述第二数量,或者根据所述第一数量和所述第二数量判定迁移后的所述当前处理器单元和所述目标处理器单元上的第一类线程的数量处于均衡时,将所述待迁移线程由所述目标处理器单元迁移至所述当前处理器单元。
2.如权利要求1所述的线程调度方法,其特征在于,所述判断所述待迁移线程是否为第一类线程,包括:
检测所述待迁移线程是否具有预设标签,其中,若所述待迁移线程具有所述预设标签,则判定所述待迁移线程为第一类线程,若所述待迁移线程不具有所述预设标签,则判定所述待迁移线程不为第一类线程。
3.如权利要求2所述的线程调度方法,其特征在于,所述判断所述待迁移线程是否为第一类线程之后,还包括:
当所述待迁移线程不为第一类线程时,将所述待迁移线程由所述目标处理器单元迁移至所述当前处理器单元;
所述将所述待迁移线程由所述目标处理器单元迁移至所述当前处理器单元之后,返回执行确定当前处理器单元所在调度域的不均衡负载值。
4.如权利要求1所述的线程调度方法,其特征在于,所述确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程,还包括:
当检测到有进程切换至前台运行时,确定前台进程;
从所述前台进程的线程中识别出用于执行用户交互事件中相关任务的第一预设线程,为所述第一预设线程添加预设标签,以将所述线程标记为第一类线程。
5.一种线程调度装置,其特征在于,包括:
线程标记模块,用于确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
负载检测模块,用于确定当前处理器单元所在调度域的不均衡负载值;
目标选择模块,用于当所述不均衡负载值大于预设阈值时,从所述调度域中确定出负载值最大的目标处理器单元;
线程检测模块,用于所述目标处理器单元的第一运行队列中位于LRU链表队尾的线程确定为待迁移线程,并判断所述待迁移线程是否为第一类线程;
线程数统计模块,用于当所述待迁移线程为第一类线程时,统计迁移后所述第一运行队列中第一类线程的第一数量,以及迁移后所述当前处理器单元的第二运行队列中第一类线程的第二数量;
线程迁移模块,用于当所述第一数量不小于所述第二数量,或者根据所述第一数量和所述第二数量判定迁移后的所述当前处理器单元和所述目标处理器单元上的第一类线程的数量处于均衡时,将所述待迁移线程由所述目标处理器单元迁移至所述当前处理器单元;
所述线程标记模块还用于:当检测到有第二预设线程创建时,将创建的第二预设线程标记为第一类线程,其中,所述第二预设线程为系统级线程;对所述第一类线程的运行状态进行检测;当检测到有第一类线程进入阻塞状态,则确定与进入阻塞状态的第一类线程之间有约束关系的关联线程;为所述关联线程添加预设标签,以将所述关联线程标记为所述第一类线程;
所述负载检测模块,还用于:获取当前处理器单元所在调度域内每一调度组的负载值;根据每一调度组的负载值计算所述调度域的第一平均负载值,并确定所述调度域内的最繁忙的调度组的第二平均负载值;将所述第二平均负载值与所述第一平均负载值之间的差值,作为所述当前处理器单元所在调度域的不均衡负载值。
6.一种存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至4任一项所述的线程调度方法。
7.一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,其特征在于,所述处理器通过调用所述计算机程序,用于执行如权利要求1至4任一项所述的线程调度方法。
CN202010627014.1A 2020-07-01 2020-07-01 线程调度方法、装置、存储介质及电子设备 Active CN111831409B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010627014.1A CN111831409B (zh) 2020-07-01 2020-07-01 线程调度方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010627014.1A CN111831409B (zh) 2020-07-01 2020-07-01 线程调度方法、装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN111831409A CN111831409A (zh) 2020-10-27
CN111831409B true CN111831409B (zh) 2022-07-15

Family

ID=72900051

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010627014.1A Active CN111831409B (zh) 2020-07-01 2020-07-01 线程调度方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN111831409B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114968603B (zh) * 2022-08-03 2022-11-18 沐曦集成电路(上海)有限公司 一种支持多档负载平衡的容量检测方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1786917A (zh) * 2004-12-07 2006-06-14 国际商业机器公司 在多处理器数据处理系统中借入线程作为负载平衡的形式
CN101256515A (zh) * 2008-03-11 2008-09-03 浙江大学 多核处理器操作系统负载均衡的实现方法
CN101840356A (zh) * 2009-12-25 2010-09-22 北京网康科技有限公司 一种基于ring的多核CPU负载均衡方法及系统
CN103729248A (zh) * 2012-10-16 2014-04-16 华为技术有限公司 一种基于缓存感知的确定待迁移任务的方法和装置
WO2015070789A1 (en) * 2013-11-14 2015-05-21 Mediatek Inc. Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address (es)
CN105528330A (zh) * 2014-09-30 2016-04-27 杭州华为数字技术有限公司 负载均衡的方法、装置、丛集和众核处理器
CN105955809A (zh) * 2016-04-25 2016-09-21 深圳市万普拉斯科技有限公司 线程调度方法和系统
CN109542606A (zh) * 2018-11-27 2019-03-29 哈尔滨工业大学 一种面向穿戴设备应用的eas调度器的优化方法
CN110928661A (zh) * 2019-11-22 2020-03-27 北京浪潮数据技术有限公司 一种线程迁移方法、装置、设备及可读存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1786917A (zh) * 2004-12-07 2006-06-14 国际商业机器公司 在多处理器数据处理系统中借入线程作为负载平衡的形式
CN101256515A (zh) * 2008-03-11 2008-09-03 浙江大学 多核处理器操作系统负载均衡的实现方法
CN101840356A (zh) * 2009-12-25 2010-09-22 北京网康科技有限公司 一种基于ring的多核CPU负载均衡方法及系统
CN103729248A (zh) * 2012-10-16 2014-04-16 华为技术有限公司 一种基于缓存感知的确定待迁移任务的方法和装置
WO2015070789A1 (en) * 2013-11-14 2015-05-21 Mediatek Inc. Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address (es)
CN105528330A (zh) * 2014-09-30 2016-04-27 杭州华为数字技术有限公司 负载均衡的方法、装置、丛集和众核处理器
CN105955809A (zh) * 2016-04-25 2016-09-21 深圳市万普拉斯科技有限公司 线程调度方法和系统
CN109542606A (zh) * 2018-11-27 2019-03-29 哈尔滨工业大学 一种面向穿戴设备应用的eas调度器的优化方法
CN110928661A (zh) * 2019-11-22 2020-03-27 北京浪潮数据技术有限公司 一种线程迁移方法、装置、设备及可读存储介质

Also Published As

Publication number Publication date
CN111831409A (zh) 2020-10-27

Similar Documents

Publication Publication Date Title
CN111831441A (zh) 内存回收方法、装置、存储介质及电子设备
CN108009006B (zh) I/o请求的调度方法及装置
US9201693B2 (en) Quota-based resource management
CN111831414A (zh) 线程迁移方法、装置、存储介质及电子设备
US9424085B2 (en) Recognizing a process group that is related to an application
CN111831440A (zh) 内存回收方法、装置、存储介质及电子设备
CN111813520A (zh) 线程调度方法、装置、存储介质及电子设备
CN111831434A (zh) 资源分配方法、装置、存储介质及电子设备
CN111831433A (zh) 资源分配方法、装置、存储介质及电子设备
CN111813521A (zh) 线程调度方法、装置、存储介质及电子设备
CN110865888A (zh) 一种资源加载方法、装置、服务器及存储介质
CN113495780A (zh) 任务调度方法、装置、存储介质及电子设备
CN111831438A (zh) 资源分配方法、装置、存储介质及电子设备
CN111597042A (zh) 业务线程运行方法、装置、存储介质及电子设备
CN111831435A (zh) 内存分配方法、装置、存储介质及电子设备
US20210208935A1 (en) Method for Scheduling Multi-Core Processor, Terminal, and Storage Medium
CN111831432B (zh) Io请求的调度方法、装置、存储介质及电子设备
CN109359092B (zh) 文件管理方法、桌面显示方法、装置、终端及介质
CN111475299B (zh) 内存分配方法、装置、存储介质及电子设备
US11221881B2 (en) Computer resource leak detection
CN111831437A (zh) 设备管理方法、装置、存储介质及电子设备
CN107977275B (zh) 基于消息队列的任务处理方法及相关设备
CN112256421A (zh) 通信处理方法、装置、存储介质及电子设备
CN111831409B (zh) 线程调度方法、装置、存储介质及电子设备
CN111831413A (zh) 线程调度方法、装置、存储介质及电子设备

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