线程调度方法和系统的制作方法

文档序号:10593919阅读:404来源:国知局
线程调度方法和系统的制作方法
【专利摘要】本发明涉及一种线程调度方法和系统,该线程调度方法包括以下步骤:获取线程的状态信息,其中,状态信息包括线程的类型;当线程为预定类型线程,且预定类型线程至少满足下列预定条件之一时:运行有预定类型线程的处理器需要进行线程迁出;需要为被唤醒的预定类型线程确定执行被唤醒的预定类型线程的处理器;至少执行下列预定操作之一:将正在运行的优先权最高的预定类型线程调度至效能最高的处理器;将被唤醒的预定类型线程迁移至无运算资源竞争的处理器。上述的线程调度方法和系统,能够针对预定类型线程采取相应的调度方法,满足预定类型线程的效能需求,提高了线程的执行效率和处理器的利用率。
【专利说明】
线程调度方法和系统
技术领域
[0001 ]本发明涉及处理器技术领域,特别涉及一种线程调度方法和系统。【背景技术】
[0002]在一些领域中,例如移动智能通信终端领域,线程调度对所有的进程/线程都采用相同的调度策略。例如,当线程被醒时,通常会选择线程睡眠前执行该线程的运算资源(处理器)或者从开启状态的运算资源中选择闲置或者占用率低的运算资源来执行被唤醒的线程。另外,当一个运算资源由于多个线程运行而负载过重时,线程调度器将尝试把其中一个或者多个线程迀移到其他运算资源以达到负载平衡。
[0003]上述的线程调度方案在线程被唤醒或者迀移线程时,仅使用简单的优先权无差别地对待所有的线程,使得线程执行效率低、处理器利用率低。
【发明内容】

[0004]基于此,有必要针对上述技术问题,提供一种线程调度方法和系统,其能够提高线程的执行效率和处理器的利用率。
[0005]—种线程调度方法,包括以下步骤:
[0006]获取线程的状态信息,其中,所述状态信息包括线程的类型;
[0007]当所述线程为预定类型线程,且所述预定类型线程至少满足下列预定条件之一时:运行有预定类型线程的处理器需要进行线程迀出;
[0008]需要为被唤醒的预定类型线程确定执行所述被唤醒的预定类型线程的处理器; [〇〇〇9]至少执行下列预定操作之一:
[0010]将正在运行的优先权最高的预定类型线程调度至效能最高的处理器;
[0011]将被唤醒的预定类型线程迀移至无运算资源竞争的处理器。
[0012]在其中一个实施例中,所述将正在运行的优先权最高的预定类型线程调度至效能最高的处理器的步骤包括:
[0013]获取所述正在运行的预定类型线程的优先权信息;
[0014]判断是否存在闲置的处理器;
[0015]如果是,则将所述优先权最高的预定类型线程迀移至所述闲置的处理器;
[0016]如果否,则将优先权最高的预定类型线程保留在当前处理器,将优先权次之的预定类型线程迀移至无所述预定类型线程竞争的处理器。
[0017]在其中一个实施例中,所述将被唤醒的预定类型线程迀移至无资源竞争的处理器的步骤包括:
[0018]获取所述处理器的负载信息;
[0019]判断是否存在无运算资源竞争的处理器;
[0020]如果是,则将所述被唤醒的预定类型线程迀移至所述无运算资源竞争的处理器;
[0021]如果否,则将所述被唤醒的预定类型线程调度至所述被唤醒的预定类型线程睡眠前的处理器。
[0022]在其中一个实施例中,还包括:当对所述预定类型线程进行调度时,实时地对运行所述预定类型线程的处理器进行动态电压频率调整。[〇〇23]在其中一个实施例中,还包括:当所述线程为非预定类型线程时,则基于处理器上线程均衡的原则,对所述非预定类型线程进行调度。[〇〇24] 一种线程调度系统,包括:
[0025]信息获取模块,用于获取线程的状态信息,其中,所述状态信息包括线程的类型;
[0026]线程调度模块,用于当所述线程为预定类型线程时,且所述预定类型线程至少满足下列预定条件之一时:运行有预定类型线程的处理器需要进行线程迀出;需要为被唤醒的预定类型线程确定执行所述被唤醒的预定类型线程的处理器;[〇〇27]至少执行下列预定操作之一:将正在运行的优先权最高的预定类型线程调度至效能最高的处理器;将被唤醒的预定类型线程迀移至无资源竞争的处理器。
[0028]在其中一个实施例中,所述线程调度模块还用于:获取所述正在运行的预定类型线程的优先权信息;判断是否存在闲置的处理器;当存在闲置的处理器时,将所述优先权最高的预定类型线程迀移至所述闲置的处理器;当不存在闲置处理器时,将优先权最高的预定类型线程保留在当前处理器,将优先权次之的预定类型线程迀移至无所述预定类型线程竞争的处理器。[〇〇29]在其中一个实施例中,所述线程调度模块还用于:获取所述处理器的负载信息;判断是否存在无运算资源竞争的处理器;当存在无运算资源竞争的处理器时,则将所述被唤醒的预定类型线程迀移至所述无运算资源竞争的处理器;当不存在无运算资源竞争的处理器时,则将所述被唤醒的预定类型线程调度至所述被唤醒的预定类型线程睡眠前的处理器。
[0030]在其中一个实施例中,还包括:电压频率调整模块,用于当对所述预定类型线程进行调度时,实时地对运行所述预定类型线程的处理器进行动态电压频率调整。
[0031]在其中一个实施例中,所述线程调度模块还用于:当所述线程为非预定类型线程时,则基于处理器上线程均衡的原则,对所述非预定类型线程进行调度。[〇〇32] 上述的线程调度方法和系统,通过监测处理器上线程的状态信息,当线程为预定类型线程,且预定类型线程满足预定条件时,则根据预定类型线程的状态信息,基于效能最大化和资源竞争最小化的原则对预定类型线程进行调度,即将正在运行的优先权最高的预定类型线程调度至效能最高的处理器;或者将被唤醒的预定类型线程迀移至无运算资源竞争的处理器。上述的线程调度方法和系统能够针对预定类型线程采取相应的调度方法,能最大限度地满足预定类型线程的效能需求,提高了预定类型线程的执行效率和处理器的利用率。【附图说明】
[0033]图1为一个实施例的线程调度方法的流程图;
[0034]图2为一个实施例的对预定类型线程进行调度的流程图;[〇〇35]图3a为一个实施例的正在运行的线程的状态示意图;[〇〇36]图3b为图3a的线程的迀移的状态示意图;
[0037]图4a为另一个实施例的运行的线程的状态示意图;[〇〇38]图4b为图4a的线程的迀移的状态示意图;
[0039]图5为一个实施例的对被唤醒的预定类型线程进行调度的流程图;
[0040]图6a为一个实施例的唤醒的线程状态示意图;[〇〇411图6b为图6a的线程迀移的状态示意图;
[0042]图7为一个实施例的线程调度系统的结构框图;
[0043]图8为另一个实施例的线程调度系统的结构框图。【具体实施方式】
[0044]在一个实施例中,如图1所示,提出了一种线程调度方法。该方法包括以下步骤:
[0045]步骤102,获取线程的状态信息,其中,所述状态信息包括线程的类型。[〇〇46]线程调度器可实时监测处理器上的线程的状态信息。在本实施例中处理器的数目可为多个。处理器可以为中央处理器(Central Processing Unit,CPU),图形处理器 (Graphics Processing Unit,GF*U),视频处理单元(Video Processing Unit,VPU)等中的至少一种。线程的数目可以为一个或多个。处理器上线程的状态信息包括线程的类型、效能、数目以及线程的状态。效能是指线程执行某项任务所用时间的倒数,时间越短表示线程的效能越好。线程的状态包括运行状态、阻塞状态。其中,阻塞状态包括睡眠状态,线程由睡眠状态被唤醒后可进入运行状态。
[0047]在一个实施例中,线程的类型可以根据线程执行的任务/功能属性进行划分。例如这些任务/功能可以为屏幕触控反馈、屏幕更新频率等影响用户体验的任务/功能,这些任务/功能的执行情况会被用户直接感知,例如,屏幕触控反馈有延迟,则用户在进行了触摸操作之后,触摸屏的不能立即响应,从而使得用户体验不好。[〇〇48]步骤104,当线程为预定类型线程,且预定类型线程至少满足下列预定条件之一时:运行有预定类型线程的处理器需要进行线程迀出;需要为被唤醒的预定类型线程确定执行该唤醒的预定类型线程的处理器。至少执行下列的预定操作之一。
[0049]在本实施例中,预定类型线程为执行预定任务/功能的线程,这些预定任务/功能为对用户体验影响明显的任务/功能,例如,屏幕触控反馈速度、屏幕画面更新频率等。
[0050] 在很多情况下,需要进行线程迀出,例如,如果某个处理器(源处理器)的负载过高或者温度过高,则可以将该处理器上的一个或多个线程迀移到其他处理器(目标处理器), 即被迀移出去的线程不再由源处理器执行,而是由目标处理器执行。
[0051]当处理器上的线程为预定类型线程时,则根据所述预定类型线程的状态信息,基于效能最大化和资源竞争最小化的原则对预定类型线程进行调度。
[0052]当线程为预定类型线程且满足上述实施例的预定条件之一时,线程调度器则以满足预定类型线程效能和降低预定类型线程的资源竞争为原则,执行至少下列预定操作之一。效能为预定类型线程完成任务/功能所花费时间的倒数,时间越短,则预定类型线程的效能越好。[〇〇53]所述的预定操作包括:[〇〇54] (1)将正在运行的优先权最高的预定类型线程调度至效能最高的处理器。
[0055]正在运行的预定类型线程的数目可能为一个或者多个,当这些预定类型线程满足上述实施例中描述的条件时,则将正在运行的优先级最高的预定类型线程调度至效能最高的处理器,以保证预定类型线程的执行。在本实施例中,效能最高的处理器包括:闲置的处理器和无运算资源竞争的处理器。
[0056] (2)将被唤醒的预定类型线程迀移至无运算资源竞争的处理器。[〇〇57]在本实施例中,运算资源竞争是指多个线程被同一处理器执行时,线程间竞争共享资源。无运算资源竞争的处理器包括无预定类型线程竞争的处理器。[〇〇58] 上述的线程调度方法,通过监测处理器上线程的状态信息,当线程为预定类型线程,且预定类型线程满足预定条件时,则根据预定类型线程的状态信息,基于效能最大化和资源竞争最小化的原则对预定类型线程进行调度,即将正在运行的优先权最高的预定类型线程调度至效能最高的处理器;或者将被唤醒的预定类型线程迀移至无运算资源竞争的处理器。上述的线程调度方法能够针对预定类型线程采取相应的调度方法,能最大限度地满足预定类型线程的效能需求,提高了预定类型线程的执行效率和处理器的利用率。[〇〇59]在一个实施例中,如图2所示,将正在运行的优先权最高的预定类型线程调度至效能最高的处理器的步骤包括:
[0060]步骤202,获取正在运行的预定类型线程的优先权信息。[0061 ]当处理器上运行的预定线程的数目为多个时,需要获取预定类型线程的优先权信息,从而线程调度器可以根据预定类型线程的优先权信息对预定类型线程进行调度。[〇〇62] 步骤204,判断是否存在闲置的处理器,如果是,则执行步骤206,反之则执行步骤 208 〇[〇〇63]在本实施例中,判断是否有闲置的处理器,如果有则基于预定类型线程效能最大化的原则,将预定类型线程迀移至闲置的处理器,以保证预定类型线程的效能需求。[〇〇64] 步骤206,将优先权最高的预定类型线程迀移至闲置的处理器。[〇〇65]当存在闲置的处理器时,由于运行的预定类型线程的数目可能为一个或者多个, 因此根据预定类型线程的优先权对至少一个预定类型线程进行调度,从而对处于运行状态的预定类型线程进行迀移以满足预定类型线程的效能并减少预定类型线程间的资源竞争。 [〇〇66]当正在执行的预定类型线程的数目为一个时,则将该正在执行的预定类型线程迀移至闲置的处理器。如图3a所示,处理器1(CPU0)上执行的有A、B、C三个线程,其中A为预定类型线程,处理器2(CPU1)处于闲置状态,则将线程迀移至CPU1,以减少CPU0上的资源竞争, 如图3b所示。同时对CPU1进行动态电压频率调整,使得CPU1的效能满足预定类型线程A的效能需求。
[0067]当处于运行状态的预定类型线程的数目为多个时,则计算各个处于运行状态的预定类型线程的优先权信息,将优先权级别最高的预定类型线程迀移至闲置的处理器。[〇〇68] 进一步地,当前处理器上正在运行的预定类型线程的数目超过可用处理器的数目时,则将多个预定类型线程在各处理器上均衡分配。[〇〇69]步骤208,将优先权最高的预定类型线程保留在当前处理器,将优先权次之的预定类型线程迀移至无预定类型线程竞争的处理器。
[0070]当不存在闲置的处理器时,则计算正在运行的预定类型线程的优先权和其他处理器的资源竞争状况,将优先权最高的预定类型线程保留在当前处理器,将优先权次之的预定类型线程迀移至无预定类型线程竞争的处理器。
[0071]在一个实施例中,当正在运行的预定类型线程的数目为一个时,则将该正在运行的预定类型线程保留在当前处理器。当正在运行的预定类型线程的数目为多个时,将优先权最高的预定类型线程保留在当前处理器,将优先权次之的预定类型线程迀移至无预定类型线程竞争的处理器。
[0072]例如,假设多个运行的预定类型线程的优先权分别为1、2、3、4…,其中1表示优先权最高,2次之,依次类推。在示例中,将优先权为1的预定类型线程保留在当前处理器,将优先权为2的预定类型线程迀移至无预定类型线程竞争的处理器。[〇〇73] 进一步地,当优先权为2的预定类型线程迀移至无预定类型线程竞争的处理器后, 当前处理器的资源竞争仍然较大时,则继续迀移优先权为3的预定类型线程迀移至无预定类型线程竞争的处理器,依次类推。[〇〇74]例如图4a所示,线程A、C为预定类型线程,且预定类型线程C的优先权高于预定类型线程A,且处理器CPU3运行的线程D为非预定类型线程。因此,将预定类型线程A迀移至效能最尚的处理器CPU3,如图4b所不。[〇〇75]上述的对正在运行的预定类型线程的调度,能够满足预定类型线程的效能需求, 同时提高了线程的执行效率和处理器的利用率。[〇〇76]在一个实施例中,如图5所示,将被唤醒的预定类型线程迀移至无资源竞争的处理器的步骤包括:[〇〇77]步骤502,获取处理器的负载信息。[〇〇78]获取至少一个处理器上的运行的负载信息。在本实施例中,负载信息包括线程的数目和类型,以及线程间的竞争状态。[〇〇79] 步骤504,判断是否存在无运算资源竞争的处理器,如果是,则执行步骤506,反之, 则执行步骤508。
[0080]根据上述实施例获取的处理器的负载信息,判断是否存在无运算资源竞争的处理器,如果存在,则执行步骤506,反之,则执行步骤508。
[0081] 步骤506,将被唤醒的预定类型线程迀移至无运算资源竞争的处理器。
[0082]在本实施例中,无运算资源竞争的处理器是指既能满足唤醒的预定类型线程的效能,又能保证预定类型线程间的资源竞争低的处理器。[〇〇83] 步骤508,将被唤醒的预定类型线程调度至被唤醒的预定类型线程睡眠前的处理器。
[0084]在本实施例中,当不存在无运算资源竞争的处理器时,将被唤醒的预定类型线程调度至被唤醒的预定类型线程睡眠前的处理器,以满足被唤醒的预定类型线程的效能。 [〇〇85]例如图6a所示,预定类型线程A在时间3时暂时性地完成了任务并进入睡眠状态, 离开了处理器1(CPU0)。预定类型线程A在时间10被唤醒,通过检测可知处理器4(CPU3)不能同时满足预定类型线程A和线程D的效能,因此线程调度器则将预定类型线程A调度至原处理器CPU0执行,如图6b所示。[〇〇86] 通过上述实施例的预定类型线程的调度方法,能够保证唤醒的预定类型线程的效能需求。
[0087]在一个实施例中,该线程调度方法还包括:当对预定类型线程进行调度时,实时地对预定类型线程迀移后的处理器进行动态电压频率调整。目前公开的动态电压频率调整的方法已有很多,这里不再赘述。
[0088] 通过实时的动态电压频率调整,不仅可以保证预定类型线程的效能,而且还能减少效能溢出。[〇〇89]在一个实施例中,该方法还包括:当线程为非预定类型线程时,则基于处理器上线程均衡的原则,对非预定类型线程进行调度。
[0090]在本实施例中,当判定处理器上的线程为非预定类型线程时,则对非预定类型线程进行迀移以使得各个处理器的线程(负载)均衡。需要说明的是,在本实施例中,按照现有线程迀移方法对非预定类型线程进行迀移时,只对运行非预定类型线程的处理器进行周期性的动态电压频率调整。
[0091]在一个实施例中,如图7所示,提出了一种线程调度系统700。该系统700包括:信息获取模块702和线程调度模块704。[〇〇92]信息获取模块702用于获取线程的状态信息,其中,状态信息包括线程的类型。线程调度模块704,用于当线程为预定类型线程时,且预定类型线程至少满足下列预定条件之一时:运行有预定类型线程的处理器需要进行线程迀出;需要为被唤醒的预定类型线程确定执行所述被唤醒的预定类型线程的处理器;[〇〇93]至少执行下列预定操作之一:将正在运行的优先权最高的预定类型线程调度至效能最高的处理器;将被唤醒的预定类型线程迀移至无资源竞争的处理器。[〇〇94]在一个实施例中,线程调度模块704还用于:获取正在运行的预定类型线程的优先权信息;判断存在闲置的处理器;当存在闲置的处理器时,将优先权最高的预定类型线程迀移至所述闲置的处理器;当不存在闲置处理器时,将优先权最高的预定类型线程保留在当前处理器,将优先权次之的预定类型线程迀移至无预定类型线程竞争的处理器。[〇〇95]在一个实施例中,线程调度模块704还用于:获取处理器的负载信息;判断是否存在无运算资源竞争的处理器;当存在无运算资源竞争的处理器时,则将被唤醒的预定类型线程迀移至无运算资源竞争的处理器;当不存在无运算资源竞争的处理器时,则将被唤醒的预定类型线程调度至被唤醒的预定类型线程睡眠前的处理器。[〇〇96]在一个实施例中,线程调度模块704还用于:当线程为非预定类型线程时,则基于处理器上线程均衡的原则,对非预定类型线程进行调度。[〇〇97] 在一个实施例中,如图8所示,系统700还包括:电压频率调整模块706。电压频率调整模块706用于当对预定类型线程进行调度时,实时地对运行预定类型线程的处理器进行动态电压频率调整。
[0098]本实施例的线程调度系统700用于实现前述的线程调度方法,因此线程调度系统 700中的具体实施可参见前文中线程调度方法的实施例部分,在此不再累述。
[0099]以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0100]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【主权项】
1.一种线程调度方法,其特征在于,包括以下步骤:获取线程的状态信息,其中,所述状态信息包括线程的类型;当所述线程为预定类型线程,且所述预定类型线程至少满足下列预定条件之一时:运行有预定类型线程的处理器需要进行线程迀出;需要为被唤醒的预定类型线程确定执行所述被唤醒的预定类型线程的处理器;至少执行下列预定操作之一:将正在运行的优先权最高的预定类型线程调度至效能最高的处理器;将被唤醒的预定类型线程迀移至无运算资源竞争的处理器。2.根据权利要求1所述的方法,其特征在于,所述将正在运行的优先权最高的预定类型 线程调度至效能最高的处理器的步骤包括:获取所述正在运行的预定类型线程的优先权信息;判断是否存在闲置的处理器;如果是,则将所述优先权最高的预定类型线程迀移至所述闲置的处理器;如果否,则将优先权最高的预定类型线程保留在当前处理器,将优先权次之的预定类 型线程迀移至无所述预定类型线程竞争的处理器。3.根据权利要求1所述的方法,其特征在于,所述将被唤醒的预定类型线程迀移至无资 源竞争的处理器的步骤包括:获取所述处理器的负载信息;判断是否存在无运算资源竞争的处理器;如果是,则将所述被唤醒的预定类型线程迀移至所述无运算资源竞争的处理器;如果否,则将所述被唤醒的预定类型线程调度至所述被唤醒的预定类型线程睡眠前的 处理器。4.根据权利要求1至3任意一项所述的方法,其特征在于,还包括:当对所述预定类型线 程进行调度时,实时地对运行所述预定类型线程的处理器进行动态电压频率调整。5.根据权利要求1所述的方法,其特征在于,还包括:当所述线程为非预定类型线程时, 则基于处理器上线程均衡的原则,对所述非预定类型线程进行调度。6.—种线程调度系统,其特征在于,包括:信息获取模块,用于获取线程的状态信息,其中,所述状态信息包括线程的类型;线程调度模块,用于当所述线程为预定类型线程时,且所述预定类型线程至少满足下 列预定条件之一时:运行有预定类型线程的处理器需要进行线程迀出;需要为被唤醒的预 定类型线程确定执行所述被唤醒的预定类型线程的处理器;至少执行下列预定操作之一:将正在运行的优先权最高的预定类型线程调度至效能最 高的处理器;将被唤醒的预定类型线程迀移至无资源竞争的处理器。7.根据权利要求6所述的系统,其特征在于,所述线程调度模块还用于:获取所述正在 运行的预定类型线程的优先权信息;判断是否存在闲置的处理器;当存在闲置的处理器时, 将所述优先权最高的预定类型线程迀移至所述闲置的处理器;当不存在闲置处理器时,将 优先权最高的预定类型线程保留在当前处理器,将优先权次之的预定类型线程迀移至无所 述预定类型线程竞争的处理器。8.根据权利要求6所述的系统,其特征在于,所述线程调度模块还用于:获取所述处理器的负载信息;判断是否存在无运算资源竞争的处理器;当存在无运算资源竞争的处理器 时,则将所述被唤醒的预定类型线程迀移至所述无运算资源竞争的处理器;当不存在无运 算资源竞争的处理器时,则将所述被唤醒的预定类型线程调度至所述被唤醒的预定类型线 程睡眠前的处理器。9.根据权利要求6至8任意一项所述的系统,其特征在于,还包括:电压频率调整模块,用于当对所述预定类型线程进行调度时,实时地对运行所述预定 类型线程的处理器进行动态电压频率调整。10.根据权利要求6所述的系统,其特征在于,所述线程调度模块还用于:当所述线程为 非预定类型线程时,则基于处理器上线程均衡的原则,对所述非预定类型线程进行调度。
【文档编号】G06F9/48GK105955809SQ201610261165
【公开日】2016年9月21日
【申请日】2016年4月25日
【发明人】陈奂彣, 张文彦
【申请人】深圳市万普拉斯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1