本发明实施例涉及计算机技术领域,尤其涉及一种触发负载均衡调度的方法、装置及服务器。
背景技术:
非一致内存访问架构(nonuniformmemoryaccessarchitecture,简称numa架构)服务器包括通过高速互连总线连接的多个numa节点,每个numa节点包括处理器(centralprocessingunit,简称cpu)、缓存、内存和内存控制器,其中numa节点cpu的多个核可以是无内部互锁流水级的微处理器(microprocessorwithoutinterlockedpipedstages,简称mips)的核。mips是一种采用精简指令集的微处理器,因其具有简洁、具有高度扩展性、高性能、低功耗等优点,被广泛应用于numa服务器中。采用mips作为cpu核的numa服务器称作基于mips的numa服务器。
基于mips的numa服务器在创建进程时为进程随机地分配内存,一个进程对应的内存可能分布在多个不同的numa节点上。在进程运行过程中,当需要访问目标内存进行数据存取时,若运行该进程的cpu与目标内存在同一numa节点上,该cpu直接通过内存控制器访问本地内存;若运行进程的cpu与目标内存不在同一numa节点上,则该cpu需通过其所在numa节点与目标内存所在numa节点之间的高速互连总线访问目标内存所在numa节点的内存(相对于该cpu来说为远程内存),即cpu需进行跨节点访问。例如,为进程1分配的内存分布在节点a和节点b上,假设进程1当前运行的cpu为节点a上的cpu-a1,在进程1运行过程中,若需要访问的目标内存在节点a上,由于cpu-a1与目标内存在同一节点上,cpu-a1直接通过节点a的内存控制器访问本地内存;若目标内存在节点b上,由于cpua1与目标内存不在同一节点,cpu-a1需通过节点a和节点b之间的高速互连总线访问节点b上的内存。
基于mips的numa服务器中,cpu跨节点访问远程内存的延迟远远大于其访问本地内存的延迟。当服务器上存在大量的跨节点访问情况的时候,服务器的性能大大降低,由于进程访问内存节点的不确定性,会造成程序发生性能抖动。因此,基于mips的numa服务器如何触发负载均衡,成为亟待解决的技术问题。
技术实现要素:
本发明实施例提供一种触发负载均衡调度的方法、装置及服务器,以解决当当服务器上存在大量的跨节点访问情况的时候,基于mips的numa服务器的性能大大降低,发生性能抖动的问题。
本发明实施例的一个方面是提供一种触发负载均衡调度的方法,应用于基于mips的numa服务器,包括:
确定内存页面的存在属性信息是否为不允许换出属性信息;
若所述内存页面的存在属性信息为所述不允许换出属性信息,则将所述内存页面的保护属性信息设置为保护状态属性信息,并将所述存在属性信息修改为允许换出属性信息,以使所述内存页面被再次访问时根据所述允许换出属性信息触发负载均衡调度过程。
本发明实施例的另一个方面是提供一种触发负载均衡调度的装置,包括:
属性信息确定模块,用于确定内存页面的存在属性信息是否为不允许换出属性信息;
属性信息设置模块,用于若所述内存页面的存在属性信息为所述不允许换出属性信息,则将所述内存页面的保护属性信息设置为保护状态属性信息,并将所述存在属性信息修改为允许换出属性信息,以使所述内存页面被再次访问时根据所述允许换出属性信息触发负载均衡调度过程。
本发明实施例的另一个方面是提供一种numa服务器,包括:
至少一个numa节点,每个所述numa节点包括cpu和内存区域,所述内存区域为由内存储器划分成的存储区域;
以及,存储在所述内存储器上并可以由任一所述cpu运行的计算机程序,所述任一所述cpu运行的所述计算机程序时实现上述所述的触发负载均衡调度的方法。
本发明实施例提供的触发负载均衡调度的方法、装置及服务器,通过确定内存页面的存在属性信息是否为不允许换出属性信息,可以确定该内存页面是否正在被访问;若确定内存页面的存在属性信息为不允许换出属性信息,说明该内存页面正在被某个进程访问,则将内存页面的保护属性信息设置为保护状态属性信息,以保护不针对该正在被访问的内存页面进行负载均衡调度,从而保证当前正在运行进程不受干扰并能够继续正常运行;并将存在属性信息修改为允许换出属性信息,以使内存页面被再次访问时根据允许换出属性信息触发负载均衡调度过程,以针对该内存页面进行负载均衡调度,增加了触发负载均衡调度程序的机制,使得基于mips的numa服务器可以通过触发负载均衡调度程序,进行负载均衡调度,从而解决了基于mips的numa服务器性能抖动的问题。
附图说明
图1为本发明实施例一提供的触发负载均衡调度的方法流程图;
图2为本发明实施例一提供的一种cpu芯片所采用的现有页表项的结构示意图;
图3为本发明实施例二提供的触发负载均衡调度的方法流程图;
图4为本发明实施例二提供的修改后的cpu芯片页表项的结构示意图;
图5为本发明实施例三提供的触发负载均衡调度的装置结构图;
图6为本发明实施例四提供的触发负载均衡调度的装置结构图;
图7为本发明实施例五提供的基于mips的numa服务器的架构图。
具体实施方式
为使本发明的技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有的基于mips的numa服务器,当服务器上存在大量的跨节点访问情况的时候,服务器的性能大大降低,由于进程访问内存节点的不确定性,会造成程序发生性能抖动,需要对各个numa节点进行负载均衡。例如,若一个numa节点a的内存负载量大,另一numa节点b的内存负载量小,需要节点a上的部分内存迁移到节点b上;或者,需要将numa节点上负载量大的cpu上的进程迁移到同一或者另一numa节点上负载量小的cpu上等等。目前本领域人员多是针对基于x86的numa服务器进行研究,开发出适用于基于x86的numa服务器的负载均衡调度的算法,但是这些负载均衡调度的算法并不能直接适用于基于mips的numa服务器。
需要说明的是,本发明实施例中,除明确指出是特指哪种服务器(例如,基于x86的numa服务器)外,实施例中出现的“服务器”均指上述“基于mips的numa服务器”;如无特殊说明,实施例中出现的“节点”均指“numa节点”。
实施例一
图1为本发明实施例一提供的触发负载均衡调度的方法流程图。本发明实施例针对现有技术中当服务器上存在大量的跨节点访问情况的时候,服务器的性能大大降低,基于mips的numa服务器的性能大大降低,发生性能抖动的问题,提供了触发负载均衡调度的方法。该方法应用于基于mips的numa服务器,具体步骤如下:
步骤s101、确定内存页面的存在属性信息是否为不允许换出属性信息。
在实际应用中,服务器的系统内核中存储有用于管理内存页面的页表,每个内存页面对应于页表中的一个页表项,每个页表项中包括多个按照预设顺序从低位到高位依次排列的属性位,内存页面的属性信息与页表项中的属性位一一对应。
存在属性信息是用于表示常驻内存的内存页面是否允许换出操作的属性信息。存在属性信息在页表项中对应于存在属性位,可以通过设置存在属性位来改变存在属性信息。具体地,可以预先设定存在属性位只能处于第一预设状态或者第二预设状态,若存在属性位为第一预设状态,确定存在属性信息为不允许换出属性信息,若存在属性位为第二预设状态,确定存在属性信息为允许换出属性信息。
例如,图2为本发明实施例所提供的一种cpu芯片所采用的现有页表项结构中的低16位的示意图,这些位是用于存放内存页面的属性信息的属性位。如图2所示,0-15为对应各属性位的编号,编号小的属性位处于编号大的属性位的低位,编号为0的属性位为最低位。其中编号为0的p位即为存在属性位,也称为page_present位。当p位的值为1时,存在属性信息为不允许换出属性信息,当p位的值为0时,存在属性信息为允许换出属性信息。
在实际应用中,不同型号的cpu芯片采用的页表项结构可能不同,图2中仅以其中一种页表项结构进行举例说明,对于其他类似的页表项结构均可以参照本实施例的方法实现,本实施例的方法可以应用多种不同型号的cpu芯片,对于适用的页表项结构不做具体限定。
步骤s102、若内存页面的存在属性信息为不允许换出属性信息,则将内存页面的保护属性信息设置为保护状态属性信息,并将存在属性信息修改为允许换出属性信息,以使内存页面被再次访问时根据允许换出属性信息触发负载均衡调度过程。
其中,保护属性信息是用于表示常驻内存的内存页面是否允许访问、也即是是否处于被保护状态的属性信息。保护属性信息在页表项中对应于保护属性位,可以通过设置保护属性位的值来改变保护属性信息。具体地,可以预先设定保护属性位只能处于第三预设状态或者第四预设状态,若保护属性位为第三预设状态,确定保护属性信息为保护状态属性信息,若存在属性位为第四预设状态,确定保护属性信息为非保护状态属性信息。
本实施例中,若内存页面的存在属性信息为不允许换出属性信息,认为该内存页面正在被访问,不应对该内存页面进行迁移等访问操作,此时将该内存页面的保护属性信息设置为保护状态属性信息,以保护不针对该正在被访问的内存页面进行负载均衡调度,从而保证当前正在运行进程不受干扰并能够继续正常运行。为了保证在该内存页面再次被访问时,可以针对该内存页面进行负载均衡调度过程,还需将存在属性信息修改为允许换出属性信息,使得在该内存页面再次被访问时触发缺页异常,并在进行缺页异常处理过程中触发负载均衡调度过程。
其中,负载均衡调度过程的实现程序可以嵌入在系统内核中的缺页异常处理例程中,当再次访问该内存页面时,由于该内存页面的存在属性信息为允许换出属性信息,触发缺页异常,系统内核会自动运行对应的缺页异常处理例程,从而可以触发负载均衡调度过程。
本实施例中,服务器的系统内核按照预设扫描策略扫描进程的内存页面,并执行步骤s101-s102,以实现对各个节点进行负载均衡调度。
具体地,服务器的系统内核按照预设扫描策略中的初始启动时间,启动对进程的内存页面的逐一扫描,对扫描到的内存页面执行步骤s101-s102;根据预设扫描策略确定下一轮启动时间,并在下一轮启动时间到来时启动下一轮的扫描。
其中,预设扫描策略中包括但不限于给定第一轮扫描的初始启动时间,确定下一轮扫描的启动时间,以及每次扫描内存页面的范围。例如,在针对一进程的内存页面进行负载均衡调度过程中,根据各节点和各进程的负载情况,确定对该进程的内存页面进行下一轮扫描的启动时间;可以规定每次扫描内存页面的范围为固定扫描范围,如可以设定固定扫描范围为256mb。
本实施例中,预设扫描策略可以采用任意一种现有的负载均衡算法中具有类似作用的扫描策略来实现,本发明实施例对此不做具体限定。
需要说明的是,本发明的另一实施方式中,若各numa节点不是采用mips作为cpu核,而是采用其他架构的cpu核,则本实施例中的方法同样适用,本实施例对此不做具体限定。
本发明实施例通过确定内存页面的存在属性信息是否为不允许换出属性信息,可以确定该内存页面是否正在被访问;若内存页面的存在属性信息为不允许换出属性信息,则将内存页面的保护属性信息设置为保护状态属性信息,以保护不针对进程正在访问的内存页面进行负载均衡调度,从而保证当前正在运行进程不受干扰并能够继续正常运行;并将存在属性信息修改为允许换出属性信息,以使内存页面被再次访问时根据允许换出属性信息触发负载均衡调度过程,以针对该内存页面进行负载均衡调度,增加了触发负载均衡调度程序的机制,使得基于mips的numa服务器可以通过触发负载均衡调度程序,进行负载均衡调度,从而解决了基于mips的numa服务器性能抖动的问题。
实施例二
图3为本发明实施例二提供的触发负载均衡调度的方法流程图。在上述实施例一的基础上,本实施例中,在触发负载均衡调度过程之前,还包括:若内存页面的保护属性信息为保护状态属性信息,则将内存页面的存在属性信息设置为不允许换出属性信息。该方法应用于基于mips的numa服务器,如图3所示,该方法的具体步骤如下:
步骤s301、确定内存页面的存在属性信息是否为不允许换出属性信息。
若内存页面的存在属性信息为不允许换出属性信息,执行步骤s302,设置内存页面的保护属性信息;若内存页面的存在属性信息为允许换出属性信息,执行步骤s304触发负载均衡调度过程。
本实施例中,服务器的系统内核中存储有用于管理内存页面的页表,每个内存页面对应于页表中的一个页表项,每个页表项中包括多个按照预设顺序从低位到高位依次排列的属性位,内存页面的属性信息与页表项中的属性位一一对应。
本实施例中的存在属性信息与上述实施例中的存在属性信息一致,本实施例对此不再赘述。
步骤s302、若内存页面的存在属性信息为不允许换出属性信息,则将内存页面的保护属性信息设置为保护状态属性信息,并将存在属性信息修改为允许换出属性信息,以使内存页面被再次访问时根据允许换出属性信息触发负载均衡调度过程。
本实施例中的保护属性信息与上述实施例中的保护属性信息一致,本实施例对此不再赘述。
通常为了使得页表项结构可以被多个不同型号的cpu兼容,页表项中包括几个固定的基本属性位,这几个基本属性位集中设置于页表项的低位。本实施例中,页表项至少包括以下四个基本属性位:存在属性位、大页内存属性位、拆分属性位和全局属性位。其中拆分属性位位于基本属性位中的最高位。
优选地,保护属性信息对应的保护属性位位于拆分属性位的高位,以避免占用基本属性位,以使不同型号的cpu均可兼容使用本实施例中的页表项。另外,保护属性位应位于全局属性位的低位。可选地,保护属性位位于拆分属性位的高位且紧邻拆分属性位。
优选地,若页表项还包括禁止执行属性位,通常禁止执行属性位位于拆分属性位的高位,则保护属性位位于禁止执行属性位与拆分属性位之间。在实际应用中,若页表项包括禁止执行属性位,通常页表项还包括禁止读属性位,禁止读属性位位于禁止执行属性位的高位,因此,保护属性位位于禁止读属性位和禁止执行属性位的低位。
另外,本实施例中的页表项还可以包括特殊页属性位。该特殊页属性位用于表示该内存页面与虚拟地址的关联是否有效,位于保护属性位与拆分属性位之间。当建立或者修改内存页面与虚拟地址的关联时,将特殊页属性位设置为有效关联;当取消内存页面与虚拟地址的关联时,将关联属性位设置为无效关联。
例如,在图2所示的cpu芯片所采用的现有页表项的低16位中,0-15为对应各属性位的编号,编号小的属性位处于编号大的属性位的低位,编号为0的属性位为最低位,编号0-5的六个基础属性位为不同型号的cpu共有的属性位。其中,编号为0的p位为存在属性位,也称为page_present位;编号为4的h位为类型属性位,也称为page_huge位;编号为5的s位为拆分属性位,也称为page_splitting位;编号为6的xi位为禁止执行属性位,也称为page_no_exec位;编号为7的ri位为禁止读属性位,也称为page_no_read位;编号为8的g位为全局属性位,也称为page_global位;编号为1的w位为可写属性位,也称为page_write位;编号为2的a位为可访问属性位,也称为page_accessed位;编号为3的m位为可修改属性位,也称为page_modified位;编号为9的v位为有效属性位,也称为page_valid位;编号为10的d位为脏页属性位,也称为page_dirty位;占用编号为11-13三位的cca位为缓存一致属性位,也称为cache_coherent_access位。
图4为本实施例所提供的另一种cpu芯片所采用的页表项的结构示意图,在图2所示页表项结构的基础上,增加保护属性位和特殊页属性位。如图4所示,在图2所示页表项结构的基础上,本实施例中在xi位和s位之间增加了两个属性位,其中编号为6的sp位为特殊页属性位,也称为page_special位;编号为7的pr位为保护属性位,也称为page_protnone位,保护属性位位于禁止执行属性位与拆分属性位之间;图4中其他属性位与图2所示的同名属性位所表示的含义相同,此处不再一一赘述。
需要说明的是,在实际应用中,不同型号的cpu芯片采用的页表项结构可能不同,本实施例中仅以图2所示的一种页表项结构的修改进行举例说明,对于其他类似的页表项结构的修改均可以参照本实施例的方法实现,本实施例的方法可以应用多种不同型号的cpu芯片,对于可以适用的cpu芯片的型号不做具体限定。
步骤s303、若在将内存页面的保护属性信息设置为保护状态属性信息之前,内存页面的类型属性信息为大页内存属性信息,则在将存在属性信息修改为允许换出属性信息之后,将内存页面的类型属性信息设置为大页内存属性信息。
在实际应用中,如果内存页面为透明大页,透明大页指针对大页内存,可能一个内存页面大小为32mb、或者64mb,为了区分这种大页内存与普通的大小为4kb的内存页面,在页面属性位中设置了类型属性位。内存页面的类型属性信息为大页内存属性信息page_huge,表示该内存页面为大页内存。
通常,当将存在属性信息修改为允许换出属性信息之后,内存页面的类型属性信息会被自动清除,因此,如果在步骤s302中在将内存页面的保护属性信息设置为保护状态属性信息之前,内存页面的类型属性信息为大页内存属性信息,在将存在属性信息修改为允许换出属性信息之后,还需将内存页面的类型属性信息进行恢复,将内存页面的类型属性信息设置为大页内存属性信息,以保证内存页面的类型属性信息真实有效。
需要说明的是,若在将内存页面的保护属性信息设置为保护状态属性信息之前,内存页面的类型属性信息为非大页内存属性信息,则无需执行步骤s303。
步骤s304、若内存页面的存在属性信息为允许换出属性信息,则确定内存页面的保护属性信息是否为保护状态属性信息。
本实施例中,负载均衡调度过程的实现程序可以嵌入在系统内核中的缺页异常处理例程中。当内存页面被再次访问时,若内存页面的存在属性信息为允许换出属性信息,会触发缺页异常,自动运行对应的缺页异常处理例程。在该步骤中,在运行缺页异常处理例程的过程中,在触发负载均衡调用之前,还需进一步确定该内存页面的保护属性信息是否为保护状态属性信息,也即确定内存页面是否处于被保护的状态。若内存页面的保护属性信息为保护状态属性信息,则说明该内存页面的存在属性信息是在上述步骤s302中进行了修改,使得内存页面的存在属性信息为允许换出属性信息,执行步骤s305。若内存页面的保护属性信息为非保护状态属性信息,则执行步骤s306。
步骤s305、若内存页面的保护属性信息为保护状态属性信息,则将内存页面的存在属性信息设置为不允许换出属性信息。
由于在上述步骤s302中将内存页面的存在属性信息设置为允许换出属性信息,表示该内存页面不存在或者损坏导致无法正常使用,以在步骤s304中该内存页面被再次访问时触发缺页异常,从而运行缺页异常处理例程,并触发嵌入在缺页异常处理例程中的负载均衡调度过程。
在步骤s304中,触发缺页异常之后,在进行负载均衡调度过程之前,若确定内存页面的保护属性信息为保护状态属性信息,则说明该内存页面的存在属性信息是在上述步骤s302中进行了修改,使得内存页面的存在属性信息为允许换出属性信息,而并非该内存页面本身不可用。在该步骤s305中将内存页面的存在属性信息设置为不允许换出属性信息,恢复该内存页面的正常状态,以使直接执行步骤s307对该内存页面进行负载均衡调度,而无需执行步骤s306重新分配内存页面,可以提高负载均衡调度过程的效率。
步骤s306、分配新的内存页面。
该步骤可以采用现有技术中任意一种分配新的内存页面的方法实现,本发明实施例在此不再赘述。
步骤s307、触发负载均衡调度过程。
在本实施中,负载均衡调度过程是指根据预设的负载均衡调度策略,针对每个进程的每个内存页面进行的内存迁移,和/或针对每个进程进行的进程迁移。其中,预设的负载均衡调度策略包括对各个节点的cpu、内存等资源的负载情况的统计策略等,该预设的负载均衡调度策略可以由技术人员根据实际需要进行设定,也可以采用现有技术中的任意一种负载均衡调度策略,本发明实施例对此不做具体限定。
本实施例中,服务器的系统内核按照预设扫描策略扫描进程的内存页面,并执行步骤s301-s307,以实现对各个节点进行负载均衡调度。
具体地,服务器的系统内核按照预设扫描策略中的初始启动时间,启动对进程的内存页面的逐一扫描,对扫描到的内存页面执行步骤s301-s307;根据预设扫描策略确定下一次启动时间,并在下一次启动时间到来时启动下一轮的扫描。
本实施例中的预设扫描策略,包括但不限于给定第一轮扫描的初始启动时间,确定下一轮扫描的启动时间,以及每次扫描内存页面的范围。例如,在针对一进程的内存页面进行负载均衡调度过程中,根据各节点和各进程的负载情况,确定对该进程的内存页面进行下一轮扫描的启动时间;可以规定每次扫描内存页面的范围为固定扫描范围,如可以设定固定扫描范围为256mb。
本实施例中的预设扫描策略可以采用任意一种现有的负载均衡算法中具有类似作用的扫描策略来实现,本发明实施例对此不做具体限定。
本发明实施例给出了基于mips的numa服务器负载均衡调度过程的详细过程,并对于保护属性位在页表项中的位置进行了详细地说明。
需要说明的是,本发明的另一实施方式中,若各numa节点不是采用mips的cpu核,而是采用其他架构的cpu核,则本实施例中的方法同样适用,本实施例对此不做具体限定。
本实施例通过在触发负载均衡调度过程之前,确定内存页面的保护属性信息是否为保护状态属性信息,若内存页面的保护属性信息为保护状态属性信息,则将内存页面的存在属性信息设置为不允许换出属性信息,触发负载均衡调度过程,直接对该内存页面进行迁移等负载均衡处理;若内存页面的保护属性信息为非保护状态属性信息,分配新的内存页面,触发负载均衡调度过程,实现了在保证当前正在运行进程不受干扰并能够继续正常运行的同时,能够对所有内存页面进行负载均衡调度,从而解决了基于mips的numa服务器性能抖动的问题。
实施例三
图5为本发明实施例三提供的触发负载均衡调度的装置结构图。本发明实施例提供的触发负载均衡调度的装置可以执行触发负载均衡调度的方法实施例提供的处理流程,如图5所示,触发负载均衡调度的装置50包括:属性信息确定模块501和属性信息设置模块502。
其中,属性信息确定模块501用于确定内存页面的存在属性信息是否为不允许换出属性信息。
属性信息设置模块502用于若内存页面的存在属性信息为不允许换出属性信息,则将内存页面的保护属性信息设置为保护状态属性信息,并将存在属性信息修改为允许换出属性信息,以使内存页面被再次访问时根据允许换出属性信息触发负载均衡调度过程。
本发明实施例提供的装置可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过确定内存页面的存在属性信息是否为不允许换出属性信息,可以确定该内存页面是否正在被访问;若内存页面的存在属性信息为不允许换出属性信息,则将内存页面的保护属性信息设置为保护状态属性信息,以保护不针对进程正在访问的内存页面进行负载均衡调度,从而保证进程的正常运行;并将存在属性信息修改为允许换出属性信息,以使内存页面被再次访问时根据允许换出属性信息触发负载均衡调度过程,以针对该内存页面进行负载均衡调度,增加了触发负载均衡调度程序的机制,使得基于mips的numa服务器可以通过触发负载均衡调度程序,进行负载均衡调度,从而解决了基于mips的numa服务器性能抖动的问题。
实施例四
图6为本发明实施例四提供的触发负载均衡调度的装置结构图。在上述实施例四的基础上,如图6所示,该装置50还包括调度过程触发模块503。
具体地,调度过程触发模块503用于若内存页面的存在属性信息为允许换出属性信息,则触发负载均衡调度过程。
属性信息设置模块502还用于将内存页面的类型属性信息设置为大页内存属性信息。
属性信息设置模块502还用于将内存页面的类型属性信息设置为大页内存属性信息。
在本实施例中,每个内存页面对应于一个页表项,页表项中包括多个按照预设顺序从低位到高位依次排列的属性位,内存页面的属性信息与页表项中的属性位一一对应。保护属性信息对应的保护属性位位于拆分属性位的高位。若页表项包括禁止执行属性位,则保护属性位位于禁止执行属性位与拆分属性位之间。
本发明实施例提供的装置可以具体用于执行上述图3所提供的方法实施例,具体功能此处不再赘述。
本实施例通过在触发负载均衡调度过程之前,确定内存页面的保护属性信息是否为保护状态属性信息,若内存页面的保护属性信息为保护状态属性信息,则将内存页面的存在属性信息设置为不允许换出属性信息,触发负载均衡调度过程,直接对该内存页面进行迁移等负载均衡处理;若内存页面的保护属性信息为非保护状态属性信息,分配新的内存页面,触发负载均衡调度过程,实现了在保证当前正在运行进程不受干扰并能够继续正常运行的同时,能够对所有内存页面进行负载均衡调度,从而解决了基于mips的numa服务器性能抖动的问题。
实施例五
图7为本发明实施例提供的numa服务器的架构图。本发明实施例提供的服务器可以执行触发负载均衡调度的方法实施例提供的处理流程。如图7所示,该服务器70包括:至少一个numa节点701,每个numa节点701包括cpu702和内存区域703,内存区域703为由内存储器划分成的存储区域;以及,存储在内存储器上并可以由任一cpu702运行的计算机程序,任一cpu702运行的计算机程序时实现上述触发负载均衡调度的方法。
其中,各numa节点的cpu为多核处理器,采用mips作为cpu核,各numa节点701之间通过高速互连总线704连接,并可以通过高速互连总线704进行数据交互。
需要说明的是,本发明的另一实施方式中,numa服务器中各numa节点不是采用mips作为cpu核,而是采用其他架构的cpu核,本实施例对此不做具体限定。
本实施例中的计算机程序可以存储在任一numa节点的内存区域中。例如,可以存储在系统内核中的异常处理例程所在的numa节点的内存区域中。
需要说明的是,图7以服务器包括4个numa节点为例对服务器的架构进行说明,本实施例中对服务器所包括的numa节点的数量不做具体限定。本发明实施例提供的服务器可以具体用于执行上述图1和图3所示的触发负载均衡调度的方法实施例,具体功能此处不再赘述。
本发明实施例通过确定内存页面的存在属性信息是否为不允许换出属性信息,可以确定该内存页面是否正在被访问;若确定内存页面的存在属性信息为不允许换出属性信息,说明该内存页面正在被某个进程访问,则将内存页面的保护属性信息设置为保护状态属性信息,以保护不针对该正在被访问的内存页面进行负载均衡调度,从而保证当前正在运行进程不受干扰并能够继续正常运行;并将存在属性信息修改为允许换出属性信息,以使内存页面被再次访问时根据允许换出属性信息触发负载均衡调度过程,以针对该内存页面进行负载均衡调度,增加了触发负载均衡调度程序的机制,使得基于mips的numa服务器可以通过触发负载均衡调度程序,进行负载均衡调度,从而解决了基于mips的numa服务器性能抖动的问题。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。