一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于文件缓存的调度方法、装置与计算设备与流程

2022-04-27 12:48:55 来源:中国专利 TAG:

一种基于文件缓存的调度方法、装置与计算设备
1.本技术是2021年12月15日提交的发明专利申请2021115328377的分案申请。
技术领域
2.本发明涉及数据调度技术领域,尤其是一种基于文件缓存的调度方法、装置与计算设备。


背景技术:

3.在多核系统中,为了更好的利用多cpu并行的能力,调度器会将进程进行调度平均到各个cpu上。但随着科技的发展,机器上cpu的个数越来越多,所以就引入了numa(non uniform memory access,非统一内存访问)架构进行管理,如图1所示,numa系统由多个cpu节点组成,整个内存体系可以作为一个整体,任何处理器都可以访问,只是处理器访问本地内存节点拥有更小的延迟和更大的带宽,访问远程内存节点速度会慢一点。
4.相关技术中,在负载均衡时会在当前域去寻找最忙的子域,然后找到子域中最忙的cpu,通过计算负载将一些进程迁移到当前空闲的cpu来达到负载均衡,但是如果当前做负载均衡的域中是远node(节点)的cpu,就可能会出现跨远node的cpu迁移,从而产生性能损失。


技术实现要素:

5.为此,本发明提供了一种基于文件缓存的调度方法、装置与计算设备,以力图解决或者至少缓解上面存在的至少一个问题。
6.根据本发明的一个方面,提供了一种基于文件缓存的调度方法,包括步骤:在多核系统全部节点的cpu之中,至少基于cpu负载大小确定迁出进程cpu和迁移目标cpu;当所述迁出进程cpu与所述迁移目标cpu不满足负载均衡条件时,遍历所述迁出进程cpu上的所有进程,根据每个进程访问的文件缓存的大小确定待迁移进程;计算确定出的待迁移进程访问的文件缓存所对应的节点与所述迁移目标cpu所在节点之间的距离;以及将所述距离小于或者等于距离阈值的待迁移进程迁移至所述迁移目标cpu。
7.可选地,在根据本发明的调度方法中,所述至少基于cpu负载大小确定迁出进程cpu和迁移目标cpu的步骤包括:在所述全部节点中,选择至少部分作为第一候选节点,以在所述第一候选节点对应的cpu之中,将其中负载最小的cpu或当前进行负载检测的cpu确定为迁移目标cpu;以及在所述全部节点中,选择至少部分作为第二候选节点,以在所述第二候选节点对应的cpu之中,将其中负载最大的cpu确定为迁出进程cpu。
8.可选地,在根据本发明的调度方法中,所述第一候选节点为所述全部节点中负载最小的节点,且所述第二候选节点为所述全部节点中负载最大的节点。
9.可选地,在根据本发明的调度方法中,在所述至少基于cpu负载大小确定迁出进程cpu和迁移目标cpu的步骤之前包括:周期性检测全部node中每个cpu的负载情况,或者在有进程的状态发生变化时检测全部节点中每个cpu的负载情况。
10.可选地,在根据本发明的调度方法中,遍历所述迁出进程cpu上的所有进程,根据每个进程访问的文件缓存的大小确定待迁移进程的步骤包括:将每个所述进程访问的文件缓存的大小与预设的迁移页阈值进行比较;当所述进程访问的文件缓存的大小小于或者等于所述迁移页阈值时,将所述进程确定为待迁移进程;当所述进程访问的文件缓存的大小大于所述迁移页阈值且若所述进程迁入所述迁移目标cpu后使得所述迁出进程cpu负载和所述迁移目标cpu的负载之间的差距变小时,将所述进程确定为待迁移进程。
11.可选地,在根据本发明的调度方法中,将所述距离小于或者等于距离阈值的待迁移进程迁移至所述迁移目标cpu的步骤包括:按照先进先出的顺序逐一将所述距离小于或者等于距离阈值的待迁移进程迁移至所述迁移目标cpu,直到满足终止条件时,停止对当前进程及后续进程的迁移;其中,所述终止条件为:若当前进程迁入所述迁移目标cpu后,将使得所述迁出进程cpu负载和所述迁移目标cpu的负载之间的差距变大。
12.根据本发明的另一方面,还提供了一种基于文件缓存的调度装置,包括:查找模块,适于在多核系统全部节点的cpu之中,至少基于cpu负载大小确定迁出进程cpu和迁移目标cpu;遍历模块,适于当所述迁出进程cpu与所述迁移目标cpu不满足负载均衡条件时,遍历所述迁出进程cpu上的所有进程,根据每个进程访问的文件缓存的大小确定待迁移进程;测距模块,适于计算确定出的待迁移进程访问的文件缓存所对应的节点与所述迁移目标cpu所在节点之间的距离;以及迁移模块,适于将所述距离小于或者等于距离阈值的待迁移进程迁移至所述迁移目标cpu。
13.可选地,所述遍历模块遍历所述迁出进程cpu上的所有进程,根据每个进程访问的文件缓存的大小确定待迁移进程适于:将每个所述进程访问的文件缓存的大小与预设的迁移页阈值进行比较;当所述进程访问的文件缓存的大小小于或者等于所述迁移页阈值时,将所述进程确定为待迁移进程;当所述进程访问的文件缓存的大小大于所述迁移页阈值且若所述进程迁入所述迁移目标cpu后使得所述迁出进程cpu负载和所述迁移目标cpu的负载之间的差距变小时,将所述进程确定为待迁移进程。
14.根据本发明的另一方面,还提供了一种计算设备,包括:至少一个处理器和存储有程序指令的存储器;当程序指令被处理器读取并执行时,使得计算设备执行如上的基于文件缓存的调度方法。
15.根据本发明的再一方面,还提供了一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行如上的基于文件缓存的调度方法。
16.根据本发明的基于文件缓存的调度方法、装置与计算设备,能够实现以下有益效果:
17.本技术在进程使用文件时对文件缓存进行统计,在负载均衡过程中进行进程使用的文件缓存的node和迁移目标cpu的node间距离的判断,可以使得进程快速的使用文件缓存,以满足在高文件缓存时的场景性能。
附图说明
18.为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述
以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
19.图1示出了相关技术中numa架构的结构示意图;
20.图2示出了根据本发明一个实施例的计算设备200的示意图;
21.图3示出了根据本发明一个实施例的基于文件缓存的调度方法300的流程图;
22.图4示出了根据本发明一个实施例的根据每个进程访问的文件缓存的大小确定待迁移进程的流程图;
23.图5示出了根据本发明一个实施例的文件缓存迁移的框架示意图;
24.图6示出了根据本发明一个实施例的基于文件缓存的调度装置600的结构示意图;
25.图7是根据本技术实施例的第一种计算机可读存储介质的示意性结构框图;
26.图8是根据本技术实施例的第二种计算机可读存储介质的示意性结构框图。
具体实施方式
27.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
28.本发明的基于文件缓存的调度方法在计算设备中执行。计算设备可以是任意具有存储和计算能力的设备,其例如可以实现为服务器、工作站等,也可以实现为桌面计算机、笔记本计算机等个人配置的计算机,或者实现为手机、平板电脑、智能可穿戴设备、物联网设备等终端设备,但不限于此。
29.图2示出了根据本发明一个实施例的计算设备200的示意图。需要说明的是,图2所示的计算设备200仅为一个示例,在实践中,用于实施本发明的基于文件缓存的调度方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图2所示的计算设备200相同,也可以与图2所示的计算设备200不同。实践中用于实施本发明的基于文件缓存的调度方法的计算设备可以对图2所示的计算设备200的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。
30.如图2所示,在基本配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
31.取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(up)、微控制器(uc)、数字信息处理器(dsp)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处理核心(dsp核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
32.取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或者它们的任何组合。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。应用222实际上是多条程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置
为在操作系统上使得处理器204利用程序数据224进行操作。
33.计算设备200还可以包括储存接口总线234。储存接口总线234实现了从储存设备232(例如,可移除储存器236和不可移除储存器238)经由总线/接口控制器230到基本配置202的通信。操作系统220、应用222以及程序数据224的至少一部分可以存储在可移除储存器236和/或不可移除储存器238上,并且在计算设备200上电或者要执行应用222时,经由储存接口总线234而加载到系统存储器206中,并由一个或者多个处理器204来执行。
34.计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个a/v端口252与诸如显示器253或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个i/o端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
35.网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。

调制数据信号

可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中以编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
36.在根据本发明的计算设备200中,应用222包括执行基于文件缓存的调度方法300的多条程序指令,这些程序指令可以指示处理器204执行本发明的基于文件缓存的调度方法300,以便计算设备200执行本发明的基于文件缓存的调度方法300。
37.图3示出了根据本发明一个实施例的用于基于文件缓存的调度方法300的流程图。基于文件缓存的调度方法300在计算设备(例如前述计算设备200)中执行,本发明的基于文件缓存的调度方法300,增加对进程使用的文件缓存的node和迁移目标cpu的node间距离的判断,用于解决进程迁移到距离远node上使用文存缓存慢的问题。用以解决比如使用word文档、数据库等具体使用文件缓存高的场景的性能问题。如图3所示,基于文件缓存的调度方法300可以包括步骤s310至步骤s340。
38.在步骤s310中,在多核系统全部节点的cpu之中,至少基于cpu负载大小确定迁出进程cpu和迁移目标cpu。
39.根据一种实现方式,在步骤s310中根据多核系统中全部node中每个cpu的负载大小确定迁出进程cpu和迁移目标cpu。本发明实施例中,node由访问同一块内存距离相等的所有cpu组成。
40.根据一种实现方式,在步骤s310中至少基于cpu负载大小确定迁出进程cpu和迁移目标cpu的步骤包括:在全部节点中,选择至少部分作为第一候选节点,以在第一候选节点对应的cpu之中,将其中负载最小的cpu或当前进行负载检测的cpu确定为迁移目标cpu;以
及在全部节点中,选择至少部分作为第二候选节点,以在第二候选节点对应的cpu之中,将其中负载最大的cpu确定为迁出进程cpu。
41.本发明实施例中,从全部节点中,选择至少一个作为第一候选节点,选择至少一个作为第二候选节点,其中,第一候选节点可以包括全部节点,且第二候选节点可以包括全部节点。或者,第一候选节点可以为全部节点中负载最小的节点,且第二候选节点可以为全部节点中负载最大的节点。
42.对于第一候选节点可以包括全部节点,且第二候选节点可以包括全部节点的方式,确定的迁出进程cpu和迁移目标cpu是:全部节点中负载最小的一个cpu作为迁移目标cpu或者当前进行负载检测的cpu作为迁移目标cpu,并确定全部节点中负载最大的一个cpu作为迁出进程cpu。
43.对于第一候选节点为全部节点中负载最小的节点,且第二候选节点为全部节点中负载最大的节点,确定的迁出进程cpu和迁移目标cpu是:全部节点中负载最小的一个节点作为待迁入节点(第一候选节点);并寻找待迁入节点中负载最小的一个cpu作为迁移目标cpu或者当前进行负载检测的cpu作为迁移目标cpu;确定全部节点中负载最大的一个节点作为待迁出节点(第二候选节点);并寻找待迁出节点中负载最大的一个cpu作为迁出进程cpu。
44.根据一种实现方式,在步骤s310中在所述至少基于cpu负载大小确定迁出进程cpu和迁移目标cpu的步骤之前包括:周期性检测全部node中每个cpu的负载情况;或者在有进程的状态发生变化时检测全部节点中每个cpu的负载情况。
45.本发明实施例中在有进程的状态发生变化时检测全部节点中每个cpu的负载情况包括:在某一进程结束时或者新进程启动时触发检测所有节点中每个cpu的负载情况。本发明实施例中进程的状态变化可以包括:某一进程由正在执行到结束,或者某一新进程启动,此时触发检测全部node中每个cpu的负载情况。
46.本发明实施例中,可以周期性的检测全部node中每个cpu的负载情况,例如检测的周期可以为4ms,其中,检测的周期可以实际应用环境进行设定,可以通过配置修改,可以修改为1ms、3ms、6ms、10ms等,根据经验如果时间过小会导致系统调度过于频繁,如果时间过大会导致cpu之间负载的差距较大,系统性能变差,所以根据实际应用环境进行选取。也可以在某个cpu的某个进程的状态发生变化时,例如有新的进程启动或者原有的进程结束,进行全部node中每个cpu的负载情况检测。当到达检测时刻时,找到最忙node里的最忙cpu和最闲node里的最闲cpu,分别作为迁出进程cpu和迁移目标cpu。
47.在一些情况下,最忙node里的最忙cpu并非是整个numa系统中最忙的一个cpu,最闲node里的最闲cpu并非是整个numa系统中最闲的一个cpu,可以通过遍历全部node中每个cpu的负载情况确定最繁忙的一个cpu和最空闲的一个cpu。两种方式相比,先找到最忙或者最闲node,再找到对应的node中最忙或者最闲的cpu,分为两个阶段进行查找,此时无需获取每个cpu的负载大小,可以节省查找的时间,提高查找的速度;直接找到最繁忙的cpu和最空闲的cpu,此时可以准确查找到最需要调整的cpu,使得负载均衡更有效。
48.本发明实施例中的负载均衡条件在理想情况下为每个cpu的负载大小相等,实际应用过程中,由于cpu的负载随时发生变化,难以达到理想的负载均衡条件,因此,在文件缓存调度的过程中负载均衡条件是尽量使得每个cpu的负载之间的差距趋近于最小。
49.本发明实施例中还可以将当前进行负载检测的cpu作为迁移目标cpu,然后根据负载检测的结果确定迁出进程cpu。本发明实施例中每个cpu的检测周期可以不同,根据每个cpu的存储空间、执行的内容需要等为每个cpu设置对应的负载检测的周期,此时将正在进行负载检测的cpu作为迁移目标cpu,再寻找全部节点中负载最大的一个cpu作为迁出进程cpu,或者寻找全部节点中负载最大的一个节点作为待迁出节点;并寻找待迁出节点中负载最大的一个cpu作为迁出进程cpu。例如,cpu a的检测周期是6ms,cpu b的检测周期是4ms,时间从0时刻开始,当到达第4ms时,cpu b进行负载检测,cpu b作为正在进行负载检测的cpu,此时确定迁移目标cpu为cpu b,然后检测除cpu b之外的其他cpu的负载情况,根据检测的负载情况确定迁出进程cpu,并进一步根据判断结果进行进程迁移。当到达第6ms时,cpu a进行负载检测,cpu a作为正在进行负载检测的cpu,此时确定迁移目标cpu为cpu a,然后检测除cpu a之外的其他cpu的负载情况,根据检测的负载情况确定迁出进程cpu,并进一步根据判断结果进行进程迁移。当到达第8ms时,cpu b进行负载检测,重复cpu b作为迁移目标cpu的负载均衡过程。当到达第12ms时,cpu a和cpu b同时进行负载检测,此时可以确定迁移目标cpu为cpu a或者cpu b,也可以将cpu a和cpub同时作为迁移目标cpu,然后寻找全部节点中负载最大的一个cpu作为迁出进程cpu,或者寻找全部节点中负载最大的一个节点作为待迁出节点,并寻找待迁出节点中负载最大的一个cpu作为迁出进程cpu。也可以当到达第12ms时,cpu a和cpu b同时进行负载检测,此时确定全部节点中负载最小的一个cpu作为迁移目标cpu或者全部节点中负载最小的一个节点作为待迁入节点,并寻找待迁入节点中负载最小的一个cpu作为迁移目标cpu,然后寻找全部节点中负载最大的一个cpu作为迁出进程cpu,或者寻找全部节点中负载最大的一个节点作为待迁出节点,并寻找待迁出节点中负载最大的一个cpu作为迁出进程cpu。
50.在步骤s320中,当迁出进程cpu与迁移目标cpu不满足负载均衡条件时,遍历迁出进程cpu上的所有进程,根据每个进程访问的文件缓存的大小确定待迁移进程。
51.在进程迁移之前,需要计算迁移进程访问的文件缓存是否符合迁移标准,如图4所示,在步骤s320中遍历迁出进程cpu上的所有进程,根据每个进程访问的文件缓存的大小确定待迁移进程的步骤可以包括:将每个进程访问的文件缓存的大小与预设的迁移页阈值进行比较;当该进程访问的文件缓存的大小小于或者等于迁移页阈值时,将该进程确定为待迁移进程;当该进程访问的文件缓存的大小大于迁移页阈值且该进程迁入所述迁移目标cpu后使得迁出进程cpu负载和迁移目标cpu的负载之间的差距变小时,将该进程确定为待迁移进程。
52.本发明实施例中,在遍历迁出进程cpu上的所有进程,根据每个进程访问的文件缓存的大小确定待迁移进程时可以:将每个进程访问的文件缓存的大小与预设的迁移页阈值进行比较;当进程的文件缓存的大小小于或者等于迁移页阈值时,将该进程确定为待迁移进程;当该进程的文件缓存的大小大于迁移页阈值时,判断该进程访问的文件缓存的大小与迁出进程cpu负载和迁移目标cpu的负载的关系;若该进程迁入迁移目标cpu后,使得迁出进程cpu负载和迁移目标cpu的负载之间的差距变小,将该进程确定为待迁移进程,或者说该进程访问的文件缓存的大小能够使得迁出进程cpu负载和迁移目标cpu的负载之间的差距变小,将该进程确定为待迁移进程。
53.具体的可以通过如下步骤s410至步骤s440确定待迁移进程。
54.在步骤s410中,可以将每个进程访问的文件缓存的大小与预设的迁移页阈值进行比较,预设的迁移页阈值例如可以是64个页,也可以根据经验值设定,或通过试验的方法确定。
55.接着,可以通过如下将要描述的步骤s420至s440来寻找符合负载要求的进程作为待迁移进程。
56.在步骤s420中,当某一进程访问的文件缓存的大小小于或者等于迁移页阈值时,将该进程确定为待迁移进程;当进程访问的文件页小于该阈值时,则认为该进程对cpu的影响很小,可以作为待迁移进程。当进程访问的文件页大于该阈值时,执行步骤s430。
57.在步骤s430中,当某一进程访问的文件缓存的大小大于迁移页阈值时,可以进一步判断该进程访问的文件缓存的大小与迁出进程cpu负载和迁移目标cpu的负载的关系;当进程访问的文件页大于该阈值时,判断若该进程迁移后是否会变成更大的不均衡,如果不会造成更大的不均衡,则也可以作为待迁移进程。
58.这样,在步骤s440中,若该进程迁入迁移目标cpu后,使得迁出进程cpu负载和迁移目标cpu的负载之间的差距变小,将该进程确定为待迁移进程,或者说若该进程访问的文件缓存的大小使得迁出进程cpu负载和迁移目标cpu的负载之间的差距变小,则将该进程确定为待迁移进程。
59.本发明实施例中,当进程访问的文件页小于该阈值,认为该进程对cpu的影响很小,可以作为待迁移进程,当进程访问的文件页大于该阈值时,认为该进程对cpu性能影响较大,需要判断迁移后是否会变成新的不均衡,再进一步确定是否可以作为待迁移进程。例如,cpu a的负载是100(设定一个普通进程最大的负载在代码中是1024),cpu b的负载是20,cpu a与cpu b的不均衡差值为80,在cpu a上有三个进程,进程1负载是10,进程2负载是20,进程3负载是70,进程1负载小于迁移页阈值,另外的两个进程的负载均大于迁移页阈值,如果迁移进程1,那么cpu a的负载会变成90(100-10),cpu b的负载会变成30(20 10),由于进程1的负载较小,对cpu的性能影响较小并且可以缩小cpu a和cpu b负载之间的差距,达到优化效果。遍历至进程2,进程2的负载大于迁移页阈值,如果继续迁移进程2,那么cpu a的负载会变成70(90-20),cpu b的负载会变成50(30 20),那么cpu a与cpu b不均衡差值从70变成20,负载之间的差距变小,达到优化效果。再例如,cpu a的负载是100,cpu b的负载是20,cpu a与cpu b的不均衡差值为80,在cpu a上有两个进程,进程1负载是80,进程2负载是20,两个进程的负载均大于迁移页阈值,如果迁移进程1,那么cpu a的负载会变成20(100-80),cpub会变成100(20 80),变更后cpu a与cpu b的不均衡差值也为80,如果迁移进程1,cpu a与cpu b不均衡差值没有变小,相当于变成新的不均衡,因此不迁移进程1。如果迁移进程2,cpu a的负载变成80,cpu b的负载变成40,那么cpu a与cpu b不均衡差值从80变成40,负载之间的差距变小,达到优化效果。
60.本发明实施例中,如果迁出进程cpu与迁移目标cpu的负载以使用率表示,例如cpu a和cpu b使用率分别是55%和50%,在cpu a上有多个进程,假设负载最小的进程1使用率为2%,如果迁移进程1,那么cpu a使用率会变成53%,cpu b使用率会变成52%,变更后cpu a与cpu b的不均衡差值为1%,迁移后cpu a和cpu b的差距由5%变成1%,达到优化效果。上面的示例中,假设cpu a上负载最小的进程1使用率为7%,如果迁移进程1,那么cpu a使用率会变成48%,cpu b使用率会变成57%,变成新的更大的不均衡,因此不迁移进程1。
61.由于各个cpu上进程占用情况随时可能发生变化,当前时刻根据cpu的负载确定迁出进程cpu和迁移目标cpu,在下一时刻,可能不再是迁出进程cpu和迁移目标cpu,本发明实施例在周期到达时或者现有进程结束或者新进程启动时,重新检测全部node中每个cpu的负载情况,重新执行步骤s310进行判断。
62.在步骤s330中,计算确定出的待迁移进程访问的文件缓存所对应的节点与迁移目标cpu所在节点之间的距离。
63.本发明实施例中,在确定出待迁移进程之后,计算确定出的待迁移进程访问的文件缓存对应的node与迁移目标cpu所在的node的距离。本发明实施例中经过步骤s320的计算确定的待迁移进程可以为一个或者多个,当确定出多个待迁移进程时,需要计算每个待迁移进程访问的文件缓存对应的node与迁移目标cpu所在的node的距离。
64.在步骤s340中,将距离小于或者等于距离阈值的待迁移进程迁移至迁移目标cpu。
65.本发明实施例中,在步骤s340中将距离小于或者等于距离阈值的待迁移进程迁移至空闲cpu的步骤包括:按照先进先出的顺序逐一将距离小于或者等于距离阈值的待迁移进程迁移至迁移目标cpu,直到满足终止条件时,停止对当前进程及后续进程的迁移;其中,所述终止条件为:若当前进程迁入所述迁移目标cpu后,将使得所述迁出进程cpu负载和所述迁移目标cpu的负载之间的差距变大。
66.本发明实施例中,按照先进先出的顺序将距离小于或者等于距离阈值的待迁移进程迁移至迁移目标cpu,直到当前进程如果迁入迁移目标cpu后,会使得迁出进程cpu负载和迁移目标cpu的负载之间的差距变大,不迁移当前进程,并停止后续进程的迁移;或者不迁移当前进程,判断下一个进程如果迁入迁移目标cpu后,是否会使得迁出进程cpu负载和迁移目标cpu的负载之间的差距变小。
67.本发明实施例在确定待迁移进程之后,判断待迁移进程的文件页所在node和迁移目标node的距离;如果小于一定的距离,那么可以迁移,如果大于一定的距离那么不能迁移,迁移下一个符合负载要求的进程,本进程不迁移。
68.如图5所示,cpu 0、1、2、3在同一个node,距离内存0、内存1、内存2、内存3的距离分别是10、20、30、40(设定某一个距离为基础,其他距离为这一距离的倍数),如果将cpu 4上的进程a迁移到cpu 0上,那么进程a再去访问内存1上的文件缓存时,就会从距离10变成距离20,此时出现跨node的cpu迁移,判断当前node和迁移目标node的距离,如果该距离满足性能损失的要求,则可以迁移,如果该距离会造成过大的性能损失,则不可以迁移。
69.如果将cpu 15上的进程b迁移到cpu 0上,那么距离就会从10变成40,判断当前node和迁移目标node的距离,如果该距离满足性能损失的要求,则可以迁移,如果该距离会造成过大的性能损失,则不可以迁移(例如设置的距离阈值为20,则不满足距离要求)。
70.如图6所示,本发明实施例还提供一种基于文件缓存的调度装置,包括:查找模块610、遍历模块620、测距模块630和迁移模块640。
71.其中,查找模块610,适于在多核系统全部节点的cpu之中,至少基于cpu负载大小确定迁出进程cpu和迁移目标cpu;遍历模块620,适于当迁出进程cpu与迁移目标cpu不满足负载均衡条件时,遍历迁出进程cpu上的所有进程,根据每个进程访问的文件缓存的大小确定待迁移进程;测距模块630,适于计算确定出的待迁移进程访问的文件缓存所对应的节点与迁移目标cpu所在节点之间的距离;以及迁移模块640,适于将距离小于或者等于距离阈
值的待迁移进程迁移至迁移目标cpu。
72.根据一种实现方式,查找模块610根据至少基于cpu负载大小确定迁出进程cpu和迁移目标cpu可以为:在全部节点中,选择至少部分作为第一候选节点,以在第一候选节点对应的cpu之中,将其中负载最小的cpu或当前进行负载检测的cpu确定为迁移目标cpu;以及在全部节点中,选择至少部分作为第二候选节点,以在第二候选节点对应的cpu之中,将其中负载最大的cpu确定为迁出进程cpu。
73.其中,第一候选节点包括全部节点,且第二候选节点包括全部节点;或者,第一候选节点为全部节点中负载最小的节点,且第二候选节点为全部节点中负载最大的节点。
74.其中,查找模块610在至少基于cpu负载大小确定迁出进程cpu和迁移目标cpu之前还适于:周期性检测全部node中每个cpu的负载情况,或者在有进程的状态发生变化时检测全部节点中每个cpu的负载情况。
75.根据一种实现方式,遍历模块620遍历迁出进程cpu上的所有进程,根据每个进程访问的文件缓存的大小确定待迁移进程为:将每个进程访问的文件缓存的大小与预设的迁移页阈值进行比较;当该进程访问的文件缓存的大小小于或者等于迁移页阈值时,将该进程确定为待迁移进程;当该进程访问的文件缓存的大小大于迁移页阈值且若所述进程迁入所述迁移目标cpu后使得所述迁出进程cpu负载和所述迁移目标cpu的负载之间的差距变小时,将该进程确定为待迁移进程。
76.根据一种实现方式,迁移模块640将距离小于或者等于距离阈值的待迁移进程迁移至迁移目标cpu为:按照先进先出的顺序逐一将距离小于或者等于距离阈值的待迁移进程迁移至迁移目标cpu,直到满足终止条件时,停止对当前进程及后续进程的迁移;其中,所述终止条件为:若当前进程迁入所述迁移目标cpu后,将使得所述迁出进程cpu负载和所述迁移目标cpu的负载之间的差距变大。
77.本发明实施例中,按照先进先出的顺序将待迁移进程迁移至迁移目标cpu,直到当前进程如果迁入迁移目标cpu后,会使得迁出进程cpu负载和迁移目标cpu的负载之间的差距变大,停止迁移。
78.本发明实施例,在文件加载时对缓存进行记录,迁移进程时通过记录的缓存分布计算是否符合迁移条件,具体可以通过如下函数实现:
79.利用count_file_in_node(struct address_space*mapping)统计进程读写文件缓存加载在哪个node上;因为最终的文件都会加载在物理地址上(内核中是文件页page),那么就可以通过物理地址找到这个物理地址属于哪个node,然后将这个文件页的信息加载到当前进程的信息中:task_struck。
80.利用cuacl_taskfile_in_node(struct task_struct*p)找到进程打开的所有文件的缓存在哪个node,统计迁移进程中文件的缓存发布;因为所有的page信息都已经存到了task_struck,所以就可以通过task_struck找到所有的page信息。
81.利用can_migratione_to_newcpu(struct task_struct*p,struct lb_env*env)计算迁移进程访问的文件缓存是否符合迁移标准。
82.本技术实施例还提供了一种计算设备,参照图7,该计算设备包括存储器1120、处理器1110和存储在所述存储器1120内并能由所述处理器1110运行的计算机程序,该计算机程序存储于存储器1120中的用于程序代码的空间1130,该计算机程序在由处理器1110执行
时实现用于执行根据本发明的方法步骤1131。
83.本技术实施例还提供了一种计算机可读存储介质。参照图8,该计算机可读存储介质包括用于程序代码的存储单元,该存储单元设置有用于执行根据本发明的方法步骤的程序1131

,该程序被处理器执行。
84.这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、u盘、软盘、cd-rom或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
85.在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的基于文件缓存的调度方法。
86.以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
87.在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的优选实施方式。
88.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
89.类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。
90.本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
91.本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权
利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
92.此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
93.此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
94.如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
95.尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献