资源管理的方法、装置、处理器及设备与流程

文档序号:28262708发布日期:2021-12-31 16:47阅读:141来源:国知局
资源管理的方法、装置、处理器及设备与流程

1.本技术涉及通信领域,特别涉及一种资源管理的方法、装置、处理器及设备。


背景技术:

2.服务器的中央处理器(central processing unit,cpu)包括至少一个处理器核,每个处理器核可以运行至少一个轮询线程,每个轮询线程与服务器中的一个共享内存绑定。服务器的数据产生模块(如网卡)产生数据,将数据保存到共享内存。与该共享内存绑定的每个轮询线程可以周期性的检测该共享内存是否存储有数据,如果检测该共享内存中有数据,则获取该数据并对该数据进行处理。目前共享内存中并不是无时无刻都有数据,但与该共享内存绑定的轮询线程却始终不停地检测共享内存中是否存在数据,占用了较多处理器的计算资源和功耗,导致处理器的资源的浪费。


技术实现要素:

3.本技术提供了一种资源管理的方法及装置,以减少处理器的资源浪费。
4.第一方面,本技术提供了一种资源管理方法,所述方法应用于设备中,该设备包括至少一个处理器核。在该方法中,检测第一处理器核上运行的线程的状态,第一处理器核是该至少一个处理器核中的任意一个。当检测第一处理器核上运行的线程满足预设条件时,控制第一处理器核工作在低功耗模式,其中,第一处理器核工作在低功耗模式下第一处理器核的工作频率小于频率阈值。在控制第一处理器核工作在低功耗模式时,第一处理器核上运行的各线程不会在占用计算资源,且第一处理器核的工作频率小于频率阈值,使得第一处理器核的功耗很低,节省了第一处理器核所在处理器的计算资源以及降低该处理器的功耗。
5.在一种可能的实现方式中,预设条件包括第一处理器核上运行的线程的状态均为挂起状态。这样保证第一处理器核上运行的线程在较长时间不会被唤醒,从而保证在控制第一处理器核工作在低功耗模式后,不会很快被唤醒。
6.在另一种可能的实现方式中,第一处理器核上运行的线程包括第一线程,第一线程与该设备包括的共享内存存在绑定关系,第一线程用于检测该共享内存是否存储数据,共享内存是设备的内存中的一个内存空间。在第一线程检测出该共享内存无数据的持续时间超过第一时间阈值时,第一线程的状态被设为挂起状态。其中,在第一线程检测出该共享内存无数据的持续时间超过第一时间阈值时,表明在较长时间内不会向共享内存存入数据,在第一线程被设为挂起状态后,第一线程会释放占用的计算资源,从而避免计算资源的浪费。
7.在另一种可能的实现方式中,第一线程检测该共享内存的方式为周期性检测或实时检测。
8.在另一种可能的实现方式中,在检测出第一处理器核上的各线程处于挂起状态的持续时间超过第二时间阈值的情况下,控制第一处理器核工作在低功耗模式。这样保证第
一处理器核上运行的线程在较长时间不会被唤醒,从而可以较长时间控制第一处理器核工作在低功耗模式。
9.在另一种可能的实现方式中,当检测出第二线程处于挂起状态的持续时间超过第二时间阈值时,将第二线程迁移到第二处理器核上,第二线程是第一处理器核上运行的任一线程,第二处理器核为该设备中已工作在低功耗模式的处理器核,第二处理器核的负载低于负载阈值。由于第二处理器核的负载低于负载阈值,这样保证在第二线程唤醒时,可以减小与第二线程竞争计算资源的其他线程数目,使第二线程能够尽快竞争到计算资源。
10.在另一种可能的实现方式中,在第一处理器核的使用率低于使用率阈值时,将第三线程迁移到第三处理器核,第三线程是第一处理器核上的处于非挂起状态的线程,第一处理器核的使用率用于指示第一处理器核的计算资源的有效利用率,第三处理器核是该设备中工作在正常工作模式下的处理器核。这样能够尽快使第一处理器核上的各线程处于挂起状态,尽快控制第一处理器核工作在低功耗模式。
11.在另一种可能的实现方式中,将设备中的多个处理器核上的处于非挂起状态的线程合并到多个处理器核中的部分处理器核上。该部分处理器核可以位于一个或多个处理器上,这样可以将非挂起状态的线程集中到一个处理器或多个处理器,从而能够控制设备中的其他处理器工作在低功耗模式。
12.在另一种可能的实现方式中,在设备的共享内存中存在数据时,控制第一处理器核工作在正常工作模式,以及将第一线程的状态设为正常工作状态,其中,第一处理器核工作在正常工作模式下第一处理器核的工作频率大于或等于频率阈值。从而可以保证第一线程可以正常处理任务。
13.在另一种可能的实现方式中,接收设备包括的数据产生模块触发的通知命令,该通知命令是数据产生模块在向共享内存中存储数据时触发的,该通知命令包括共享内存的标识,该通知命令包括用于指示共享内存中存在数据的命令。由于能够接收设备包括的数据产生模块触发的通知命令,保证在共享内存中有数据时,可以立即唤醒第一线程来处理数据。
14.在另一种可能的实现方式中,通知命令包括软件信号和硬件信号中至少一种。
15.在另一种可能的实现方式中,设备包括的处理器核为虚拟处理器核或物理处理器核。
16.第二方面,本技术提供了一种资源管理的装置,用于执行第一方面或第一方面的任意一种可能实现方式中的方法。具体地,所述装置包括用于执行第一方面或第一方面的任意一种可能实现方式的方法的单元。
17.第三方面,本技术提供了一种资源管理的装置,所述装置包括:处理器、存储器和通信接口。其中,所述处理器、所述存储器和所述通信接口之间可以通过总线系统相连。所述存储器用于存储一个或多个程序,所述处理器用于执行所述存储器中的一个或多个程序,使得所述检测装置完成第一方面或第一方面的任意可能实现方式中的方法。
18.第四方面,本技术提供了一种处理器,所述处理器包括处理器核,所述处理器核用于完成第一方面或第一方面的任意可能实现方式中的方法。
19.第五方面,本技术提供了一种设备,所述设备包括处理器,所述处理器包括处理器核,所述处理器核用于完成第一方面或第一方面的任意可能实现方式中的方法。
20.第六方面,本技术提供了一种计算机可读存储介质,计算机可读存储介质中存储有程序代码,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面的任意可能实现方式中的方法。
21.第七方面,本技术提供了一种包含程序代码的计算机程序产品,当其在处理器包括的处理器核上运行时,使得所述处理器核执行上述第一方面或第一方面的任意可能实现方式。
22.第八方面,本技术提供了一种芯片,包括存储器和处理器,存储器用于存储计算机指令,处理器包括处理器核,所述处理器核用于从存储器件中调用并运行该计算机指令,以执行上述第一方面及其上述第一方面任意可能的实现方式中的方法。
23.本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
24.图1是本技术实施例提供的资源调度场景的示意图;
25.图2是本技术实施例提供的一种设备的结构示意图;
26.图3是本技术实施例提供的另一种设备的结构示意图;
27.图4是本技术实施例提供的一种资源管理方法流程图;
28.图5是本技术实施例提供的迁移线程的示意图;
29.图6是本技术实施例提供的合并线程的示意图;
30.图7是本技术实施例提供的一种音视频会议的数据处理过程示意图;
31.图8是本技术实施例提供的一种资源管理装置结构示意图;
32.图9是本技术实施例提供的另一种设备结构示意图。
具体实施方式
33.下面将结合附图对本技术实施方式作进一步地详细描述。
34.本技术实施例适用于包括生产者和消费者的资源调度场景,消费者与共享内存存在绑定关系,该共享内存可以在生产者和消费者之间共享,生产者和消费者均可读写该共享内存。消费者具有轮询共享内存的功能,所谓轮询共享内存的功能是指消费者周期性地检测共享内存中是否有数据。
35.生产者能够利用共享内存存储数据,当消费者检测出共享内存中有数据时,获取该数据并处理该数据。
36.需要说明的是:在该场景中生产者不是无时无刻地向共享内存中存入数据,生产者根据上层应用的需求将数据存储至共享内存。
37.可选的,参见图1,生成者又可称数据产生模块1,消费者可以为线程2,例如消费者可以为轮询线程。线程2与共享内存3存在绑定关系,线程2能够周期地检测共享内存3是否存在数据,数据产生模块1获取数据并向共享内存3存入数据,线程2从共享内存3中检测到数据时,获取并处理该数据。
38.可选的,图1所示的数据产生模块1、线程2和共享内存3可位于一个设备中,共享内存3是该设备的内存中的一个存储空间,共享内存3占用该内存中的一段内存地址。线程2与
该共享内存3绑定是指线程2与该段内存地址绑定,例如,线程2与该共享内存3的起始地址和结束地址绑定,线程2可访问该段内存地址。
39.可选的,该设备中可包括一个或多个线程2,该设备的内存中包括一个或多个共享内存3。每个共享内存3可与该设备中的一个或多个线程2绑定。也就是说:该一个或多个线程2均可检测该共享内存3中是否有数据。
40.可选的,一个线程2可以与一个共享内存3绑定,也可以与多个共享内存3绑定。
41.可选的,该设备为物理设备或虚拟设备,例如该设备为服务器、网络设备等物理设备,或者,该设备为虚拟机或容器等虚拟设备,网络设备可以为交换机等。
42.可选的,在该设备为物理设备的情况下,数据产生模块1可以为有计算能力的设备,如处理器、网卡或该设备上运行的进程或线程等。例如,在数据产生模块1为网卡时,网卡接收数据,向一个共享内存3中存入数据,与该共享内存3绑定的线程2检测该共享内存3,从该共享内存3中检测到该数据时,获取并处理该数据。
43.可选的,在该设备为虚拟设备的情况下,即该设备为虚拟机或容器等,数据产生模块可以为运行在该虚拟机或容器中的进程或线程等。
44.其中,该设备可包括至少一个数据生产生模块1,包括至少一个共享内存3,以及包括与任意一个共享内存3绑定至少一个线程2。
45.参见图2,该设备包括至少一个处理器,每个处理器包括至少一个处理器核。该设备中的线程运行在处理器核上,一个处理器核可运行一个或多个线程2。对于该设备的内存包括的任意一个共享内存3,与该共享内存3绑定的至少一个线程2可以运行在一个处理器核上,或者,可以运行在不同的处理器核上。在该至少一个线程2运行在不同的处理器核上的情况下,该不同的处理器核可以位于同一个处理器上或位于不同的处理器上。
46.例如,在图2中,该设备包括第一处理器4和第二处理器5,第一处理器4包括两个处理器核,该两个处理器核分别为处理器核41和处理器核42。第二处理器5包括处理器核51。处理器核41上运行了线程21和线程22,处理器核42上运行线程23和线程24,处理器核51上运行线程25和线程26。
47.可选的,该六个线程可以与不同的共享内存3绑定,或者,该六个线程中的部分线程与一个共享内存3绑定。例如,假设该设备的内存中包括三个共享内存3,线程21、线程22和线程23均与其中一个共享内存3绑定,线程24和线程25与另一个共享内存3绑定,线程26与剩下的一个共享内存3绑定。
48.参见图2,在本技术实施例中,在该设备中增加了调度模块6,对于该设备中的任意一个处理器核,为了便于说明,称该处理器核为第一处理器核。该调度模块6检测第一处理器核上运行的线程的状态;当检测出第一处理器核上运行的线程满足预设条件时,控制第一处理器核工作在低功耗模式,其中,第一处理器核工作在低功耗模式下第一处理器核的工作频率小于频率阈值,从而降低第一处理器的功耗。其中,检测第一处理器核以及控制第一处理器核的详细实现过程将在后图4所示的实施例进行详细说明,在此先不详细介绍。
49.可选的,调度模块6可以运行在该设备的一个处理器核上,此时该调度模块6为该处理器核,或者,调度模块6可以与设备中的至少一个线程一起运行在一个处理器核上,此时该调度模块可为运行在该处理器核上的一个线程或进程等。
50.其中,需要说明的是:处理器核可以为物理处理器核,例如参见图2,第一处理器4
和第二处理器5均为cpu,第一处理器4包括的处理器核41和处理器核42可以为cpu核,或者,参见图3,处理器核可以为虚拟物理器核,但每个虚拟物理器核也可运行在一个或多个物理处理器核上。例如,在图3中,该设备包括虚拟处理器核1、虚拟处理器核2和虚拟处理器核3,虚拟处理器核1运行在物理处理器核41上,虚拟处理器核2和虚拟处理器核3运行在物理处理器核42上。
51.参见图4,本技术实施例提供了一种资源管理方法,该方法应用于如图2或3所示的设备中,该设备包括至少一个处理器核,包括:
52.步骤401:检测第一处理器核上运行的线程的状态,第一处理器核是该至少一个处理器核中的任意一个。
53.第一处理器核上可能运行一个或多个线程,对于第一处理器核上的任意一个线程,为了便于说明,称该一个线程为第一线程。第一线程具有轮询功能,第一线程与一个共享内存绑定,所谓轮询功能是指第一线程周期地检测与其绑定的共享内存中是否有数据,该共享内存是该设备的内存中的一个存储空间。
54.第一线程的状态可以由第一线程来设置。可选的,第一线程设置自身的状态可以为:
55.第一线程在持续检测与其绑定的共享内存中无数据的时间长度达到第一时间阈值时,将自身的状态设置为挂起状态。
56.可选的,第一线程可周期性地检测与其绑定的共享内存中是否有数据,或者,第一线程可实时检测与其绑定的共享内存中是否数据。
57.第一线程在将自身的状态设置为挂起状态后就不会竞争第一处理核上的计算资源。而第一线程处于非挂起状态时,会竞争第一处理器核上的计算资源。
58.可选的,第一线程在将自身的状态设置为挂起状态之前,第一线程在持续检测出与其绑定的共享内存中无数据的时间长度达到第三时间阈值时,进行让渡操作(也称yield操作),以释放占用第一处理器核中的计算资源,使第一处理器核优先运行其他线程,第三时间阈值小于第一时间阈值。
59.可选的,第一线程处于非挂起状态时,第一线程会实时或周期性地检测与第一线程绑定的共享内在。其中,第一线程需要占用第一处理器核的计算资源,才能检测该共享内存。在第一线程在将自身的状态设置为挂起状态后,此时第一线程就不会周期性地检测该共享内存。第一处理器核就可以释放第一线程占用的计算资源,从而节省了第一处理器核的计算资源。
60.可选的,调度模块在检测到第一线程将自身的状态设置为挂起状态时,获取第一线程的标识和挂起状态起始时间,将第一线程的标识和该挂起状态起始时间对应保存在线程的标识与挂起状态起始时间的对应关系中。
61.例如,参见图2,假设处理器核41上的线程21在持续检测到与其绑定的共享内存无数据的时间长度达到第一时间阈值时,将自身的状态设置为挂起状态,假设当前时间为t1。
62.相应的,调度模块在t1时间检测到线程21的状态变为挂起状态,获取线程21的标识id1和挂起状态起始时间t1,将线程21的标识id1和挂起状态起始时间t1对应保存在如下表1所示的线程的标识与挂起状态起始时间的对应关系。
63.再如,仍参见图2,假设处理器核1上的线程22在持续检测到与其绑定的共享内存
无数据的时间长度达到第一时间阈值时,将自身的状态设置为挂起状态,假设当前时间为t2。
64.相应的,调度模块在t2时间检测到线程22的状态变为挂起状态,获取线程22的标识id2和挂起状态起始时间t2,将线程22的标识id2和挂起状态起始时间t2对应保存在如下表1所示的线程的标识与挂起状态起始时间的对应关系。
65.表1
66.线程的标识挂起状态起始时间线程21的标识id1t1线程22的标识id2t2
…………
67.其中,设备中包括至少一个具有轮询功能的线程,每个线程与一个共享内存绑定,用于检测与其绑定的共享内存。在执行步骤401之前,对于每个线程,该线程在调度模块中注册该线程的标识和与该线程绑定的共享内存的标识。调度模块将该线程的标识和与该线程绑定的共享内存的标识对应保存在线程的标识与共享内存的标识之间的对应关系中。因此,线程的标识与共享内存的标识之间的对应关系保存了该设备中的每个线程的标识和与每个线程绑定的共享内存的标识。
68.例如,参见图2,线程21向调度模块注册线程21的标识id1和与线程21绑定的共享内存1的标识im1,调度模块将线程21的标识id1和与线程21绑定的共享内存1的标识im1之间的对应关系保存到如下表2所示的线程的标识与共享内存的标识的对应关系中。
69.同理,调度模块按上述相同方式将线程22的标识id2和与线程22绑定的共享内存2的标识im2之间的对应关系,线程23的标识id3和与线程23绑定的共享内存3的标识im3之间的对应关系,线程24的标识id4和与线程24绑定的共享内存4的标识im4之间的对应关系,线程25的标识id5和与线程25绑定的共享内存5的标识im5之间的对应关系,以及线程26的标识id6和与线程26绑定的共享内存6的标识im6之间的对应关系保存在如下表2所示的线程的标识与共享内存的标识的对应关系中。
70.表2
71.线程的标识共享内存的标识线程21的标识id1共享内存1的标识im1线程22的标识id2共享内存2的标识im2线程23的标识id3共享内存3的标识im3线程24的标识id4共享内存4的标识im4线程25的标识id5共享内存5的标识im5线程26的标识id6共享内存6的标识im6
72.可选的,共享内存是设备内存中的一段存储空间,该共享内存储的标识可以包括该存储空间的起始地址,或者,包括该存储空间的起始地址和结束地址等。
73.可选的,在执行步骤401之前,还能够获取该设备中的每个处理器核的标识和每个处理器核上运行的线程的标识,将每个处理器核的标识和每个处理器核上的线程的标识对应保存在处理器核的标识与线程的标识的对应关系。
74.例如,参于图2所示的例子,获取处理器核41的标识ic1、处理器核41上运行的线程
21的标识id1和线程22的标识id2,将处理器核41的标识ic1、处理器核41上运行的线程21的标识id1和线程22的标识id2对应保存在如下表3所示的处理器核的标识与线程的标识的对应关系。同理,将处理器核42的标识ic2、处理器核42上运行的线程24的标识id4和线程25的标识id5,以及将处理器核51的标识ic3、处理器核51上运行的线程25的标识id5和线程26的标识id6,对应保存在如下表3所示的处理器核的标识与线程的标识的对应关系。
75.表3
[0076][0077]
步骤402:当检测出第一处理器核上运行的线程满足预设条件时,控制第一处理器核工作在低功耗模式,其中,第一处理器核工作在低功耗模式下第一处理器核的工作频率小于频率阈值。
[0078]
可选的,预设条件包括第一处理器核上运行的线程的状态均为挂起状态。即在步骤402中,在检测出第一处理器核上运行的线程的状态均为挂起状态时,控制第一处理器核工作在低功耗模式。
[0079]
由于第一处理器核工作在低功耗模式下,第一处理器核的工作频率小于频率阈值,这样可以降低第一处理器核的功耗。其中,频率阈值可以根据实际业务需求预先设置,或者根据经验值预先设置,也可以根据统计出的历史数据确定该频率阈值。该频率阈值,用于限定处理器核在低功耗模式时的工作频率,使得处于低功耗模式的处理器核的功耗低于正常工作模式,进而实现降低整个处理器的功耗、节能的目的。
[0080]
可选的,预设条件包括第一处理器核上的各线程处于挂起状态的持续时间超过第二时间阈值。在步骤402中,在检测出第一处理器核上的各线程处于挂起状态的持续时间超过第二时间阈值的情况下,控制第一处理器核工作在低功耗模式。
[0081]
可选的,在实现时,根据第一处理器核的标识,从处理器核的标识与线程的标识的对应关系中获取第一处理器核上的每个线程的标识。根据每个线程的标识,查询线程的标识与挂起状态起始时间的对应关系,如果查询出每个线程对应的挂起状态起始时间,则确定第一处理器核上的每个线程的状态均为挂起状态。根据当前时间和每个线程的挂起状态起始时间,获取每个线程处于挂起状态的持续时间,在每个线程处于挂起状态的持续时间超过第二时间阈值的情况下,控制第一处理器核工作在低功耗模式。
[0082]
例如,参见图2,以处理器核41为例,根据处理器核41的标识ic1,从上述表3所示的处理器核的标识与线程的标识的对应关系中获取处理器核41上运行的线程21的标识id1和线程22的标识id2。根据线程21的标识id1和线程22的标识id2,从上述表1所示的线程的标识与挂起状态起始时间的对应关系中获取线程21的挂起状态起始时间为t1,线程2的挂起状态起始时间为t2。根据当前时间t3,线程21的挂起状态起始时间t1,线程22的挂起状态起始时间t2,获取线程21处于挂起状态的第一持续时间为t3-t1,线程22处于挂起状态的第二
持续时间为t3-t2。假设第一持续时间t3-t1和第二持续时间t3-t2均超过第二时间阈值,控制处理器核41工作在低功耗模式。
[0083]
可选的,控制第一处理器核工作在低功耗模式的方式可以为:
[0084]
调度模块向第一处理器核发送进入低功耗的指令,第一处理器接收该指令,工作在低功耗模式。
[0085]
可选的,第一处理器核关闭自身的工作时钟,以实现工作在低功耗模式。
[0086]
例如,假设第一处理器核为高级精简指令集处理器(advanced risc machines,arm),调度模块向第一处理器核发送的进入低功耗的指令为等待事件(wait for event,wfe)指令。第一处理器核接收该wfe指令,关闭自身的工作时钟。
[0087]
其中,虽然第一处理器核工作在低功耗模式下,但第一处理器核仍然被供电,以保证需要唤醒第一处理器核工作在正常工作模式时,可以及时唤醒第一处理器核。
[0088]
可选的,在控制第一处理器工作在低功耗模式下之前,还能够将第一处理器核上长时间处理于挂起状态的线程迁移到工作在低功耗模式且低负载的其他处理器核上。
[0089]
在实现时:当检测出第二线程处于挂起状态的持续时间超过第二时间阈值时,将第二线程迁移到第二处理器核上,第二线程是第一处理器核上包括的任一线程,第二处理器核为该设备中已工作在低功耗模式的处理器核,第二处理器核的负载低于负载阈值。
[0090]
第一处理器核和第二处理器核可以位于同一个处理器上或者位于不同的处理器上。
[0091]
其中,负载阈值可以根据实际业务需求预先设置,或者根据经验值预先设置,也可以根据统计出的历史数据确定该负载阈值。
[0092]
由于第二处理器核的负载低于负载阈值,所以将第二线程迁移到第二处理器核上后,在第二处理器核和第二线程被唤醒后,与第二线程竞争计算资源的线程数目较少,第二线程可以从第二处理器核上尽快得到计算资源。
[0093]
可选的,在将第二线程迁移到第二处理器核后,还在线程的标识与处理器核的标识的对应关系中将第二线程对应的第一处理器核的标识更新为第二处理器的标识。
[0094]
例如,仍参见图2,假设处理器核42已工作在低功耗模式下,处理器核42上运行线程23和线程24,处理器核42的负载为2,小于负载阈值3。还假设处理器核41上的线程21的状态为挂起状态,且线程21处于挂起状态的持续时间超过第二时间阈值。所以参见图5,将线程21迁移到处理器核42,在如表3所示的处理器核的标识与线程的标识的对应关系中将线程21对应的处理器核41的标识ic1更新为处理器核42的标识ic2,得到如下表4所示的处理器核的标识和线程的标识的对应关系。
[0095]
表4
[0096]
[0097]
可选的,在控制第一处理器工作在低功耗模式下之前,还可以将第一处理器核上处于非挂起状态的线程迁移到其他工作在正常工作模式下的处理器核,保留第一处理器核上处于挂起状态的线程,这样以使第一处理器核上的线程尽快均为挂起状态的线程,以尽快控制第一处理器核工作在低功耗模式。可选的,在实现时:
[0098]
在第一处理器核的使用率低于使用率阈值时,将第三线程迁移到第三处理器核,第三线程是第一处理器核上的处于非挂起状态的线程,第一处理器核的使用率用于指示第一处理器核的计算资源的有效利用率,第三处理器核是该设备中工作在正常工作模式下的处理器核。
[0099]
第一处理器核和第三处理器核可以位于同一个处理器上或者位于不同的处理器上。
[0100]
可选的,第一处理器核和第三处理器核位于不同处理器上,可以将第三线程迁移到与第一处理器不在同上处理器上的第三处理器核上。对于第一处理器核所在处理器,可以尽量使该处理器上的各处理器核满足进入低功耗工作模式的条件,从而使整个处理器工作在低功耗模式下。
[0101]
可选的,在检测到第一处理器核的使用率低于使用率阈值时,根据第一处理器核的标识,从处理器核的标识与线程的标识的对应关系中获取第一处理器核上运行的各线程的标识,从各线程的标识中,去除线程的标识与挂起状态起始时间的对应关系中存在的线程的标识,剩下的各线程的标识对应的线程均为第一处理器核上的处于非挂起状态的线程。
[0102]
可选的,在将第三线程迁移到第三处理器核后,还在线程的标识与处理器核的标识的对应关系中将第三线程对应的第一处理器核的标识更新为第三处理器的标识。
[0103]
可选的,在步骤402中,对于处于正常工作状态的多个处理器核,可以将该多个处理器核上的处于非挂起状态的线程合并到该多个处理器核中的部分处理器核上。这样可以使更多的处理器核上的线程均处于挂起状态,以控制更多的处理器核工作在低功耗模式下。
[0104]
可选的,在实现时:确定多个处理器核,该多个处理器核均工作在正常工作模式下,从该多个处理器核中选择一部分处理器核。将该多个处理器核上处于非挂起状态的线程迁移到部分处理器核上,该部分处理器核可以包括一个或多个处理器核,这样以使更多的处理器核上的线程均处于挂起状态。在某个处理器核上剩余未迁移的线程均处于挂起状态时,控制该处理器核工作在低功耗模式;或者,在该处理器核上剩余未迁移的各线程处于挂起状态的持续时间超过第二时间阈值时,控制该处理器核工作在低功耗模式。
[0105]
可选的,可以从该多个处理器核中选择位于同一处理器上的处理器核,这样尽量将非挂起状态的线程迁移到一个处理器包括的处理器核上。使设备中的其他处理器上的处理器核满足进入低功耗工作模式的条件,从而使其他处理器工作在低功耗模式下,以降低更多处理器的功耗。
[0106]
例如,对于图2所示的例子,假设处理器核41、42和51均工作在正常工作模式,处理器核41上的线程21处于挂起状态,而线程22处于非挂起状态。处理器核42上的线程23和24均处于非挂起状态,以及处理器核51上的线程25处于挂起状态,而线程26处于非挂起状态。这样可以将该三个处理器核上的非挂起状态的线程进行合并。例如,参见图6,将处理器核
41上的线程22和处理器核42上的线程23和24迁移到处理器核51上,即将该三个处理器核上的非挂起状态的线程合并到处理器核51上。然后控制处理器核41和42工作在低功耗模式下,从而使得第一处理器4工作在低功耗模式下。
[0107]
可选的,在控制第一处理器核工作在低功耗模式下,还在线程的标识与起始挂起时间的对应关系中删除包括第一处理器核上运行的各线程的标识的记录。
[0108]
可选的,在实现时:根据第一处理器的标识,从处理器的标识与线程的标识的对应关系中获取第一处理器核上运行的各线程的标识;从在线程的标识与起始挂起时间的对应关系中删除包括获取的各线程的标识的记录。
[0109]
可选的,需要说明的是:如果第一处理器核是虚拟处理器核,则第一处理器核运行在一个物理处理器核上,控制第一处理器核工作在低功耗模式下,不仅降低第一处理器核的功耗,也能节省该物理处理器核的计算资源。
[0110]
可选的,在该物理处理器核上运行的每个虚拟处理器核均工作在低功耗模式下,也可控制该物理处理器核工作在低功耗模式下,以降低该虚拟处理器核所在处理器核(也称为物理核)的功耗。
[0111]
步骤403:在与第一线程绑定的共享内存中存在数据时,控制第一处理器核工作在正常工作模式,以及将第一线程的状态设为正常工作状态,其中,第一处理器核工作在正常工作模式下第一处理器核的工作频率大于或等于频率阈值。
[0112]
可选的,当该设备中的某个数据产生模块向与第一线程绑定的共享内存存入数据时,数据生产生模块向调度模块触发通知命令,该通知命令包括该共享内存的标识。
[0113]
可选的,该通知命令包括用于指示该共享内存中存在数据的命令。
[0114]
可选的,通知命令包括软件信号和硬件信号中至少一种。
[0115]
在步骤403中,调度模块需要唤醒处于低功耗模式的第一处理器核和第一处理器核上的第一线程。在实现时:
[0116]
调度模块接收该通知命令,根据该通知命令包括的共享内存的标识,确定该共享内存的标识对应的共享内存中存在数据。根据该共享内存的标识,从线程的标识与共享内存的标识获取与该共享内存绑定的第一线程的标识。根据第一线程的标识,从处理器核的标识与线程的标识的对应关系中,获取第一线程所在的第一处理器核的标识。
[0117]
调度模块根据第一处理器核的标识,确定第一处理器核是否工作在低功耗模式。在第一处理器核工作在低功耗模式时,控制第一处理器核工作在正常工作模式,以唤醒第一处理器核。在第一处理器核工作在正常工作模式时,将第一线程的状态设置为非挂起状态,以唤醒第一线程。
[0118]
可选的,在第一处理器核为虚拟处理器核的情况下,在第一处理器核所在的物理处理器核也工作在低功耗模式下,则先控制该物理处理器核工作在正常工作模式下,然后再控制第一处理器核工作在正常工作模式下。
[0119]
在第一处理器核工作在正常工作状态以及第一线程的状态被设为非挂起状态时,第一处理器核运行第一线程。第一线程周期地检测与其绑定的共享内存,从该共享内存中获取数据,并处理该数据。
[0120]
可选的,在步骤403中,调度模块可以向第一处理器发送进入正常工作模式的指令。第一处理器接收该指令,工作在正常工作模式下。
[0121]
可选的,第一处理器核开启自身的工作时钟,以实现工作在正常工作模式下。
[0122]
例如,假设第一处理器核为arm,调度模块向第一处理器核发送的进入正常工作模式的指令为发送本地事件(send event local,sevl)指令。第一处理器核接收该sevl指令,开启自身的工作时钟,以实现工作在正常工作模式下。
[0123]
例如,假设设备的数据产生模块向与线程21绑定的共享内存存储数据时,向调度模块触发通知命令,该通知命令包括该共享内存的标识im1。调度模块接收该通知命令,根据该通知命令包括的共享内存的标识im1,确定该共享内存的标识im1对应的共享内存中存在数据。根据该共享内存的标识im1,从上述表3所示的线程的标识与共享内存的标识的对应关系中,获取与该共享内存绑定的线程21的标识id1。根据线程21的标识id1,从处理器核的标识与线程的标识的对应关系中获取线程21所在的处理器核41的标识ic1。根据处理器核41的标识ic1,确定处理器核41工作在低功耗模式,然后控制处理器核41工作在正常工作模式,以唤醒处理器核41;将线程21的状态设置为非挂起状态。然后,处理器核41运行线程21,线程21周期地检测与其绑定的共享内存,从该共享内存中获取数据,并处理该数据。
[0124]
可选的,如果数据产生模块是软件(例如为线程或进程等),数据产生模块和调度模块之间可以通过进程间通信(inter-process communication,ipc)或者调度模块轮询检测的方式,接收数据产生模块触发的通知命令。如果数据产生模块是硬件设备(例如为网卡),调度模块可以通过检测硬件信号(寄存器或中断)的方式,接收数据产生模块触发的通知命令。当然,这两个接收通知命令的机制只是举例,作为实现的一种方式,并不仅限于此。例如数据产生模块还可以通过信号量的方式向调度模块触发通知命令等。
[0125]
可选的,本技术实施例可以用于共有云等场景,该设备为公有云中的服务器。例如,参见图7所示的,以公有云中的音视频会议应用为例,在音视频会议应用中,对于一个会议,服务器的处理器中往往运行了实现该一个会议所需要的解密线程20、处理线程27、加密线程28和发送线程29等等。其中,解密线程20与第一共享内存31绑定,处理线程27与第二共享内存32绑定,加密线程28与第三共享内存33绑定,以及发送线程29与第四共享内存34绑定。第一共享内存31、第二共享内存32、第三共享内存33和第四共享内存34分别为服务器的内存中四个不同的存储空间。
[0126]
服务器的网卡30接收会议过程中产生的音视频数据,将该音视频数据存入第一共享内存31,解密线程20检测第一共享内存31,从第一共享内存20中检测到该音视频数据,获取该音视频数据并对该音频视频数据解密,得到解密数据。此时解密线程20又可作为数据产生模块,将解密数据存入第二共享内存32,处理线程27检测第二共享内存32,从第二共享内存32中检测到该解密数据,获取该解密数据并对该解密数据进行处理,得到处理结果。此时处理线程27又可作为数据产生模块,将处理结果存入第三共享内存33,加密线程28检测第三共享内存,从第三共享内存33中检测到该处理结果,获取该处理结果并对该处理结果进行加密,得到加密数据。此时加密线程28又可作为数据产生模块,将加密数据存入第四共享内存34,发送线程29检测第四共享内存34,从第四共享内存34中检测到该加密数据,获取该加密数据,通过该设备的通信接口向其他设备发送该加密数据。
[0127]
上述过程是对一个音视频数据处理过程的描述,当有大量会议时,服务器的处理器核上运行了大量的解密线程20、处理线程27、加密线程28和发送线程29,从而导致服务器的处理器的功耗很高。而音视频会议应用也不是无时无刻都有音视频数据,也就是说服务
器可能在较长时间内可能接收不到音视频数据,所以可能通过本技术实施例的方法控制该服务器中的部分处理器核工作在低功耗模式下,以降低服务器的处理器的功耗。
[0128]
在本技术实施例中,检测第一处理器核上运行的线程的状态,在第一处理器核上的线程的状态均为挂起状态,控制第一处理器核工作在低功耗模式下。由工作在低功耗模式下,第一处理器核的工作频率很低,所需要功耗也相应很小,从而降低了第一处理器核的功耗。在控制第一处理器核工作在低功耗模式之前,还将第一处理器核上处于非挂起状态的线程迁移到其他处于正常工作状态的处理器核上,以尽快控制第一处理器核进入低功耗模式。再者,由于第一处理器核上的线程可以被设为挂起状态,第一处理器核可以释放挂起状态的线程占用的计算资源,从而可以节省计算资源。
[0129]
参见图8,本技术实施例提供了一种资源管理装置800,所述装置800应用于图2、图3或图4所示实施例的设备中,设备包括至少一个处理器核,包括:
[0130]
处理单元801,用于检测第一处理器核上运行的线程的状态,第一处理器核是至少一个处理器核中的任意一个;
[0131]
控制单元802,用于当处理单元801检测第一处理器核上运行的线程满足预设条件时,控制第一处理器核工作在低功耗模式,其中,第一处理器核工作在低功耗模式下第一处理器核的工作频率小于频率阈值。
[0132]
可选的,处理单元801检测线程状态的详细过程,可以参见图4所示实施例中的步骤401中的相关内容。控制单元802控制第一处理器核的详细过程,可以参见图4所示实施例中的步骤402中的相关内容。
[0133]
可选的,预设条件包括第一处理器核上运行的线程的状态均为挂起状态。
[0134]
可选的,第一处理器核上运行的线程包括第一线程,第一线程与该设备包括的共享内存存在绑定关系,该共享内存是设备的内存中的一个存储空间,第一线程用于检测共享内存是否存储数据;在第一线程检测出该共享内存无数据的持续时间超过第一时间阈值时,第一线程的状态被设为挂起状态。
[0135]
可选的,控制单元802,用于在处理单元801检测出第一处理器核上的各线程处于挂起状态的持续时间超过第二时间阈值的情况下,控制第一处理器核工作在低功耗模式。
[0136]
可选的,处理单元801,还用于:当检测出第二线程处于挂起状态的持续时间超过第二时间阈值时,将第二线程迁移到第二处理器核上,第二线程是所述第一处理器核上运行的任一线程,第二处理器核为该设备中已工作在低功耗模式的处理器核,第二处理器核的负载低于负载阈值。
[0137]
可选的,处理单元801迁移第二线程的详细过程,可以参见图4所示实施例中的步骤402中的相关内容。
[0138]
可选的,处理单元801,还用于:在第一处理器核的使用率低于使用率阈值时,将第三线程迁移到第三处理器核,第三线程是第一处理器核上的处于非挂起状态的线程,第一处理器核的使用率用于指示第一处理器核的计算资源的有效利用率,第三处理器核是所述设备中工作在正常工作模式下的处理器核。
[0139]
可选的,处理单元801迁移第三线程的详细过程,可以参见图4所示实施例中的步骤402中的相关内容。
[0140]
可选的,处理单元801,还用于:将该设备中的多个处理器核上的处于非挂起状态
的线程合并到该多个处理器核中的部分处理器核上。
[0141]
可选的,控制单元802,还用于:在该共享内存中存在数据时,控制第一处理器核工作在正常工作模式,以及将第一线程的状态设为正常工作状态,其中,第一处理器核工作在正常工作模式下第一处理器核的工作频率大于或等于频率阈值。
[0142]
可选的,控制单元802控制第一处理器和第一线程的详细过程,可以参见图4所示实施例中的步骤403中的相关内容。
[0143]
可选的,所述装置800还包括:接收单元803,用于接收该设备包括的数据产生模块触发的通知命令,该通知命令是数据产生模块在向该共享内存中存储数据时触发的,该通知命令包括该共享内存的标识,该通知命令包括用于指示该共享内存中存在数据的命令。
[0144]
可选的,该通知命令包括软件信号和硬件信号中至少一种。
[0145]
可选的,该设备包括的处理器核为虚拟处理器核或物理处理器核。
[0146]
应理解的是,本技术实施例的装置800可以通过专用集成电路(application-specific integrated circuit,asic)实现,或可编程逻辑器件(programmable logic device,pld)实现,上述pld可以是复杂程序逻辑器件(complex programmable logical device,cpld),现场可编程门阵列(field-programmable gate array,fpga),通用阵列逻辑(generic array logic,gal)或其任意组合。也可以通过软件实现图4所示的资源管理方法时,该装置800及其各个模块也可以为软件模块。
[0147]
根据本技术实施例的装置800可对应于执行本技术实施例中描述的方法,并且该装置800中的各个单元的上述和其它操作和/或功能分别为了实现图4所示方法的相应流程,为了简洁,在此不再赘述。
[0148]
在本技术实施例中,处理单元检测第一处理器核上运行的线程的状态,第一处理器核是该至少一个处理器核中的任意一个。当检测第一处理器核上运行的线程满足预设条件时,控制单元控制第一处理器核工作在低功耗模式,其中,第一处理器核工作在低功耗模式下第一处理器核的工作频率小于频率阈值。在控制单元控制第一处理器核工作在低功耗模式时,第一处理器核上运行的各线程不会在占用计算资源,且第一处理器核的工作频率小于频率阈值,使得第一处理器核的功耗很低,节省了第一处理器核所在处理器的计算资源以及降低该处理器的功耗。
[0149]
参见图9,本技术实施例提供了一种设备900示意图。该设备900可以是上述任一实施例中的设备,例如该设备900为图4所示实施例中的设备。该设备900包括至少一个处理器901,内存单元902,存储介质903、通信接口904和总线系统905。其中,处理器901、内存单元902、存储介质903、通信接口904通过总线系统905进行通信。
[0150]
对于该至少一个处理器901中的任一个处理器901,该处理器901包括至少一个处理器核9011,每个处理器核9011上运行至少一个线程9012。该内存单元902包括至少一个共享内存9021,每个共享内存9021是该内存单元902中的一个内存空间。该至少一个线程9012中的每个线程9012与一个共享内存9021之间存在绑定关系。
[0151]
处理器901中的处理器核9011可以调用内存单元902中存储的计算机执行指令(例如,程序代码)实现图4所示实施例中调度模块执行的操作步骤。例如,检测第一处理器核上运行的线程的状态,第一处理器核是该至少一个处理器核9011中的任意一个;当检测第一处理器核上运行的线程满足预设条件时,控制第一处理器核工作在低功耗模式,其中,第一
处理器核工作在低功耗模式下第一处理器核的工作频率小于频率阈值。
[0152]
可选的,存储介质903中存储该计算机执行指令和操作系统,在该设备900启动运行时,处理器901中的处理器核9011可以将存储介质903存储的该计算机执行指令和操作系统加载到内存单元902中,并在操作系统提供的运行环境中调用并运行内存单元902中的该计算机执行指令。
[0153]
可选的,上述处理器901可以是一个cpu,微处理器,特定应用集成电路(application-specific integrated circuit,asic),或一个或多个用于控制本技术方案程序执行的集成电路。作为一种实施例,处理器901可以包括一个或多个cpu,例如图9中的cpu0和cpu1。该处理器901还可以是其他通用处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
[0154]
设备900中总线系统905除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统905。
[0155]
上述通信接口904,用于与其他设备通信。例如,处理器901通过通信接口904与感知系统和定位系统进行通信,处理器901通过通信接口904与感知系统和定位系统进行通信,以获取到移动物体周围的障碍物的位置和运动属性信息。
[0156]
该存储介质903可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data date sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0157]
该总线系统905除包括数据总线之外,还可以包括电源总线、控制总线、状态信号总线、车内总线(例如控制器局域网络(controller area network,can)总线)等。但是为了清楚说明起见,在图中将各种总线都标为总线系统905。
[0158]
应理解,根据本技术实施例的设备900可对应于本技术实施例中的装置800,并可以对应于执行根据本技术实施例图4中的相应主体,并且该设备900中的各个模块的上述和其它操作和/或功能分别为了实现图4中的各个方法的相应流程,为了简洁,在此不再赘述。
[0159]
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述
计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,ssd)。
[0160]
以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1