本发明涉及计算机技术领域,尤其涉及一种动态分配内存的方法、装置及系统。
背景技术:
在计算机系统中,存储器可谓是决定整机性能的关键因素之一。在服务器系统中,常使用dimm(dual-inline-memory-modules,双列直插式存储模块)作为内存。在dimm内存中的颗粒采用了dip(dualinlinepackage:双列直插封装)封装。早期的内存颗粒是直接焊接在主板上面的,这样如果一片内存出现故障,那么整个主板都要报废了。后来在主板上出现了内存颗粒插槽,这样就可以更换内存颗粒了。较常用的内存颗粒是dram(dynamicrandomaccessmemory,动态随机存取存储器)芯片。dimm包括有一个或多个dram芯片在一个小的集成电路板上,利用这块电路板上的一些引脚可以直接和计算机主板相连接。
dimm常应用在服务器系统中。由于dimm容量限制较大,从8g、16g、32g、64g到128g,单个容量较小,相对业务快速的变化缺少灵活性。目前的做法是,单台服务器(单机)各插16根dimm,或者是通过razer卡扩展dimm,以达到扩展内存容量的目的。然而,由于dimm受限于cpu的dimmchannel,因此会带来容量的限制,从而因容量需求形成了不同的规格的服务器,带来了管理上的不便与开销。
技术实现要素:
本发明解决的技术问题之一是提供一种动态分配内存的方法、装置及系统。
根据本发明一方面的一个实施例,提供了一种动态分配内存的方法,包括:接收至少一台服务器的内存分配请求;根据所述内存分配请求,基于由多个经总线接口标准设备驱动的内存颗粒组成的内存池,判断所述内存池是否具有一个或多个空闲的内存颗粒的内存总和满足所请求的内存大小;若是,将所请求的内存分配给所述服务器。
优选的,所述内存颗粒包括dram颗粒,该方法还包括:将dram颗粒的dram接口转换成pcie接口。
优选的,所述将dram颗粒的dram接口转换成pcie接口,包括:将dram接口通过内存缓冲进行容量扩展;将内存控制器的输入连接dram颗粒,在内存控制器进行双倍速率ddr内存进程到pcie进程的转换逻辑,使内存控制器的输出为pcie接口。
优选的,通过pcie设备驱动dram颗粒包括:使能pcie设备的sriov功能;安装物理功能pf驱动和虚拟功能vf驱动;实现pcie地址、服务器地址与内存地址的映射,并将地址映射写入所述pf驱动和vf驱动。
优选的,该方法还包括:对内存池进行部署:由一管理单元控制多台服务器共享内存池的内存空间;在所述管理单元中运行所述pf驱动,从而将用户空间与虚拟功能驱动空间id对应并进行匹配;在各服务器上运行所述虚拟功能驱动,从而使服务器发现自身对应的地址空间并进行操作。
优选的,该方法还包括:判断服务器是否使用完成所分配的内存空间,若是,释放所述内存空间。
优选的,若判断不具有所请求的内存空间,所述方法还包括:等待,并判断是否有新释放的内存空间;若释放的内存空间满足所请求的内存要求,则将释放的内存空间分配给所述服务器。
根据本发明一方面的一个实施例,提供了一种动态分配内存的装置,包括:请求接收单元,用于接收至服务器的内存分配请求;判断单元,用于根据所述内存分配请求,基于由多个经总线接口标准设备驱动的内存颗粒组成的内存池,判断所述内存池是否具有一个或多个空闲的内存颗粒的内 存总和满足所请求的内存大小;分配单元,用于将所请求的内存分配给所述服务器。
优选的,所述内存颗粒包括dram颗粒;该装置还包括:接口转换单元,用于将dram接口通过内存缓冲进行容量扩展;以及,将内存控制器的输入连接dram颗粒,在内存控制器进行ddr内存进程到pcie进程的转换逻辑,使内存控制器的输出为pcie接口,使内存控制器的输出为pcie接口。
优选的,该装置还包括:驱动单元,用于使能pcie设备的sriov功能;安装pf驱动和vf驱动;以及,实现pcie地址、服务器地址与内存地址的映射,并将地址映射写入所述pf驱动和vf驱动。
优选的,该装置还包括:内存池部署单元,用于控制多台服务器共享内存池的内存空间;在所述管理单元中运行所述pf驱动,从而将用户空间与vf空间id对应并进行匹配;以及,在各服务器上运行所述vf驱动,从而使服务器发现自身对应的地址空间并进行操作。
优选的,所述判断单元还用于,判断服务器是否使用完成所分配的内存空间;所述装置还包括:释放单元,用于释放使用完成的内存空间。
优选的,所述判断单元还用于,若判断不具有所请求的内存空间,则等待,并判断是否有新释放的内存空间;若释放的内存空间满足所请求的内存要求,则指示所述分配单元将释放的内存空间分配给所述服务器。
根据本发明一方面的一个实施例,提供了一种动态分配内存的系统,该系统包括:由多个经pcie设备驱动的dram颗粒组成的内存池;一个或多个服务器;以及,上述的任一项的所述动态分配内存的装置。
根据本发明另一方面的一个实施例,提供一种内存,该内存包括多个内存颗粒,其中,所述内存颗粒经总线接口标准设备驱动。
可见,本发明通过由多个经pcie设备驱动的dram颗粒组成的内存池,将服务器与内存通过pcie来分离,可以通过pcie交换实现不同服务器对内存的动态分配和按需分配。优选的,在将dram颗粒的接口转换成pcie接口过程中,通过内存缓冲进行容量扩展。另外,由于通过内存缓冲扩展了内存颗粒,且通过对内存池的动态分配和按需分配,因 此与标准内存相比,不需要增加整个内存条,因此成本有较低的优势。而且,相比于现有标准的内存必须停机维护,pcie设备可以进行热插拔,因此可维护性增强。
本领域普通技术人员将了解,虽然下面的详细说明将参考图示实施例、附图进行,但本发明并不仅限于这些实施例。而是,本发明的范围是广泛的,且意在仅通过后附的权利要求限定本发明的范围。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是根据本发明实施例的动态分配内存的方法的流程图;
图2是根据本发明实施例的动态分配内存的方法中一组dram接口转换成pcie接口的示意图;
图3是根据本发明实施例的动态分配内存的方法中单颗粒dram接口转换成pcie接口的示意图;
图4是根据本发明实施例的动态分配内存的方法中基于pcie接口的dram池部署示意图;
图5是根据本发明实施例的动态分配内存的装置的结构示意图。
本领域普通技术人员将了解,虽然下面的详细说明将参考图示实施例、附图进行,但本发明并不仅限于这些实施例。而是,本发明的范围是广泛的,且意在仅通过后附的权利要求限定本发明的范围。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、pda等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(cloudcomputing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、vpn网络等。
需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元 时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
首先对本发明实施例中的专业术语说明如下。
内存颗粒:也称内存芯片或内存晶片,常指内存条的内存单元。
dram颗粒:由dram芯片作为内存颗粒。
pcie(peripheralcomponentinterfaceexpress,总线接口标准)设备是指支持pcie协议的设备。
sriov功能,允许在设备/虚拟机之间高效共享pcie设备。
vf(virtualfunction,虚拟功能)驱动,主要用于发现pcie设备。
pf(physicalfunction,物理功能)驱动,主要用于管理内存的各用户空间的地址与vf的id的对应关系。
下面结合附图对本发明的技术方案作进一步详细描述。
图1是根据本发明实施例的动态分配内存的方法的流程图。本实施例的方法主要包括如下步骤:
s110、接收服务器的内存分配请求;
s120、根据内存分配请求,基于由多个经pcie设备驱动的内存颗粒组成的内存池,判断内存池是否具有一个或多个空闲的内存颗粒满足所请求的内存空间;
若有所请求的内存空间,执行步骤s130;若没有所请求的内存空间,执行步骤s140。
s130、将所请求的内存空间分配给服务器;
s140、等待;
s150、判断是否有新释放的内存空间,并判断释放的内存空间是否满足所请求的内存要求;
若释放的内存空间满足所请求的内存要求,执行s160;若不满足,返回s140,继续等待。
s160、将释放的内存空间分配给服务器。
上述内存池是由多个经pcie设备驱动的内存颗粒组成,其中,内存颗粒可以是dram颗粒。这意味着,需要对dram颗粒进行接口转换和协议转换,并且,需要利用pcie设备对接口转换后的dram颗粒进行驱动,以及,需要对基于pcie接口的dram池进行部署。
为进一步理解本发明,下面对方案从上述几个方面做进一步详细介绍。
首先,介绍将dram接口转pcie接口的实现。
参见图2,是根据本发明实施例的动态分配内存的方法中一组dram接口转换成pcie接口的示意图。
在具体实现上,可借助fpga实现接口转换及协议转换功能。
将dram接口转pcie接口的过程包括:
(步骤1)dram接口通过memorybuffer进行容量扩展。
本发明提到的内存是指服务器内存。本领域技术人员理解,服务器内存也是内存,它与普通pc机内存在外观和结构上没有什么明显实质性的区别,它主要是在内存上引入了一些新的技术。
例如,服务器内存可分为具有缓存的buffer内存和不具备缓存的unbuffer内存。buffer即缓存器,也可理解成高速缓存,在服务器及图形工作站内存有较多应用,容量多为64k,但随着内存容量的不断增大,其容量也不断增加,具有buffer的内存将对内存的读写速度有较大提高。有buffer的内存几乎都带有ecc(errorcheckingandcorrecting,错误检 查和纠正)功能。
register即寄存器或目录寄存器,在内存上的作用可理解成书的目录,通过register,当内存接到读写指令时,会先检索此目录,然后再进行读写操作,这将大大提高服务器内存工作效率。带有register(寄存器或目录寄存器)的内存一定带buffer,并且目前能见到的register内存也都具有ecc功能。
lrdimm(load-reduceddimm,低负载dimm)通过使用新的技术和较低的工作电压,达到降低服务器内存总线负载和功耗的目的,并让服务器内存总线可以达到更高的工作频率并大幅提升内存支持容量。
对于通常的unbuffereddimm,服务器使用的registereddimm通过在内存条上缓冲信号并重动内存颗粒来提升内存支持容量,而lrdimm内存通过将当前rdimm内存上的register芯片改为一种imb(isolationmemorybuffer)内存隔离缓冲芯片来降低内存总线的负载,并相应地进一步提升内存支持容量。
本发明中的dimm不做类型限制,即,本发明dimm涵盖目前或未来的各类型的dimm。并且,通过dimm的memorybuffer(内存缓冲)功能实现内存容量提升。
在上述步骤(1)之后,通过将fpga的高速io脚与dimm的接口进行连接,然后定义这些引脚,内部逻辑实现是将这些高速的引脚的信号在内部模拟出一个memory控制器。
dram具有功耗低、集成度高(单片容量大)、价格便宜等优点,但是对dram进行控制相对复杂,且需要定时刷新,因此需要设计dram控制器。fpga(fieldprogrammablegatearray)提供大容量可编程逻辑,可设计出符合特定要求的dram控制器(memory控制器)。由于fpga是cmos工艺,其功耗非常小,同时,fpga可重复编写,从而方便进行性能扩展。如必要,只需改变fpga内部逻辑,即能适合不同设计需求或环境要求。除了采用fpga实现内存控制器,还可以采用其他可编程逻辑器件实现,例如cpld(complexprogrammablelogicdevice,复杂可编程逻辑器件)、pld(programmablelogicdevice,复杂可编程逻 辑器件)等。
(步骤2)memory控制器的输入连接dram颗粒,因此memory控制器的输入为支持ddr(doubledatarate,双倍速率)进程的ddr单元。
(步骤3)memory控制器的出口为支持nvme(non-volatilememoryexpress,非易失性存储器标准)与pcie(peripheralcomponentinterfaceexpress,总线接口标准)的高速serdes(serializer/deserializer,串行器/解串器),从而与pcie设备的pcie接口匹配。
本例子中,以ddr内存为例进行说明,其具有传输速率快的优点。
nvme是与ahci一样都是逻辑设备接口标准,是使用pci-e通道的ssd一种规范,nvme的设计之初就有充分利用到pci-essd的低延时以及并行性,还有当代处理器、平台与应用的并行性。ssd的并行性可以充分被主机的硬件与软件充分利用,相比与现在的ahci标准,nvme标准可以带来多方面的性能提升。
pcie属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理、错误报告、端对端的可靠性传输、热插拔以及服务质量(qos)等功能。pcie的主要优势就是数据传输速率高,例如,目前最高的16x2.0版本可达到10gb/s,而且还有相当大的发展潜力。
这里需要将ddr、pcie与nvme的进程/协议进行硬件语言的逻辑翻译实现一整套逻辑,本例子中,在fpga内部实现。为了实现将dram接口转换为pcie接口转换,fpga内部需要识别ddr、pcie与nvme,并进行逻辑转换。参见图2,fpga内部包括ddr单元、nvme单元和pcie单元,其中,ddr单元作为输入,支持ddrprocess,与一组dram颗粒的统一接口连接;nvme单元,支持nvm协议,连接ddr单元和pcie单元;pcie单元,支持pcie协议,其作为fpga输出,提供与pcie设备连接的pcie接口。
通过上述方式,即可将一组dram接口转换成pcie接口,例如转换为pciex8接口。
参见图3,是根据本发明实施例的动态分配内存的方法中单颗粒dram接口转换成pcie接口的示意图。图3方式与图2方式相比,区别在于,并不是更改一组dram颗粒的接口,而是更改单个dram颗粒的接口,这两种方式都可以达到相同的目的。
将dram接口转pcie接口的过程包括:
(步骤1)dram接口通过memorybuffer进行容量扩展。
(步骤2)memory控制器的输入连接dram颗粒,因此memory控制器的输入为支持ddr(doubledatarate)协议的ddr单元。
(步骤3)memory控制器的出口为支持pcie(peripheralcomponentinterfaceexpress,总线接口标准)的pcie单元,从而与pcie设备的pcie接口匹配。
在具体实现上,可以借助晶片实现上述接口转换。将dram接口到pcie接口转换在dram芯片封装时完成,即dram二次封装后接口为pcie的接口芯片。
下面,介绍利用pcie设备对转换后的dram颗粒进行驱动的实现细节。
在经过上述图2或图3所示的接口转换后,已经得到基于pcie接口的dram颗粒,接下来,需要对基于pcie接口的dram进行驱动,由此为多服务器共享内存容量或是单台服务器内多个虚拟机共享内存容量做准备。
本领域技术人员了解,sriov技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。sriov标准允许在虚拟机之间高效共享pcie设备,并且它是在硬件中实现的,可以获得能够与本机性能相当的i/o性能。sriov规范定义了新的标准,根据该标准,创建的新设备可允许将虚拟机直接连接到i/o设备。单个i/o资源可由许多虚拟机共享。共享的设备将提供专用的资源,并且还使用共享的通用资源。这样,每个虚拟机都可访问唯一的资源。因此,启用了sriov并且具有适当的硬件和os支持的pcie设备可以显示为多个单独的物理设备,每个都具有自己的pcie配置空间。
sriov中主要的两种功能是:(1)物理功能(physicalfunction,pf):用于支持sriov功能的pci功能,如sriov规范中定义。pf包含sriov功能结构,用于管理sriov功能。pf是全功能的pcie功能,可以像其他任何pcie设备一样进行发现、管理和处理。pf拥有完全配置资源,可以用于配置或控制pcie设备。(2)虚拟功能(virtualfunction,vf):与物理功能关联的一种功能。vf是一种轻量级pcie功能,可以与物理功能以及与同一物理功能关联的其他vf共享一个或多个物理资源。vf仅允许拥有用于其自身行为的配置资源。
本发明中,对基于pcie接口的dram进行驱动,主要包括以下流程:
(1)首先是使能pcie硬件的sriov功能
这个功能使能是说明这个pcie设备支持sriov功能,可以在os层面发现这个功能设备。
(2)pf驱动
安装在服务器或者是管理机器中的一个驱动,这个驱动主要是为了管理内存的各用户空间的地址与vf的id的对应关系,即pf可以看到pcie设备的全部空间的id对应的地址,可以进行管理。
(3)vf驱动
安装在虚拟机中的一个驱动,主要是用于发现pcie设备。
(4)地址映射
主要是实现pcie的地址、服务器(虚拟机)地址与内存地址的映射。
(5)加载驱动时完成内存地址映射
驱动加载时完成以上这些地址映射,以便在内存中看到这块pcie空间。
最后,介绍对基于pcie接口的dram池进行部署的实现细节。
在完成上述接口转换、基于pcie接口的dram驱动之后,即得到由多个基于pcie接口的dram颗粒组成的内存池,下面就需要对内存池进行合理部署和管理,从而高效进行内存分配,达到多台服务器共享同一内存池的目的。
对基于pcie接口的dram池进行部署主要包括以下流程:
(1)多台物理机分享内存池的内存空间
多台主机共享这个内存池中的存储空间。
(2)管理单元管理pf驱动运行
管理单元中运行的是pf的驱动,作用是将用户空间与vf的空间id对应并进行灵活的在线匹配。
(3)在server上运行vf驱动:
上述准备完成后,vf会在各服务器上运行,服务器发现自己所看到地址空间,可以对空间进行操作。
(4)每个server上的内存空间分配由管理单元来统一管理,灵活在线分配。
参见图4,是根据本发明实施例的动态分配内存的方法中基于pcie接口的dram池部署示意图。
图4中,示出了多台服务器、由多个经pci设备驱动的dram颗粒组成的内存池、管理单元、pcie开关。其中,服务器包括pcie模块,如前描述的,在服务器上运行vf驱动,从而使服务器发现自身地址空间,并对地址空间进行操作。
其中,管理单元负责管理服务器针对内存池的内存分配,包括三个方面:管理已经在使用的内存;释放使用完成的内存;末使用内存分配。具体的,管理单元根据服务器的内存分配请求,向服务器分配请求所需要的内存容量,在使用完成后,再进行释放并再分配到有需要的请求的服务器上。
pcie开关可提供多个端口,从而连接多个内存颗粒,因此可一次性将多个内存颗粒的内存空间分配给特定服务器。
相较于现有技术中每台服务器通过插槽接入固定数量的内存的方式,不但通过内存buffer扩展了内存容量,而且,可按需实现内存分配。例如,一台服务器具有16根插槽,若每个内存条的容量是16g,即使全部插满也只有256g容量;假设现需要300g内存,按照现有方式只有增加一台服务器,虽然这样可以满足内存需求,然而新增加服务器的其他资 源则是浪费。而通过本发明的方式,通过内存buffer扩展了内存容量,并且可根据需求设置一定数量的经pcie设备驱动的dram颗粒,在服务器提出内存分配请求时,可根据请求的内存大小,动态选取满足所请求内存大小的数量的内存颗粒,将这部分内存颗粒的内容分配给服务器,在服务器使用完成后,再动态释放掉这部分内存空间,供其他有需要的服务器使用。
可见,本发明通过将dram颗粒的接口通过可编程逻辑芯片(fpga)或晶片来转换成pcie接口,从而实现dram接口到pcie接口的转换,然后通过pcie设备的驱动,将分配后的pcie设备指定到特定的计算节点后,将这个部分的pcie地址映射到内存地址中,从而实现驱动所分配的那个部分的内存的目的;通过内存池的部署和管理,可为服务器分配所请求的一定数量的内存空间,并对内存进行分配、释放的动态管理。
本发明方案与现有技术相比,至少具有以下优点:
(1)按需求分配内存
通过pcie设备驱动的dram颗粒组成的内存池,可以通过pcie交换实现不同服务器对内存的动态分配和按需分配。
(2)内存与服务器的分离
通过pcie接口的转换,可以实现pcie的扩展,pcie与标准服务器的pcieslot连接,这样将服务器与内存通过pcie来分离。
(3)实现大容量内存
通过内存buffer的扩展,相比标准内存,容量可以扩大很多倍。
(4)节约成本
由于通过内存buffer扩展了内存颗粒,且通过对内存池的动态分配和按需分配,因此与标准内存相比,成本有较低的优势。
(5)可维护性增强
相比于现有标准的内存必须停机维护,pcie设备可以进行热插拔,因此可维护性增强。
本发明实施例提供一种与上述方法相对应的一种动态分配内存的装置。参见图5,该装置包括:
请求接收单元501,用于接收服务器的内存分配请求;
判断单元502,用于根据所述内存分配请求,基于由多个经pcie设备驱动的内存颗粒组成的内存池,判断内存池是否具有一个或多个空闲的内存颗粒的内存总和满足所请求的内存大小;
分配单元503,用于将所请求的内存分配给所述服务器。
优选的,该装置还包括:
接口转换单元504,用于将dram接口通过内存缓冲进行容量扩展;以及,将内存控制器的输入连接dram颗粒,在内存控制器进行ddr内存进程到pcie进程的转换逻辑,使内存控制器的输出为pcie接口,使内存控制器的输出为pcie接口。
优选的,该装置还包括:
驱动单元505,用于使能pcie设备的sriov功能;安装pf驱动和vf驱动;以及,实现pcie地址、服务器地址与内存地址的映射,并将地址映射写入所述pf驱动和vf驱动。
优选的,该装置还包括:
内存池部署单元506,用于控制多台服务器共享内存池的内存空间;在所述管理单元中运行所述pf驱动,从而将用户空间与vf空间id对应并进行匹配;以及,在各服务器上运行所述vf驱动,从而使服务器发现自身对应的地址空间并进行操作。
优选的,
判断单元502还用于,判断服务器是否使用完成所分配的内存空间;
装置还包括:释放单元507,用于释放使用完成的内存空间。
优选的,
判断单元502还用于,若判断不具有所请求的内存空间,则等待,并判断是否有新释放的内存空间;若释放的内存空间满足所请求的内存要求,则指示分配单元503将释放的内存空间分配给所述服务器。
此外,本发明还提供一种动态分配内存的系统,该系统包括:由多个经pcie设备驱动的内存颗粒组成的内存池;一个或多个服务器;以及,如前描述的图5所示的动态分配内存的装置。
另外,本发明还提供一种内存,该内存包括多个内存颗粒,其中,所述内存颗粒经pcie设备驱动。
需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。