CN102495762B - 一种线程调度方法、线程调度装置及多核处理器系统 - Google Patents
一种线程调度方法、线程调度装置及多核处理器系统 Download PDFInfo
- Publication number
- CN102495762B CN102495762B CN201110362773.0A CN201110362773A CN102495762B CN 102495762 B CN102495762 B CN 102495762B CN 201110362773 A CN201110362773 A CN 201110362773A CN 102495762 B CN102495762 B CN 102495762B
- Authority
- CN
- China
- Prior art keywords
- thread
- processor core
- cache
- processor
- people logging
- 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.)
- Expired - Fee Related
Links
Images
Abstract
本发明实施例公开了一种线程调度方法、线程调度装置及多核处理器系统,用于处理器核进行线程调度。本发明实施例方法包括:当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;若第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,将当前运行的线程切换成查找到的线程。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种线程调度方法、线程调度装置及多核处理器系统。
背景技术
线程是进程中的一个实体,不拥有系统资源,只有执行必须的一些数据结构,线程可以创建和撤销,从而实现程序的并发执行。线程一般据具有就绪、堵塞和执行三种基本状态。
目前在多核处理器系统中,所有的处理器核都可以共享地访问内存、I/0和外部中断。系统中的硬件资源可以被多个处理器核共享,例如内存控制器、最后一级高速缓存存储器(LLC,Last Level cache)等。
现有技术中的多核处理器系统运行应用程序时,大多以线程为调度单位运行,然而,发明人在研究中发现,目前的线程调度过程中,是按照线程的优先级确定将要切换的线程,而忽略了多核处理器系统共享资源产生的资源竞争或浪费而导致多核处理器系统性能下降的问题。
发明内容
本发明实施例提供了一种线程调度方法、线程调度装置及多核处理器系统,用于对多核处理器系统中的线程进行调度,能够有效的提高共享资源的利用率,缓和处理器核对共享资源的竞争,从而提高多核处理器系统的性能。
本发明实施例中的线程调度方法包括:
当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;
若第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;
当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,将当前运行的线程切换成查找到的线程。
本发明实施例中的线程调度方法包括:
当第一处理器核发生线程上下文切换时,将第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加一;
获取与第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值;
根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;
扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;
当第一参数值与第二参数值之间的差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程。
本发明实施例中的线程调度装置包括:
确定单元,用于当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;
查找单元,用于若第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;
切换单元,用于当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,则将当前运行的线程切换成查找到的线程。
本发明实施例中的线程调度装置包括:
第一累加单元,用于当第一处理器核发生线程上下文切换时,将第一处理器核当前运行的线程的高速缓冲存储器cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加一;
第一获取单元,用于获取与第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值;
第一计算单元,用于根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;
第一扫描计算单元,用于扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;
第一处理单元,用于当第一参数值与第二参数值之间的差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程。
本发明实施例中的多核处理器系统包括:
第一处理器核和第二处理器核,以及共享的硬件资源;
第一处理器核和第二处理器核访问共享的硬件资源;
第一处理器核用于:当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;若第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程,将当前运行的线程切换成查找到的线程;
或者,
第一处理器核用于:当第一处理器核发生线程上下文切换时,将第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到总的cache访问率中,将累加次数计数值加一;获取与第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值;根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;当第一参数值与第二参数值之间的差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程。
从以上技术方案可以看出,本发明实施例具有以下优点:
当第一处理器核发生线程上下文切换时,确定与该第一处理器核具有对应关系的第二处理器核,若该第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程,并将查找到的所需类型的线程切换成由该第一处理器核运行,从而本发明实施例中的线程调度装置可使得不同缓存特征类型的线程能够协调运行,进而避免第一处理器核及第二处理器核运行相同类型的线程而产生的资源竞争或者资源浪费,有效的缓和了处理器核对共享资源的竞争,且可提高共享资源的利用率,改善了多核处理器系统的性能。
附图说明
图1为本发明实施例中一种线程调度方法的一个示意图;
图2为本发明实施例中一种线程调度方法的另一示意图;
图3为本发明实施例中一种线程调度方法的另一示意图;
图4为本发明实施例中一种线程调度装置的一个示意图;
图5为本发明实施例中一种线程调度装置的另一示意图;
图6为本发明实施例中一种线程调度装置的另一示意图;
图7为本发明实施例中多核处理器系统的一个示意图;
图8-a为本发明实施例中多核处理器系统的一个物理架构示意图;
图8-b为本发明实施例中多核处理器系统的一个物理架构示意图;
图8-c为本发明实施例中多核处理器系统的一个物理架构示意图。
具体实施方式
本发明实施例提供了一种线程调度方法、线程调度装置及多核处理器系统,用于对多核处理器系统中的共享硬件资源的处理器核上运行的线程进行调度,能够有效的缓和共享硬件资源的多个处理器核对共享硬件资源的竞争,从而提高共享资源的利用率,改善了多核处理器系统的性能。
在本发明实施例中,在处理器核对应的可执行连接格式(ELF,Executableand Linkable Format)文件中创建线程之后,需要通过仿真实验确定该ELF文件中的线程的类型,具体为:
1)若有n个线程,则将该n个线程依次编号为1~n,选择任意两个线程同时运行,若线程i与线程j同时运行,那么将线程j在与线程i同时运行的性能损耗,记为dij,在每一个线程均与其他的线程同时运行之后,可得到如下的矩阵D:
其中,矩阵D中第i行表示线程1至n受线程i的影响程度,且第i行向量的2范数可作为线程i的密集型指数;第i列表示线程i受线程1至n的影响程度,且第i列向量的2范数可作为线程i的敏感性指数。
2)计算线程1~n的密集型指数及敏感性指数,具体的计算公式分别为:
其中,i∈(1,n)
利用上述的计算公式,可分别计算出线程1~n的密集型指数及敏感性指数。
3)根据线程的密集性指数及敏感性指数分别计算出各线程的缓存敏感值H,具体的计算公式为:
Hi=tan(线程i的敏感性指数/线程i的密集性指数),其中i∈(1,n);
若|Hi-1|≤预置的数值,则确定线程i为缓存比较敏感型线程;
若|Hi-1|>预置的数值,则确定线程i为缓存敏感型线程或者缓存非敏感型线程,且需要进一步确定线程i的类型,进一步确定的方法为:若线程i的密集性指数大于或等于该n个线程的密集性指数的平均值,则确定线程i为缓存敏感型线程,若线程i的密集性指数小于该n个线程的密集性指数的平均值时,则确定线程i为缓存非敏感型线程。
按上述的方法确定n个线程的类型之后,可设置线程的类型标识,将线程的类型标识保存到线程对应的ELF文件中,使得当ELF中的线程在运行时,正在运行的线程的类型标识可保存到对应处理器核的当前运行线程描述符中,即当前运行线程描述符用于保存处理器核当前运行的线程的类型标识。
此外,在本发明实施例中,还需要将多核处理器系统的中的共享同一个共享资源的处理器核进行分组,具体为:
若共享同一共享资源的处理器核的个数为偶数,则按处理器核的身份标识码(ID,Identity)的顺序,以2个处理器核为一组进行分组,建立每一组中两个处理器核之间的对应关系。
若共享同一cache的处理器核的个数为奇数,则按处理器核的ID的顺序以2个为一组进行分组,剩余的一个处理器核不进行分组,对处理器核分组之后,建立每一组中两个处理器核之间的对应关系,可利用处理器核的ID设置具体的根据ID计算对应的处理器核的方法,或者通过建立处理器核分组表的方式建立两个处理器核之间的对应关系。需要说明的是,在本发明实施例中,当未分组的处理器核发生线程上下文切换时,按现有技术中的线程调度的的方法进行处理。
本发明实施例针对计算机多核架构平台上的多核共享的资源。通常情况下,在一个多核处理器系统中,有很多多核共享的系统资源,如LLC,当共享同一LLC的一组处理器核,同时运行缓存敏感型线程时,将产生LLC竞争,影响系统性能;当共享同一LLC的一组处理器核,同时运行cache缓存非敏感型线程时,产生LLC资源浪费,在本发明实施例中将采用基于线程的类型的调度方法,使得共享同一资源的一组处理器核分别运行缓存敏感型线程和缓存非敏感型线程,达到避免共享资源竞争及浪费,提高共享资源利用率,改善系统性能的目的。
需要说明的是,在本发明实施例中的多核处理系统中处理器核可以是中央处理器(CPU,Central Processing Unit),或者微处理器(MPU,Micro ProcessorUnit)、或者数字信号处理器(DSP,Digital Signal Processing)、或者图形处理器(GPU,图形处理器)。
下面将具体的介绍本发明实施例中线程调度的方法,请参阅图1,为本发明实施例中一种线程调度方法的实施例,应当理解的是,本发明实施例的方法的执行主体可以是多核处理器系统中的处理器核,本发明实施例以第一处理器核作为方法的执行主体举例来说明,本发明实施例的方法包括:
101、当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;
在本发明实施例中,多核处理器核在运行线程的过程中,若共享同一共享资源的处理器核中有某个CUP发生线程上下文切换,该CPU将对自身的线程切换进行处理。
在本发明实施例中,为了更好的描述技术方案,将发生线程上下文切换的处理器核称为第一处理器核,将与该第一处理器核具有对应关系的处理器核称为第二处理器核,因此,当第一处理器核发生线程上下文切换时,第一处理器核将确定与第一处理器核具有对应关系的第二处理器核。
102、若第二处理器核当前运行的是缓存敏感型线程,则从第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若第二处理器核当前运行的是缓存非敏感型线程,则从第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;
在本发明实施例中,第二处理器核当前运行的线程可能是缓存较敏感型线程、缓存敏感型线程、缓存非敏感型线程中的任意一种,当第二处理器核当前运行的是缓存敏感型线程时,第一处理器核将从对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,当第二处理器核当前运行的线程是缓存非敏感型线程,第一处理器核则从对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程。
需要说明的是,在本发明实施例中,处于就绪状态的待运行的线程的集合是处理器核对应的待运行队列中预置数目的优先级队列的集合或者是预置数目的线程或链表的集合,或者是红黑树组织结构的线程。
需要说明的是,在本发明实施例中,当第二处理器核当前运行的线程是缓存较敏感型线程,第一处理器核将按现有技术中的方法完成线程的切换,此处不再赘述。
103、当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,将当前运行的线程切换成查找到的线程。
在本发明实施例中,第一处理器核在对应的处于就绪状态的待运行的线程的集合中查找所需类型的线程,若查找到所需类型的线程,第一处理器核将当前运行的线程切换成查找到的线程,完成线程的切换,使得当第二处理器核上运行敏感型线程时,与其对应的第一处理器核上运行非敏感型线程,当第二处理器核上运行非敏感型线程时,与其对应的第一处理器核上运行敏感型线程。
在本发明实施例中,当第一处理器核发生线程上下文切换时,通过根据与该第一处理器核对应的第二处理器核当前运行的线程的类型确定第一处理器核将要运行的线程的类型,并在第一处理器核对应的处于就绪状态的待运行线程中查找该类型的线程,能够有效的避免第一处理器核及第二处理器核在同一个cache上产生的资源竞争或浪费,有效的缓解了资源竞争,提高了共享资源的利用率,提高了系统的系统。
为了更好的理解本发明中的技术方案,请参阅图2,为本发明实施例中一种线程调度的方法的实施例,应当理解的是,本发明实施例的方法的执行主体可以是多核处理器系统中的处理器核,本发明实施例以第一处理器核作为方法的执行主体来举例来说明,本发明实施例的方法包括:
201、当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;
在本发明实施例中,第一处理器核可根据第一处理器核的ID及预置的计算方法确定第二处理器核,其中,预置的计算方法与将处理器核分组的方法有关,例如,若处理器核的ID为0,1,2,3,ID为0和1的处理器核为一组,ID为2和3的处理器核为一组,则预置的计算方法可以为当第一处理器核的ID为偶数时,将处理器核的ID与该第一处理器核的ID加1的值相同的处理器核作为第二处理器核,若第一处理器核的ID为基数时,则将处理器核的ID与该第一处理器核的ID减一的值相同的处理器核作为第二处理器核。此外,系统还可在将处理器核分组时,建立处理器核分组表,使得在查找第二处理器核时,可根据第一处理器核的ID查找该处理器核分组表确定第二处理器核。在本发明实施例中,确定第二处理器核的方式有多种,此处不做限定。
202、将第一处理器核当前运行的线程在当前时间片的cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加一;
在本发明实施例中,若第一处理器核将要切换当前运行的线程,第一处理器核将当前运行的线程在当前时间片的cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加一,其中,第一处理器核当前运行的线程在当前时间片的cache访问率为第一处理器核在当前时间片内运行当前的线程时访问cache的次数与其运行当前线程时运行的指令次数的比值,第一处理器核总的cache访问率为第一处理器核从系统启动开始运行线程的cache访问率的累加值,且每累加一次,累加次数计数值加一。
203、若第二处理器核当前运行的是缓存敏感型线程,则从第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若第二处理器核当前运行的是缓存非敏感型线程,则从第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程,若查找到,则运行步骤204,若未查找到,则运行步骤205;
在本发明实施例中,处理器核当前运行的线程的类型标识保存在处理器核的当前运行线程描述符中,因此,第一处理器核可从第二处理器核当前运行线程描述符中获取第二处理器核当前运行的线程的类型标识,以确定第二处理器核当前运行的线程类型,其中,线程的类型包括:缓存敏感型、缓存较敏感型、缓存非敏感型。
在本发明实施例中,第一处理器核将根据第二处理器核当前运行的线程的类型,在对应的处于就绪状态的待运行的线程的集合中查找所需类型的线程,当第二处理器核当前运行的是缓存敏感型线程时,则从处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,当第二处理器核当前运行的是缓存非敏感型线程时,则从处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程。
204、当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,第一处理器核将当前运行的线程切换成查找到的线程,继续执行步骤209;
在本发明实施例中,第一处理器核若在对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程,则当前运行的线程切换成查找到的线程。
需要说明的是,第一处理器核查找所需类型的线程具体包括,扫描对应的处于就绪状态的待运行线程的集合,从当前扫描到的线程所在的ELF文件中获取该当前扫描的线程的类型标识,根据该类型标识确定当前扫描到的线程的类型,若该当前扫描到线程为所需类型的线程,则停止扫描,运行步骤204,将当前运行的线程切换成查找到的线程,若该当前扫描到的线程不是所需类型的线程,则扫描下一个线程。
205、若在第一处理器核对应的处于就绪状态的待运行线程的集合中未查找到所需类型的线程,则根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率;根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率;并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;
在本发明实施例中,若在第一处理器核对应的处于就绪状态的待运行线程的集合中未查找到所需类型的线程,第一处理器核将根据根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值,具体为:将第一处理器核总的cache访问率除以第一处理器核的累加次数计数值,得到第一处理器核的平均cache访问率,同时将第二处理器核总的cache访问率除以第二处理器核的累加次数计数值,得到第二处理器核的平均cache访问率,最后将第一处理器核的平均cache访问率与第二处理器核的平均cache访问率相加,得到第一参数值。
206、扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;
207、当第一参数值与第二参数值之间的差值大于或等于预置的数值时,则将当前运行的线程切换成当前扫描的线程;
208、当第一参数值与第二参数值之间的差值小于预置的数值时,则扫描下一条线程,返回执行步骤206;
在本发明实施例中,第一处理器核将扫描对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值。
第一处理器核计算第一参数值与第二参数值之间的差值,若该差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程;若该差值小于预置的数值,则扫描下一个线程,返回执行步骤206,即计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值。
需要说明的是,若已扫描的线程数达到预置的数目或者已扫描了预置数目的优先级队列之后,仍未找到可切换的线程,第一处理器核将按现有技术中的方法切换线程,此处不做限定。
209、第一处理器核发生线程上下文切换后,将当前运行的线程的类型标识保存到第一处理器核的当前运行线程描述符中。
在本发明实施例中,第一处理器核发生上下文切换之后,需要更新当前运行线程描述符中保存的线程的类型标识,即第一处理器核将当前运行的线程的类型标识保存到第一处理器核的当前运行线程描述符中。
在本发明实施例中,根据与第一处理器核对应的第二处理器核当前运行的线程的类型查找第一处理器核切换的线程的类型,且在未查找到所需类型的线程时,再根据线程及处理器核的cache访问率确定第一处理器核切换的线程,能够有效的避免具有对应关系的两个处理器核运行相同类型的线程,缓解对共享资源的竞争,提高资源的利用率,改善多核处理器系统的性能。
在本发明实施例中,还可根据处理器核及线程的cache访问率直接确定第一处理器核将要切换的线程,请参阅图3,为本发明实施例中一种线程调度方法的实施例,包括:
301、当第一处理器核发生线程上下文切换时,将第一处理器核当前运行的线程在当前时间片的cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加一;
在本发明实施例中,当第一处理器核发生线程上下文切换时,第一处理器核将当前运行的线程在当前时间片的cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加一,其中,第一处理器核当前运行的线程在当前时间片的cache访问率为第一处理器核在当前时间片运行当前的线程时访问cache的次数与其运行当前线程时运行的指令次数的比值,第一处理器核总的cache访问率为在当前时间片,第一处理器核运行线程的cache访问率的累加值,且每累加一次,累加次数计数值加一。
302、获取与第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值;
在本发明实施例中,第一处理器核将根据第一处理器核的ID与预置的计算方法确定第二处理器核,或者根据第一处理器核的ID查找处理器核分组表确定第二处理器核,在确认第二处理器核之后,从第二处理器核中获得该第二处理器核总的cache访问率及累加次数计数值。
303、根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;
在本发明实施例中,第一处理器核将根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值,具体为:将第一处理器核总的cache访问率除以第一处理器核的累加次数计数值,得到第一处理器核的平均cache访问率,同时将第二处理器核总的cache访问率除以第二处理器核的累加次数计数值,得到第二处理器核的平均cache访问率,最后将第一处理器核的平均cache访问率与第二处理器核的平均cache访问率相加,得到第一参数值。
304、扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;
305、当第一参数值与第二参数值之间的差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程;
在本发明实施例中,第一处理器核将扫描对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值。第一处理器核计算第一参数值与第二参数值之间的差值,若该差值大于或等于预置的数值,则将第一处理器核上当前运行的线程切换成当前扫描的线程。
优选的,在本发明实施例中,还可执行以下步骤:
306、当第一参数值与第二参数值之间的差值小于预置的数值,则扫描下一条线程,返回执行步骤304;
在本发明实施例中,当第一参数值与第二参数值之间的差值小于预置的数值时,第一处理器核将扫描下一条线程,并返回执行步骤304中的内容,即计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值。
307、第一处理器核的线程切换完成后,将当前运行的线程的类型标识保存到第一处理器核的当前运行线程描述符中。
在本发明实施例中,第一处理器核发生上下文切换之后,需要更新当前运行线程描述符中保存的线程的类型标识,即第一处理器核将当前运行的线程的类型标识保存到第一处理器核的当前运行线程描述符中。
在本发明实施例中,当第一处理器核发生线程切换时,通过根据处理器核总的cache访问率及线程在上个时间片的cache访问率确定将要切换的线程,并完成切换,能够有效的避免同一组中的两个处理器核运行线程时产生的共享资源竞争及浪费,有效的提高了共享资源的利用率,改善了多核处理器系统的性能。
请参阅图4,为本发明实施例中一种线程调度装置的实施例,包括:
确定单元401,用于当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;
查找单元402,用于若第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程;或者,若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;
切换单元403,用于若在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程,则将当前运行的线程切换成查找到的线程。
在本发明实施例中,当第一处理器核发生线程上下文切换时,第一处理器核中的确定单元401与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型,若第二处理器核当前运行的是缓存敏感型线程,查找单元402在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程;或者,若第二处理器核当前运行的是缓存非敏感型线程,查找单元402在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;若查找单元402在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程,则切换单元403将前运行的线程切换成查找到的线程。
本发明实施例的在线程调度装置,在一种实现方式下,其物理形态可以是处理器核,处理器核可以是中央处理器(CPU,Central Processing Unit),或者微处理器(MPU,Micro Processor Unit)、或者数字信号处理器(DSP,Digital Signal Processing)、或者图形处理器(GPU,图形处理器)。
可见,通过本发明实施例的线程调度装置,当第一处理器核发生线程上下文切换时,通过根据与该第一处理器核对应的第二处理器核当前运行的线程的类型确定第一处理器核将要运行的线程的类型,并查找该类型的线程完成线程切换,能够有效的避免第一处理器核及第二处理器核在同一个共享资源上产生的资源竞争或浪费,有效的缓解了资源竞争,提高了共享资源的利用率,提高了系统的系统。
为了更好的理解本发明中的装置,请参阅图5,为本发明实施例中一种线程调度装置的另一实施例,包括:
如图4所示的确定单元401,查找单元402,切换单元403,且与图4所实施实例描述的内容相似,此处不再赘述。
其中,确定单元401包括:
处理器核确定单元501,用于根据第一处理器核的身份标识码ID及预置的计算方法确定与第一处理器核具有对应关系的第二处理器核,或者用于根据第一处理器核的ID查找处理器核分组表确定与第一处理器核具有对应关系的第二处理器核;
线程确定单元502,用于从第二处理器核的当前运行线程描述符中获取第二处理器核当前运行的线程的类型,线程的类型包括:缓存敏感型、缓存较敏感型、缓存非敏感型。
在本发明实施例中,线程调度装置还包括:
累加单元503,将第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加一;
更新单元504,用于第一处理器核的线程切换完成后,将当前运行的线程的类型标识保存到第一处理器核的当前运行线程描述符中;
计算单元505,用于若在第一处理器核对应的处于就绪状态的待运行线程的集合中未查找到所需类型的线程,则根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率;根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率;并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;
扫描计算单元506,用于扫描第一处理器核处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;
处理单元507,用于当第一参数值与第二参数值之间的差值大于或等于预置的数值时,则将当前运行的线程切换成当前扫描的线程,及用于当第一参数值与第二参数值之间的差值小于预置的数值,则扫描下一条线程,返回到扫描计算单元506。
在本发明实施例中,当第一处理器核发生上下文线程切换时,确定单元401中的处理器核确定单元501将根据第一处理器核的身份标识码ID及预置的计算方法确定与第一处理器核具有对应关系的第二处理器核,或者用于根据第一处理器核的ID查找处理器核分组表确定与第一处理器核具有对应关系的第二处理器核,并由确定单元401中的线程确定单元502从第二处理器核的当前运行线程描述符中获取第二处理器核当前运行的线程的类型;且累加单元503将当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加一;若第二处理器核当前运行的是缓存敏感型线程,查找单元402在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程;或者,若第二处理器核当前运行的是缓存非敏感型线程,查找单元402在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;若查找单元402在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程,则切换单元403将当前运行的线程切换成查找到的线程。若查找单元402在第一处理器核对应的处于就绪状态的待运行线程的集合中未查找一个缓存敏感型线程,计算单元505根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;再由扫描计算单元506扫描第一处理器核处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;当第一参数值与第二参数值之间的差值大于或等于预置的数值时,处理单元507将当前运行的线程切换成当前扫描的线程,及当第一参数值与第二参数值之间的差值小于预置的数值,则扫描下一条线程,返回到扫描计算单元506。最后,第一处理器核的线程切换完成后,更新单元504将当前运行的线程的类型标识保存到第一处理器核的当前运行线程描述符中。
本发明实施例的在线程调度装置,在一种实现方式下,其物理形态可以是处理器核,处理器核可以是中央处理器(CPU,Central Processing Unit),或者微处理器(MPU,Micro Processor Unit)、或者数字信号处理器(DSP,Digital Signal Processing)、或者图形处理器(GPU,图形处理器)。
可见,通过本发明实施例的线程调度装置,根据与第一处理器核对应的第二处理器核当前运行的线程的类型查找第一处理器核切换的线程的类型,且在未查找到所需类型的线程时,再根据线程及处理器核的cache访问率确定第一处理器核切换的线程,能够有效的避免具有对应关系的两个处理器核运行相同类型的线程,缓解对共享资源的竞争,提高资源的利用率,改善多核处理器系统的性能。
请参阅图6,为本发明实施例中另一种线程调度装置的实施例,包括:
第一累加单元601,用于当第一处理器核发生线程上下文切换时,将第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加一;
第一获取单元602,用于获取与第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值;
第一计算单元603,用于根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;
第一扫描计算单元604,用于扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片内的cache访问率与第二处理器核当前运行的线程在上个时间片内的cache访问率的和,作为第二参数值;
第一处理单元605,用于当第一参数值与第二参数值之间的差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程。
优选的,在本发明实施例中,线程调度装置还可以包括:
第二处理单元606,用于当第一参数值与第二参数值之间的差值小于预置的数值,则扫描下一条线程,返回到第一扫描计算单元604;
第一更新单元607,用于第一处理器核的线程切换完成后,将当前运行的线程的类型标识保存到第一处理器核的当前运行线程描述符中。
优选的,本发明实施例中,第一获取单元602具体包括:
核确定单元608,用于根据第一处理器核的身份标识码ID及预置的计算方法确定与第一处理器核具有对应关系的第二处理器核,或者,根据第一处理器核的ID查找处理器核分组表确定与第一处理器核具有对应关系的第二处理器核;
数值获取单元609,用于从第二处理器核中获得第二处理器核总的cache访问率及累加次数计数值。
在本发明实施例中,当第一处理器核发生线程上下文切换时,第一累加单元601将第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加一;并由第一获取单元602获取与第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值,具体为:由核确定单元608根据第一处理器核的身份标识码ID及预置的计算方法确定与第一处理器核具有对应关系的第二处理器核,或者,根据第一处理器核的ID查找处理器核分组表确定与第一处理器核具有对应关系的第二处理器核;再由数值获取单元609从第二处理器核中获得第二处理器核总的cache访问率及累加次数计数值,接着,第一计算单元603则根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值,及第一扫描计算单元604扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;当第一参数值与第二参数值之间的差值大于或等于预置的数值,第一处理单元605则将当前运行的线程切换成当前扫描的线程,当第一参数值与第二参数值之间的差值小于预置的数值,第二处理单元606则扫描下一条线程,返回到第一扫描计算单元604,最后,第一处理器核的线程切换完成后,第一更新单元607将当前运行的线程的类型标识保存到第一处理器核的当前运行线程描述符中。
本发明实施例的在线程调度装置,在一种实现方式下,其物理形态可以是处理器核,处理器核可以是中央处理器(CPU,Central Processing Unit),或者微处理器(MPU,Micro Processor Unit)、或者数字信号处理器(DSP,Digital Signal Processing)、或者图形处理器(GPU,图形处理器)。
可见,通过本发明实施例的线程调度装置,当第一处理器核发生线程切换时,通过根据处理器核总的cache访问率及线程的cache访问率确定将要切换的线程,并完成切换,能够有效的避免同一组中的两个处理器核运行线程时产生的共享资源竞争及浪费,有效的提高了共享资源的利用率,改善了多核处理器系统的性能。
请参阅图7,为本发明实施例的多核处理器系统的逻辑架构示意图,本发明实施例的多核处理器系统可以包括:
第一处理器核701和第二处理器核702,以及共享的硬件资源703;
第一处理器核701和第二处理器核702访问共享的硬件资源703;
第一处理器核701用于:当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;若第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程,将当前运行的线程切换成查找到的线程;
或者,
第一处理器核701用于:当第一处理器核发生线程上下文切换时,将第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到总的cache访问率中,将累加次数计数值加一;获取与第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值;根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;当第一参数值与第二参数值之间的差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程。
在本发明实施例中,共享的硬件资源703包括:共享的存储设备和/或共享的硬件高速缓存;
需要说明的是,在本发明实施例中,以多核处理器系统包括第一处理器核和第二处理器核来便于说明,以及,本发明实施例中,是以站在第一处理器核的角度来阐述多核处理器系统中的处理器核的功能,应当理解的是,第二处理器核的功能参照第一处理器核的功能,只是换个角度站在第二处理器核的角度来说明,这里不再赘述。应当理解的是,本发明实施例的多核处理器系统是以第一处理器核和第二处理器核作为代表来说明,本发明实施例的多核处理器系统可以包括多个处理器核,这里的多个处理器核,可以是属于同一个处理器,也可以是分别属于不同的处理器;
如图7所示的本发明实施例的多核处理器系统,在实际物理部署时,可以理解为,以多核处理器系统包括一个处理器,且该处理器中包括第一处理器核和第二处理器核,或者,以多核处理器系统包括两个处理器,其中一个处理器包括第一处理器核,另一个处理器包括第二处理器核。
需要说明的是,在本发明实施例中,当第一处理器核和第二处理器核分别属于不同的处理器时,该第一处理器核和第二处理器核可以访问共享的存储设备;
当第一处理器核和第二处理器核属于同一个处理器时,该第一处理器核和第二处理器可以访问共享的存储设备和/或共享的高速缓冲存储器。
在实际应用中,多核处理器系统可以包括:一个或多个处理器(下图8-a,8-b和8-c中以两个处理器示意,但不限于此,也可以是包括一个处理器,该处理器中包括多个处理器核),其中,每个处理器包括一个或多个处理器核(下图8-a,8-b和8-c中以两个处理器核示意),可选的,所述每个处理器可以进一步包括:共享的硬件高速缓存(如图8-a和8-c所示,例如LLC:last levelcaches,最后一级缓存),所述处理器通过互联网络访问存储设备,这里的存储设备可以是共享给多个处理器核的,这里的存储设备可以是一个或多个(下图8-a,8-b和8-c中以一个存储设备示意,但不限于此)。
需要说明的是,在本发明实施例中,处理器之间通过互联网络访问共享的存储设备,该互联网络可以是总线或者是互联芯片,且该共享的存储设备可以是内存,如memory,或者是外存,如磁盘。
在本发明实施例中,多核处理器系统中包含的共享的硬件资源可以是共享的存储设备,或者共享的硬件高速缓存,或者是共享的存储设备和共享的硬件高速缓存,其中,共享的存储设备在处理器外部,通过总线与处理器核连接,共享的硬件高速缓存在处理器内部。
请参阅图8-a,为本发明实施例中,多核处理器系统的一个物理架构示意图,其中,多核处理器系统中包含共享的硬件高速缓存。
请参阅图8-b,为本发明实施例中,多核处理器系统的一个物理架构示意图,其中多核处理器系统中包含共享的存储设备。
请参阅图8-c,为本发明实施例中,多核处理器系统的一个物理架构示意图,其中多核处理器系统中包含共享的硬件高速缓存和共享的存储设备。
应当理解的是,在一种实现方式下,本发明实施例的处理器核可以包括调度逻辑单元(如图8-a,图8-b,图8-c所示),这里的调度逻辑单元可以是软件实现的,也可以是硬件实现的,也可以是软硬结合实现的。如果调度逻辑单元是软件实现的话,可以理解成,当通用的处理器核通过互联网络访问内存,在加载并执行该内存中存储的一段调度程序代码后,则具有本发明实施例的处理器核的功能。应当理解的是,本发明实施例的处理器核上运行有操作系统,该操作系统具体可以是Linux系统,或者Unix系统,也可以是Windows等具有机器硬件和软件资源管理控制系统,所述操作系统之上运行有前述的调度程序,所述调度程序表现为线程(thread)。
需要说明的是,在本发明实施例中,图4,图5及图6所示的在线程调度装置,在一种实现方式下,其物理形态可以是处理器核,可以通过在处理器核中包含调度逻辑单元(图8-a,8-b,8-c中用方框示意)实现,且该调度逻辑单元可以是软件实现的,也可以是硬件实现的,也可以是软硬结合实现的。或者,在另一种实现方式下,图4,图5及图6所示的在线程调度装置对应于处理器核中包含调度逻辑单元(图8-a,8-b,8-c中用方框示意)。
综上所述,本发明实施例是基于线程类型的调度方法,在多核处理器系统中,同一个处理器中的多个处理器核共享硬件高速缓存,如LLC,非同一个处理器中的多核处理器共享存储设备,在现有技术中,当同一个处理器中的多个处理器核共享同一LLC时,若同时运行缓存敏感性线程,将产生LLC竞争,当同时运行缓存非敏感型线程时,将产生LLC浪费,在本发明实施例提供的多核处理器系统中,线程调度装置能够根据与该处理器核共享同一资源的的处理器核所运行的线程的类型,然后从该处理器核对应的处于就绪状态的待运行线程中选择线程并运行,使得同一组处理器核上能够运行不同类型的线程。该方法缓解了共享资源竞争,避免了共享资源浪费提高了共享资源的利用率,使得系统性能得到良好的改善。
需要说明的是,本发明实施例不限于竞争资源中的LLC及内存控制器,还适用于实现多核处理器系统中其他的竞争资源。
本发明实施例不限于计算机,适用于其他具有资源竞争协调调度的任何装置。
本发明实施例不限于以提高性能为目的顺序调度,还适用于其他以顺序调度为方法手段的场景。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的一种线程调度方法、线程调度装置及多核处理器系统进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种线程调度方法,其特征在于,包括:
当第一处理器核发生线程上下文切换时,确定与所述第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;
若所述第二处理器核当前运行的是缓存敏感型线程,则在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若所述第二处理器核当前运行的是缓存非敏感型线程,则在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;
当在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,将当前运行的线程切换成查找到的线程;
其中,对于n个线程,确定第i个线程的线程类型的方式为:
按照如下公式分别计算所述n个线程的密集型指数及敏感性指数;
其中,n和i为正整数,i∈(1,n);
其中,dij表示将线程j和线程i同时运行的性能损耗;
根据线程的密集型指数及敏感性指数分别计算各线程的缓存敏感值,具体的计算公式为:
Hi=tan(线程i的敏感性指数/线程i的密集性指数),其中i∈(1,n);
若|Hi-1|≤预置的数值,则确定线程i为缓存较敏感型线程;
若|Hi-1|>预置的数值,则确定线程i为缓存敏感型线程或者缓存非敏感型线程,且需要进一步确定线程i的类型,进一步确定的方法为:若线程i的密集性指数大于或等于该n个线程的密集性指数的平均值,则确定线程i为缓存敏感型线程,若线程i的密集性指数小于该n个线程的密集性指数的平均值时,则确定线程i为缓存非敏感型线程。
2.根据权利要求1中所述的方法,其特征在于,所述确定与所述第一处理器核具有对应关系的第二处理器核当前运行的线程的类型,包括:
根据所述第一处理器核的身份标识码ID及预置的计算方法确定与所述第一处理器核具有对应关系的第二处理器核;
从所述第二处理器核的当前运行线程描述符中获取所述第二处理器核当前运行的线程的类型,所述线程的类型包括:缓存敏感型、缓存较敏感型、缓存非敏感型。
3.根据权利要求1中所述的方法,其特征在于,所述确定与所述第一处理器核具有对应关系的第二处理器核当前运行的线程的类型,包括:
根据所述第一处理器核的ID查找处理器核分组表,确定与所述第一处理器核具有对应关系的第二处理器核;
从所述第二处理器核的当前运行线程描述符中获取所述第二处理器核当前运行的线程的类型,所述线程的类型包括:缓存敏感型、缓存较敏感型、缓存非敏感型。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
将所述第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到所述第一处理器核总的cache访问率中,并将累加次数计数值加一。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当在所述第一处理器核对应的处于就绪状态的待运行线程的集合中未查找到所需类型的线程时,根据所述第一处理器核总的cache访问率及累加次数计数值,计算所述第一处理器核的平均cache访问率,根据所述第二处理器核总的cache访问率及累加次数计数值,计算所述第二处理器核的平均cache访问率,并将所述第一处理器核的平均cache访问率和所述第二处理器核的平均cache访问率求和作为第一参数值;
扫描所述第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与所述第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;
当所述第一参数值与第二参数值之间的差值大于或等于预置的数值时,则将当前运行的线程切换成当前扫描的线程。
6.根据权利要求5所述的方法,其特征在于,根据所述第一处理器核总的cache访问率及累加次数计数值,计算所述第一处理器核的平均cache访问率,根据所述第二处理器核总的cache访问率及累加次数计数值,计算所述第二处理器核的平均cache访问率,并将所述第一处理器核的平均cache访问率和所述第二处理器核的平均cache访问率求和作为第一参数值包括:
将所述第一处理器核总的cache访问率除以所述第一处理器核的所述累加次数计数值,得到所述第一处理器核的平均cache访问率;
将所述第二处理器核总的cache访问率除以所述第二处理器核的累加次数计数值,得到所述第二处理器核的平均cache访问率;
将所述第一处理器核平均cache访问率与所述第二处理器核的平均cache访问率相加,得到所述第一参数值。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当所述第一参数值与第二参数值之间的差值小于预置的数值,则扫描下一条线程,并返回执行所述计算当前扫描的线程在上个时间片的cache访问率与所述第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值的步骤。
8.根据权利要求1至3任一项所述的方法,其特征在于,
所述第一处理器核完成线程切换后,将当前运行的线程的类型标识保存到所述第一处理器核的当前运行线程描述符中。
9.一种线程调度装置,其特征在于,包括:
确定单元,用于当第一处理器核发生线程上下文切换时,确定与所述第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;
查找单元,用于若所述第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若所述第二处理器核当前运行的是缓存非敏感型线程,则在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;
切换单元,用于当在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,将当前运行的线程切换成查找到的线程;
其中,对于n个线程,确定第i个线程的线程类型的方式为:
按照如下公式分别计算所述n个线程的密集型指数及敏感性指数;
其中,n和i为正整数,i∈(1,n);
其中,dij表示将线程j和线程i同时运行的性能损耗;
根据线程的密集型指数及敏感性指数分别计算各线程的缓存敏感值,具体的计算公式为:
Hi=tan(线程i的敏感性指数/线程i的密集性指数),其中i∈(1,n);
若|Hi-1|≤预置的数值,则确定线程i为缓存较敏感型线程;
若|Hi-1|>预置的数值,则确定线程i为缓存敏感型线程或者缓存非敏感型线程,且需要进一步确定线程i的类型,进一步确定的方法为:若线程i的密集性指数大于或等于该n个线程的密集性指数的平均值,则确定线程i为缓存敏感型线程,若线程i的密集性指数小于该n个线程的密集性指数的平均值时,则确定线程i为缓存非敏感型线程。
10.根据权利要求9所述的装置,其特征在于,所述确定单元包括:
处理器核确定单元,用于根据所述第一处理器核的身份标识码ID及预置的计算方法确定与所述第一处理器核具有对应关系的第二处理器核,或者用于根据所述第一处理器核的ID查找处理器核分组表确定与所述第一处理器核具有对应关系的第二处理器核;
线程确定单元,用于从所述第二处理器核的当前运行线程描述符中获取所述第二处理器核当前运行的线程的类型,所述线程的类型包括:缓存敏感型、缓存较敏感型、缓存非敏感型。
11.根据权利要求9或10所述的装置,其特征在于,所述装置还包括:
累加单元,将所述第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到所述第一处理器核总的cache访问率中,并将累加次数计数值加一;
更新单元,用于所述第一处理器核完成线程切换后,将当前运行的线程的类型标识保存到所述第一处理器核的当前运行线程描述符中。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
计算单元,用于当在所述第一处理器核对应的处于就绪状态的待运行线程的集合中未查找到所需类型的线程时,根据所述第一处理器核总的cache访问率及累加次数计数值,计算所述第一处理器核的平均cache访问率,根据所述第二处理器核总的cache访问率及累加次数计数值,计算所述第二处理器核的平均cache访问率,并将所述第一处理器核的平均cache访问率和所述第二处理器核的平均cache访问率求和作为第一参数值;
扫描计算单元,用于扫描所述第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片中的cache访问率与所述第二处理器核当前运行的线程在上个时间片中的cache访问率的和,作为第二参数值;
处理单元,用于当所述第一参数值与第二参数值之间的差值大于或等于预置的数值时,则将所述当前运行的线程切换成当前扫描的线程,及用于当所述第一参数值与第二参数值之间的差值小于预置的数值,则扫描下一条线程,返回到所述扫描计算单元。
13.一种多核处理器系统,其特征在于,包括:
第一处理器核和第二处理器核,以及共享的硬件资源;
所述第一处理器核和第二处理器核访问所述共享的硬件资源;
所述第一处理器核用于:当所述第一处理器核发生线程上下文切换时,确定与所述第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;若所述第二处理器核当前运行的是缓存敏感型线程,则在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者若所述第二处理器核当前运行的是缓存非敏感型线程,则在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;当在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程,将当前运行的线程切换成查找到的线程;
其中,对于n个线程,确定第i个线程的线程类型的方式为:
按照如下公式分别计算所述n个线程的密集型指数及敏感性指数;
其中,n和i为正整数,i∈(1,n);
其中,dij表示将线程j和线程i同时运行的性能损耗;
根据线程的密集型指数及敏感性指数分别计算各线程的缓存敏感值,具体的计算公式为:
Hi=tan(线程i的敏感性指数/线程i的密集性指数),其中i∈(1,n);
若|Hi-1|≤预置的数值,则确定线程i为缓存较敏感型线程;
若|Hi-1|>预置的数值,则确定线程i为缓存敏感型线程或者缓存非敏感型线程,且需要进一步确定线程i的类型,进一步确定的方法为:若线程i的密集性指数大于或等于该n个线程的密集性指数的平均值,则确定线程i为缓存敏感型线程,若线程i的密集性指数小于该n个线程的密集性指数的平均值时,则确定线程i为缓存非敏感型线程。
14.根据权利要求13所述的系统,其特征在于,所述共享的硬件资源包括:共享的存储设备和/或共享的硬件高速缓存;
当所述第一处理器核和所述第二处理器核分别属于不同的处理器时,所述第一处理器核和第二处理器核访问所述共享的硬件高速缓存;
或者,
当所述第一处理器核和所述第二处理器核属于同一个处理器时,所述第一处理器核和第二处理器访问所述共享的存储设备和/或共享的硬件高速缓存。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110362773.0A CN102495762B (zh) | 2011-11-16 | 2011-11-16 | 一种线程调度方法、线程调度装置及多核处理器系统 |
CN201310134356.XA CN103197977B (zh) | 2011-11-16 | 2011-11-16 | 一种线程调度方法、线程调度装置及多核处理器系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110362773.0A CN102495762B (zh) | 2011-11-16 | 2011-11-16 | 一种线程调度方法、线程调度装置及多核处理器系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310134356.XA Division CN103197977B (zh) | 2011-11-16 | 2011-11-16 | 一种线程调度方法、线程调度装置及多核处理器系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102495762A CN102495762A (zh) | 2012-06-13 |
CN102495762B true CN102495762B (zh) | 2014-04-02 |
Family
ID=46187589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110362773.0A Expired - Fee Related CN102495762B (zh) | 2011-11-16 | 2011-11-16 | 一种线程调度方法、线程调度装置及多核处理器系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102495762B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378572B2 (en) * | 2012-08-17 | 2016-06-28 | Intel Corporation | Shared virtual memory |
CN103856349A (zh) * | 2012-12-07 | 2014-06-11 | 华为技术有限公司 | 多核路由器的版本升级处理方法及多核路由器 |
CN104239228B (zh) * | 2013-06-20 | 2017-11-03 | 华为技术有限公司 | 一种缓存冲突检测方法、装置及系统 |
CN109709806B (zh) * | 2018-12-27 | 2022-07-19 | 杭州铭展网络科技有限公司 | 一种自适应数据采集系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504618A (zh) * | 2009-02-26 | 2009-08-12 | 浙江大学 | 面向多核处理器的实时线程迁移方法 |
CN101673223A (zh) * | 2009-10-22 | 2010-03-17 | 同济大学 | 基于片上多处理器的线程调度实现方法 |
CN101923491A (zh) * | 2010-08-11 | 2010-12-22 | 上海交通大学 | 多核环境下线程组地址空间调度和切换线程的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
-
2011
- 2011-11-16 CN CN201110362773.0A patent/CN102495762B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504618A (zh) * | 2009-02-26 | 2009-08-12 | 浙江大学 | 面向多核处理器的实时线程迁移方法 |
CN101673223A (zh) * | 2009-10-22 | 2010-03-17 | 同济大学 | 基于片上多处理器的线程调度实现方法 |
CN101923491A (zh) * | 2010-08-11 | 2010-12-22 | 上海交通大学 | 多核环境下线程组地址空间调度和切换线程的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102495762A (zh) | 2012-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9983903B2 (en) | Parallel execution of parsed query based on a concurrency level | |
CN106991011B (zh) | 基于cpu多线程与gpu多粒度并行及协同优化的方法 | |
US9594521B2 (en) | Scheduling of data migration | |
US8209697B2 (en) | Resource allocation method for a physical computer used by a back end server including calculating database resource cost based on SQL process type | |
EP2596430A1 (en) | A system and method for the parallel execution of database queries over cpus and multi core processors | |
CN102495762B (zh) | 一种线程调度方法、线程调度装置及多核处理器系统 | |
US11940915B2 (en) | Cache allocation method and device, storage medium, and electronic device | |
JP2022160691A (ja) | 複数の計算コア上のデータドリブンスケジューラ | |
US20230128085A1 (en) | Data aggregation processing apparatus and method, and storage medium | |
Aji et al. | Haggis: turbocharge a MapReduce based spatial data warehousing system with GPU engine | |
US20130138923A1 (en) | Multithreaded data merging for multi-core processing unit | |
CN104461957A (zh) | 一种异构多核cpu共享片上高速缓存的方法及装置 | |
CN113010533B (zh) | 基于加锁限制的数据库访问方法、系统、终端及存储介质 | |
US11392388B2 (en) | System and method for dynamic determination of a number of parallel threads for a request | |
US11734007B2 (en) | Address generation method, related apparatus, and storage medium | |
CN107402807A (zh) | 在计算机系统中有效提升多任务执行效率的方法、系统和处理器 | |
US20200026669A1 (en) | Memory system | |
CN115905040A (zh) | 计数器的处理方法、图形处理器、设备及存储介质 | |
AU2019241002A1 (en) | Transaction processing method and system, and server | |
US11442862B2 (en) | Fair prefetching in hybrid column stores | |
CN103197977A (zh) | 一种线程调度方法、线程调度装置及多核处理器系统 | |
CN110333935B (zh) | 事务请求处理方法及装置 | |
CN110837419B (zh) | 基于弹性批处理的推理引擎系统、方法及电子设备 | |
CN110647357B (zh) | 同步多线程处理器 | |
Ni et al. | Parallel bloom filter on xeon phi many-core processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140402 Termination date: 20161116 |