CN103761192A - 一种内存分配的方法和装置 - Google Patents

一种内存分配的方法和装置 Download PDF

Info

Publication number
CN103761192A
CN103761192A CN201410023743.0A CN201410023743A CN103761192A CN 103761192 A CN103761192 A CN 103761192A CN 201410023743 A CN201410023743 A CN 201410023743A CN 103761192 A CN103761192 A CN 103761192A
Authority
CN
China
Prior art keywords
memory
amount
tcp
internal memory
ram
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.)
Granted
Application number
CN201410023743.0A
Other languages
English (en)
Other versions
CN103761192B (zh
Inventor
邹勇
林忠能
曲会春
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410023743.0A priority Critical patent/CN103761192B/zh
Publication of CN103761192A publication Critical patent/CN103761192A/zh
Application granted granted Critical
Publication of CN103761192B publication Critical patent/CN103761192B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种内存分配的方法和装置,涉及数据控制领域,用于解决在NIC中为每个TCP连接分配固定内存后,当该TCP连接的报文数量突然增大时,因所分配的固定内存不足而造成丢包的问题。本发明提供的方法具体包括:在单个TCP连接当前的内存剩余量小于该TCP连接当前的内存剩余量下限时,从公共内存资源中获取具有当前内存剩余量下限所对应的内存量的内存资源,分配给该TCP连接,并增加该TCP连接对应的内存总量,进而引起与内存总量相关的内存剩余量下限的增加,最后重复为该TCP分配具有当前内存剩余量的内存直至满足所设定的条件。本发明实施例主要用于NIC通过TCP连接接收报文的过程中。

Description

一种内存分配的方法和装置
技术领域
本发明涉及数据控制领域,尤其涉及一种内存分配的方法和装置。
背景技术
随着计算机通信数据量的不断增大,为了减轻计算机中CPU的计算负担,当两台计算机通过TCP(传输控制协议)建立连接后,TCP连接通常会被卸载到NIC(Network Interface Card,网络适配器)的相应芯片中,进行一定的处理后再上报给CPU。
这一卸载过程的处理流程为:当NIC接收来自另一台计算机发送的TCP报文后,会先将该报文装载到一个内存Block(Block为数据库中的最小存储和处理单位)中,然后再将该报文上送到Driver(驱动)层处理,再经过一定的处理后,上报该报文并释放所占用的内存Block。但是,Driver(驱动)层处理的过程会有很大的延时,而在这个过程中,NIC还在不断地接收报文,因此就需要为NIC预先分配一定量的内存Block,来缓存接收到的报文,但是,当某一TCP连接的报文数量突然增加时,就需要为该TCP连接分配很大的内存,如果为每个TCP连接都按照突发情况预留内存,就需要系统配置非常大的内存空间,这在实际当中是很难实现的。
因此,在现有的技术方案中,并不采取按照突发情况来为TCP连接来预留内存,而仅按照不考虑突发情况时为每个TCP连接分配固定的内存,所以,当某个TCP连接出现报文量突然增大的情况,为该TCP连接分配的固定内存不足时,就只能按照已分配的内存来进行缓存,从而造成丢包的现象。
发明内容
本发明的实施例提供一种内存分配的方法和装置,用于解决在NIC中为每个TCP连接分配固定内存后,当该TCP连接的报文数量突然增大时,因所分配的固定内存不足而造成丢包的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供了一种内存分配的方法,包括:
获取单个TCP连接当前的内存剩余量,所述内存剩余量是指为所述TCP预留的内存总量中尚未使用的内存量;
当所述内存剩余量小于所述TCP连接当前的内存剩余量下限时,从公共内存资源中获取具有第一内存量的内存资源;所述第一内存量用于表示所述当前的内存剩余量下限对应的内存量,所述内存剩余量下限与所述TCP连接的内存总量成正相关关系;
将获取到的具有第一内存量的内存资源分配给所述TCP连接,并将所述TCP连接当前的内存总量增加所述第一内存量;
重复上述步骤,直至所述TCP连接当前的内存剩余量不小于所述TCP连接当前的内存剩余量下限;或者,直至所述TCP连接当前的内存剩余量小于所述TCP连接当前的内存剩余量下限,但所述内存总量超出所述内存总量上限。
结合第一方面,在第一方面的第一种可能的实现方式中,在所述获取单个TCP连接当前的内存剩余量之后,还包括:
当所述内存剩余量大于所述TCP连接对应的当前的内存剩余量上限时,从当前为所述TCP连接分配的内存资源中获取具有第二内存量的内存资源;所述第二内存量为小于所述第一内存量的固定值;
将获取到的具有第二内存量的内存资源释放到公共内存,并从所述TCP连接当前的内存总量中减少所述第二内存量;
重复上述步骤,直至所述TCP连接当前的内存剩余量不大于所述TCP连接当前的内存剩余量上限。
结合第一方面的第一种可能的实现方式中,在第二种可能的实现方式中,所述TCP连接还具有内存总量下限,用于表示每个TCP完成最基本的报文接收动作所需的内存量。
结合第一方面的第二种可能的实现方式中,在第三种可能的实现方式中,所述方法还包括:
根据预计的TCP连接数量预留公共内存资源,以供所有TCP连接共同使用。
结合第一方面的第三种可能的实现方式中,在第四种可能的实现方式中,在所述获取单个TCP连接当前的内存剩余量之前,还包括:
从网络适配器NIC的网卡芯片的内存中,获取所述网卡芯片具有的所有内存资源;所述NIC的网卡芯片的内存用于缓存从所述TCP连接上接收到的数据信息;
将所获取的内存资源,分配给所有所述网卡芯片对应的TCP连接,以及为与所述网卡芯片对应的所有TCP连接预留的公共内存资源;所述分配给所有所述网卡芯片对应的TCP连接的内存资源的内存量与所述为与所述网卡芯片对应的所有TCP连接预留的公共内存资源的内存量之和不大于所述获取的内存资源的内存量。
结合第一方面的第四种可能的实现方式中,在第五种可能的实现方式中,所述内存剩余量下限与所述TCP连接的内存总量成正相关关系包括:
所述内存剩余量下限与所述TCP连接的内存总量成正比例关系,以及所述内存剩余量下限与所述TCP连接的内存总量成正幂次关系。
第二方面,本发明实施例提供了一种内存分配的装置,所述装置包括:
获取模块,用于获取单个TCP连接当前的内存剩余量,所述内存剩余量是指为所述TCP预留的内存总量中尚未使用的内存量;在所述内存剩余量小于所述TCP连接当前的内存剩余量下限时,从公共内存资源中获取具有第一内存量的内存资源;所述第一内存量用于表示所述当前的内存剩余量下限对应的内存量,所述内存剩余量下限与所述TCP连接的内存总量成正相关关系;
管理模块,用于将所述获取模块获取到的具有第一内存量的内存资源分配给所述TCP连接,并将所述TCP连接当前的内存总量增加所述第一内存量;
判断模块,用于在所述管理模块完成获取内存资源并增加内存总量动作后,判断所述TCP连接当前的内存剩余量是否满足不小于所述TCP连接当前的内存剩余量下限;或者,所述TCP连接当前的内存剩余量小于所述TCP连接当前的内存剩余量下限,但所述内存总量超出所述内存总量上限的条件。若判断结果为否,则通知获取模块执行获取所述TCP连接当前的内存剩余量步骤,否则不进行处理。
结合第二方面,在第一种可能的实现方式中,所述获取模块,还用于在当前的内存剩余量大于所述TCP连接对应的当前的内存剩余量上限时,从当前为所述TCP连接分配的内存资源中获取具有第二内存量的内存资源;所述第二内存量为小于所述第一内存量的固定值;
所述管理模块,还用于将所述获取模块获取到的具有第二内存量的内存资源释放到公共内存,并从所述TCP连接当前的内存总量中减少所述第二内存量;
所述判断模块,还用于在所述管理模块完成释放内存资源并减少内存总量动作后,判断所述TCP连接当前的内存剩余量是否大于所述TCP连接当前的内存剩余量上限。当判断结果为是时,通知获取模块执行获取所述TCP连接当前的内存剩余量的步骤,否则不进行处理。
结合第二方面,在第二种可能实现的方式中,所述获取模块还用于从网络适配器NIC的网卡芯片的内存中,获取所述网卡芯片具有的所有内存资源;所述NIC的网卡芯片的内存用于缓存从所述TCP连接上接收到的数据信息;
所述管理模块,还用于将所获取的内存资源,分配给所有所述网卡芯片对应的TCP连接,以及为与所述网卡芯片对应的所有TCP连接预留的公共内存资源;所述分配给所有所述网卡芯片对应的TCP连接的内存资源的内存量与所述为与所述网卡芯片对应的所有TCP连接预留的公共内存资源的内存量之和不大于所述获取的内存资源的内存量。
本发明实施例提供的一种内存分配的方法和装置,通过在单个TCP连接当前的内存剩余量小于该TCP连接当前的内存剩余量下限时,从公共内存资源中获取具有当前内存剩余量下限所对应的内存量的内存资源,分配给该TCP连接,并增加该TCP连接对应的内存总量,进而引起与内存总量相关的内存剩余量下限的增加,最后重复为该TCP分配具有当前内存剩余量的内存的方式,在该TCP连接的报文数量突然增加时,就能够为该TCP连接按照其不断增加的内存剩余量下限的内存量快速分配内存资源,直到为该TCP连接分配的内存能够满足其内存需求为止,这样,通过根据TCP连接当前的内存使用情况为其动态分配内存资源的方式,避免了因TCP连接上的报文数量突然增加,而造成预留的固定内存资源不足,进而出现的丢包的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种内存分配的方法流程图;
图2为本发明实施例提供的一种内存分配量增加的变化示意图;
图3为本发明实施例提供的另一种内存分配的方法流程图;
图4为本发明实施例提供的一种内存分配量减少的变化示意图;
图5为本发明实施例提供的一种内存分配的装置示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种内存分配的方法,其方法流程如图1所示,具体包括:
101、获取单个TCP连接当前的内存剩余量。
其中,所述内存剩余量是指为所述TCP预留的内存总量中尚未使用的内存量。所述内存总量为该TCP所能使用的所有内存资源,可以在初始化时,根据预计的TCP数量为每个TCP连接预留,内存总量具有上限和下限,内存总量下限用于防止为单个TCP连接分配过多而影响其它TCP连接的内存资源的分配,内存资源的下限是用于防止为单个TCP连接所分配的内存资源过少,而造成该TCP连接不能够完成最基本的报文接收动作。
其中,在本方方法实施例中,内存量可以优选使用Block数作为衡量单位。
102、当所述内存剩余量小于所述TCP连接当前的内存剩余量下限时,从公共内存资源中获取具有第一内存量的内存资源。
其中,所述公共内存资源为在为每个TCP连接预留的内存资源之外,单独配置的一定数量的内存资源,为所有的TCP连接所共享,当任意一个TCP连接出现内存不足的情况时,就可以从该公共内存资源中分配一定量的内存给该TCP连接。所述第一内存量用于表示所述当前的内存剩余量下限对应的内存量,所述内存剩余量下限与所述TCP连接的内存总量成正相关关系,其中,正相关关系包含正比关系,以及正幂次关系等,例如:当用Lcur表示某个TCP当前的内存总量,用Ladd表示该TCP连接当前的内存剩余量下限时,Lcur与Ladd之间的数量关系可设定为正比关系,比如,Ladd=XLcur(0<X<1),也可以设定为正幂次关系,比如,Ladd=aXLcur(a>1,0<X<1)。
另外,当某个TCP连接的内存剩余量小于其当前的内存剩余量下限时,就可以认为此时该TCP连接的内存量不能够满足报文接收的需要,那么,就需要为该TCP连接分配内存资源。
103、将获取到的具有第一内存量的内存资源分配给所述TCP连接,并将所述TCP连接当前的内存总量增加所述第一内存量。
其中,所述分配内存资源给TCP连接的方式,可选择从存放公共内存资源的公共池中搬移相应数量的内存到存放TCP内存资源的内存池中,本发明在此不做更多的限制。
另外,需要说明的是,因为所述内存剩余量下限与TCP连接的当前内存总量成正相关关系,所以当所述TCP连接当前的内存总量增加第一内存量时,该TCP连接的内存剩余量下限也需要根据新的内存总量重新计算,计算的方式可采用步骤102中的说明中的相关方法,在此不再赘述。
104、判断所述TCP连接当前的内存剩余量是否满足不小于所述TCP连接当前的内存剩余量下限;或者,所述TCP连接当前的内存剩余量小于所述TCP连接当前的内存剩余量下限,但所述内存总量超出所述内存总量上限的条件。若判断结果为否,则执行步骤101,否则不进行处理。
其中,当判断出TCP连接当前的内存剩余量不小于其当前的内存剩余量下限时,说明当前的内存总量已经足够当前的内存需要了,当前所分配的内存中还剩余了不少,因此,内存所剩余的量一旦超过内存剩余量下限时,就不再为该TCP连接继续分配内存资源了。
其中,当判断出所述TCP连接当前的内存剩余量小于所述TCP连接当前的内存剩余量下限,但所述内存总量超出所述内存总量上限的条件时,说明为该TCP连接分配的内存还不能够满足其内存需求,但是,已经达到内存总量上限了,不允许再为其分配更多的内存资源,防止为其无休止地分配内存资源,从而对其它的TCP连接造成影响。
为了更清楚地说明增加所分配的内存时,上述步骤101至104中各个量的变化情况,本发明实施例以进行3次调整后满足内存需求为例,给出单个TCP连接的内存量及上下限的变化过程,具体如图2所示,其中Lcur(x=0、1、2...)表示第x次调整后当前的内存总量,Lhold(x=0、1、2...)表示第x次调整后当前的内存剩余量,Ladd(x=0、1、2...)表示第x次调整后当前的内存剩余量下限,Lcur(max)表示内存总量上限,Lcur(min)表示内存总量下限,且存在如下数量关系:
Lcur(0)+Ladd(0)=Lcur(1),
Lcur(1)+Ladd(1)=Lcur(2),
Ladd(0)=Lcur(0)/n,
Ladd(1)=Lcur(1)/n,
Ladd(2)=Lcur(2)/n,
其中,n的值表示Ladd与Lcur之间数量的正相关关系,可根根具体情况进行设定。
另外,当同时存在多个TCP连接的报文数量突然增加的情况时,其内存分配方法与单个TCP连接的内存分配方法相同,在此不再赘述。
另外,对TCP连接的内存分配可优选由ToE(TCP offload Engin,TCP卸载引擎)完成,所述ToE存在于支持TCP协议卸载的NIC的网卡芯片中,NIC的网卡芯片中所配置的内存专门用于缓存从所述TCP连接上接收到的数据信息,其内存量受芯片面积、功耗、成本等因素限制,一般仅为几百兆字节。
需要特别说明的是,在步骤101之前,还需要从网络适配器NIC的网卡芯片的内存中,获取所述网卡芯片具有的所有内存资源,并将所获取的内存资源,分配给所有所述网卡芯片对应的TCP连接,以及为与所述网卡芯片对应的所有TCP连接预留的公共内存资源。其中,分配给所有所述网卡芯片对应的TCP连接的内存资源的内存量与为与所述网卡芯片对应的所有TCP连接预留的公共内存资源的内存量之和不大于所获取的内存资源的内存量。
本发明实施例提供的一种内存分配的方法,通过在单个TCP连接当前的内存剩余量小于该TCP连接当前的内存剩余量下限时,从公共内存资源中获取具有当前内存剩余量下限所对应的内存量的内存资源,分配给该TCP连接,并增加该TCP连接对应的内存总量,进而引起与内存总量相关的内存剩余量下限的增加,最后重复为该TCP分配具有当前内存剩余量的内存的方式,在该TCP连接的报文数量突然增加时,就能够为该TCP连接按照其不断增加的内存剩余量下限的内存量快速分配内存资源,直到为该TCP连接分配的内存能够满足其内存需求为止,这样,通过根据TCP连接当前的内存使用情况为其动态分配内存资源的方式,避免了因TCP连接上的报文数量突然增加,而造成预留的固定内存资源不足,进而出现的丢包的问题。
为了进一步说明当TCP连接上的内存量超出所需时,如何减少为该TCP连接分配的内存资源,在本发明实施例的一种实现方式中,还提供了如下方法流程,具体如图3所示,包括:
301、获取单个TCP连接当前的内存剩余量。
302、当所获取的内存剩余量大于所述TCP连接对应的当前的内存剩余量上限时,从当前为所述TCP连接分配的内存资源中获取具有第二内存量的内存资源。
其中,所述第二内存量可以为根据实际情况进行设定的固定值,其大小小于所述第一内存量,通常可选择1个Block的量作为第二内存量。所述内存剩余量上限为根据当前内存总量设定的值,当用Lhold(max)表示内存剩余量上限,用Lcur表示当前内存总量时,内存剩余量上限与当前内存总量的关系可以为Lhold(max):Lcur=1:5,或者,Lhold(max):Lcur=3:10等,具体可根据实际情况进行设定,本发明实施例对此不作更多的限定。
另外,当所述TCP连接的内存剩余量大于该上限时,说明为该TCP连接分配的内存超出了其所需的内存量,因此可以减少为该TCP连接所分配的内存资源了。
303、将获取到的具有第二内存量的内存资源释放到公共内存,并从所述TCP连接当前的内存总量中减少所述第二内存量。
其中,在判断出为所述TCP连接所分配的内存资源已经超出了其所需的内存量时,就通过将将具有第二内存量的内存资源释放到公共内存中来减少为该TCP连接所分配的内存,并且释放到公共内存中的内存资源还能够供其它TCP连接使用。
304、判断所述TCP连接当前的内存剩余量是否大于所述TCP连接当前的内存剩余量上限。当判断结果为是时,执行步骤101,否则不进行处理。
其中,当所述TCP连接当前的内存剩余量不大于其当前的内存剩余量上限时,说明为当前的TCP所分配的内存资源中剩余的量不多,此时的内存占用率很高,再减少时可能会再出现内存不足的现象,因此可以不做处理。
为了更清楚地说明减少所分配的内存时,上述步骤301至304中各个量的变化情况,本发明实施例以进行n次调整后满足内存需求为例,给出单个TCP连接的内存量及上下限的变化过程,具体如图4所示,其中Lcur(x=0、1、2...)表示第x次调整后当前的内存总量,Lhold(x=0、1、2...)表示第x次调整后当前的内存剩余量,Lhold(max,x=0、1、2...)表示第x次调整后当前的内存剩余量上限,Lcur(max)表示内存总量上限,Lcur(min)表示内存总量下限,且存在如下数量关系:
Lcur(0)-m=Lcur(1),
Lcur(1)-m=Lcur(2),
其中,m表示固定的内存减少量,其值可根根具体情况进行设定。
另外,当同时减少多个TCP连接的内存资源时,其内存分配方法与单个TCP连接的内存分配方法相同,在此不再赘述。
在本实施方式中,通过在TCP连接当前的内存剩余量大于其当前的内存剩余量上限时,将小于当前内存剩余量下限的固定内存量的内存从该TCP连接的内存资源中释放到公共内存方法,使得当为某个TCP连接分配的内存资源过多时,能够将多余的内存缓慢地释放到公共内存中,以供其它TCP连接在需要时使用,避免了因为每个TCP连接所预留的内存多于其所需时,内存资源没有被有效利用而造成的内存浪费。
本发明另一实施例提供了一种内存分配的装置,如图5所示,用以实现如图1和图3中所示的方法流程,所述装置包括:
获取模块51,用于获取单个TCP连接当前的内存剩余量,所述内存剩余量是指为所述TCP预留的内存总量中尚未使用的内存量;在所述内存剩余量小于所述TCP连接当前的内存剩余量下限时,从公共内存资源中获取具有第一内存量的内存资源;所述第一内存量用于表示所述当前的内存剩余量下限对应的内存量,所述内存剩余量下限与所述TCP连接的内存总量成正相关关系。
管理模块52,用于将所述获取模块51获取到的具有第一内存量的内存资源分配给所述TCP连接,并将所述TCP连接当前的内存总量增加所述第一内存量。
判断模块53,用于在所述管理模块52完成获取内存资源并增加内存总量动作后,判断所述TCP连接当前的内存剩余量是否满足不小于所述TCP连接当前的内存剩余量下限;或者,所述TCP连接当前的内存剩余量小于所述TCP连接当前的内存剩余量下限,但所述内存总量超出所述内存总量上限的条件。若判断结果为否,则通知获取模块执行获取所述TCP连接当前的内存剩余量步骤,否则不进行处理。
可选的是,所述获取模块51,还用于在当前的内存剩余量大于所述TCP连接对应的当前的内存剩余量上限时,从当前为所述TCP连接分配的内存资源中获取具有第二内存量的内存资源;所述第二内存量为小于所述第一内存量的固定值。
所述管理模块52,还用于将所述获取模块51获取到的具有第二内存量的内存资源释放到公共内存,并从所述TCP连接当前的内存总量中减少所述第二内存量。
所述判断模块53,还用于在所述管理模块52完成释放内存资源并减少内存总量动作后,判断所述TCP连接当前的内存剩余量是否大于所述TCP连接当前的内存剩余量上限。当判断结果为是时,通知获取模块执行获取所述TCP连接当前的内存剩余量的步骤,否则不进行处理。
可选的是,所述获取模块51,还用于从网络适配器NIC的网卡芯片的内存中,获取所述网卡芯片具有的所有内存资源;所述NIC的网卡芯片的内存用于缓存从所述TCP连接上接收到的数据信息。
所述管理模块52,还用于将所获取的内存资源,分配给所有所述网卡芯片对应的TCP连接,以及为与所述网卡芯片对应的所有TCP连接预留的公共内存资源;所述分配给所有所述网卡芯片对应的TCP连接的内存资源的内存量与所述为与所述网卡芯片对应的所有TCP连接预留的公共内存资源的内存量之和不大于所述获取的内存资源的内存量。
本发明实施例提供的一种内存分配的装置,通过在单个TCP连接当前的内存剩余量小于该TCP连接当前的内存剩余量下限时,从公共内存资源中获取具有当前内存剩余量下限所对应的内存量的内存资源,分配给该TCP连接,并增加该TCP连接对应的内存总量,进而引起与内存总量相关的内存剩余量下限的增加,最后重复为该TCP分配具有当前内存剩余量的内存的方式,在该TCP连接的报文数量突然增加时,就能够为该TCP连接按照其不断增加的内存剩余量下限的内存量快速分配内存资源,直到为该TCP连接分配的内存能够满足其内存需求为止,这样,通过根据TCP连接当前的内存使用情况为其动态分配内存资源的方式,避免了因TCP连接上的报文数量突然增加,而造成预留的固定内存资源不足,进而出现的丢包的问题。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (9)

1.一种内存分配的方法,其特征在于,所述方法包括:
获取单个TCP连接当前的内存剩余量,所述内存剩余量是指为所述TCP预留的内存总量中尚未使用的内存量;
当所述内存剩余量小于所述TCP连接当前的内存剩余量下限时,从公共内存资源中获取具有第一内存量的内存资源;所述第一内存量表示所述当前的内存剩余量下限对应的内存量,所述内存剩余量下限与所述TCP连接的内存总量成正相关关系;
将获取到的具有第一内存量的内存资源分配给所述TCP连接,并将所述TCP连接当前的内存总量增加所述第一内存量;
重复上述步骤,直至所述TCP连接当前的内存剩余量不小于所述TCP连接当前的内存剩余量下限;或者,直至所述TCP连接当前的内存剩余量小于所述TCP连接当前的内存剩余量下限,但所述内存总量超出所述内存总量上限。
2.根据权利要求1所述的方法,其特征在于,所述获取单个TCP连接当前的内存剩余量之后,还包括:
当所述内存剩余量大于所述TCP连接对应的当前的内存剩余量上限时,从当前为所述TCP连接分配的内存资源中获取具有第二内存量的内存资源;所述第二内存量为小于所述第一内存量的固定值;
将获取到的具有第二内存量的内存资源释放到公共内存,并从所述TCP连接当前的内存总量中减少所述第二内存量;
重复上述步骤,直至所述TCP连接当前的内存剩余量不大于所述TCP连接当前的内存剩余量上限。
3.根据权利要求2所述的方法,其特征在于,所述TCP连接还具有内存总量下限,用于表示每个TCP完成最基本的报文接收动作所需的内存量。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据预计的TCP连接数量预留公共内存资源,以供所有TCP连接共同使用。
5.根据权利要求1至4中任意一项所述的方法,其特征在于,在所述获取单个TCP连接当前的内存剩余量之前,还包括:
从网络适配器NIC的网卡芯片的内存中,获取所述网卡芯片具有的所有内存资源;所述NIC的网卡芯片的内存用于缓存从所述TCP连接上接收到的数据信息;
将所获取的内存资源,分配给所有所述网卡芯片对应的TCP连接,以及为与所述网卡芯片对应的所有TCP连接预留的公共内存资源;所述分配给所有所述网卡芯片对应的TCP连接的内存资源的内存量与为与为与所述网卡芯片对应的所有TCP连接预留的公共内存资源的内存量之和不大于所述获取的内存资源的内存量。
6.根据权利要求1所述的方法,其特征在于,所述内存剩余量下限与所述TCP连接的内存总量成正相关关系包括:
所述内存剩余量下限与所述TCP连接的内存总量成正比例关系,以及所述内存剩余量下限与所述TCP连接的内存总量成正幂次关系。
7.一种内存分配的装置,其特征在于,所述装置包括:
获取模块,用于获取单个TCP连接当前的内存剩余量,所述内存剩余量是指为所述TCP预留的内存总量中尚未使用的内存量;在所述内存剩余量小于所述TCP连接当前的内存剩余量下限时,从公共内存资源中获取具有第一内存量的内存资源;所述第一内存量用于表示所述当前的内存剩余量下限对应的内存量,所述内存剩余量下限与所述TCP连接的内存总量成正相关关系;
管理模块,用于将所述获取模块获取到的具有第一内存量的内存资源分配给所述TCP连接,并将所述TCP连接当前的内存总量增加所述第一内存量;
判断模块,用于在所述管理模块完成获取内存资源并增加内存总量动作后,判断所述TCP连接当前的内存剩余量是否满足不小于所述TCP连接当前的内存剩余量下限;或者,所述TCP连接当前的内存剩余量小于所述TCP连接当前的内存剩余量下限,但所述内存总量超出所述内存总量上限的条件。若判断结果为否,则通知获取模块执行获取所述TCP连接当前的内存剩余量步骤,否则不进行处理。
8.根据权利要求5所述的装置,其特征在于,所述获取模块,还用于在当前的内存剩余量大于所述TCP连接对应的当前的内存剩余量上限时,从当前为所述TCP连接分配的内存资源中获取具有第二内存量的内存资源;所述第二内存量为小于所述第一内存量的固定值;
所述管理模块,还用于将所述获取模块获取到的具有第二内存量的内存资源释放到公共内存,并从所述TCP连接当前的内存总量中减少所述第二内存量;
所述判断模块,还用于在所述管理模块完成释放内存资源并减少内存总量动作后,判断所述TCP连接当前的内存剩余量是否大于所述TCP连接当前的内存剩余量上限。当判断结果为是时,通知获取模块执行获取所述TCP连接当前的内存剩余量的步骤,否则不进行处理。
9.根据权利要求6所述的装置,其特征在于,所述获取模块还用于从网络适配器NIC的网卡芯片的内存中,获取所述网卡芯片具有的所有内存资源;所述NIC的网卡芯片的内存用于缓存从所述TCP连接上接收到的数据信息;
所述管理模块,还用于将所获取的内存资源,分配给所有所述网卡芯片对应的TCP连接,以及为与所述网卡芯片对应的所有TCP连接预留的公共内存资源;所述分配给所有所述网卡芯片对应的TCP连接的内存资源的内存量与为与为与所述网卡芯片对应的所有TCP连接预留的公共内存资源的内存量之和不大于所述获取的内存资源的内存量。
CN201410023743.0A 2014-01-20 2014-01-20 一种内存分配的方法和装置 Active CN103761192B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410023743.0A CN103761192B (zh) 2014-01-20 2014-01-20 一种内存分配的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410023743.0A CN103761192B (zh) 2014-01-20 2014-01-20 一种内存分配的方法和装置

Publications (2)

Publication Number Publication Date
CN103761192A true CN103761192A (zh) 2014-04-30
CN103761192B CN103761192B (zh) 2016-08-17

Family

ID=50528434

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410023743.0A Active CN103761192B (zh) 2014-01-20 2014-01-20 一种内存分配的方法和装置

Country Status (1)

Country Link
CN (1) CN103761192B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326137A (zh) * 2015-07-02 2017-01-11 腾讯科技(深圳)有限公司 一种内存优化方法、装置及用户设备
CN106339325A (zh) * 2016-08-30 2017-01-18 广东美的制冷设备有限公司 WiFi模块的内存分配方法及装置
CN108139969A (zh) * 2015-10-28 2018-06-08 华为技术有限公司 一种内存配置方法、装置及系统
CN114567413A (zh) * 2022-02-17 2022-05-31 中国银联股份有限公司 一种数据存储方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102014005A (zh) * 2010-12-17 2011-04-13 天津曙光计算机产业有限公司 一种利用多级内存查找方式进行tcp连接管理的方法
CN102279804A (zh) * 2011-08-16 2011-12-14 天津市天祥世联网络科技有限公司 视频监控平台系统的内存池结构及实现方法
CN102455974A (zh) * 2010-10-21 2012-05-16 上海宝信软件股份有限公司 一种内存消耗可控的高速内存申请释放管理系统及方法
CN102497431A (zh) * 2011-12-13 2012-06-13 曙光信息产业(北京)有限公司 一种tcp连接缓存应用数据的内存申请方法和系统
US20130103614A1 (en) * 2008-11-25 2013-04-25 Jason Penzak System and method of allocating dividends to classes of stock shares and sub-classes of the stock shares

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130103614A1 (en) * 2008-11-25 2013-04-25 Jason Penzak System and method of allocating dividends to classes of stock shares and sub-classes of the stock shares
CN102455974A (zh) * 2010-10-21 2012-05-16 上海宝信软件股份有限公司 一种内存消耗可控的高速内存申请释放管理系统及方法
CN102014005A (zh) * 2010-12-17 2011-04-13 天津曙光计算机产业有限公司 一种利用多级内存查找方式进行tcp连接管理的方法
CN102279804A (zh) * 2011-08-16 2011-12-14 天津市天祥世联网络科技有限公司 视频监控平台系统的内存池结构及实现方法
CN102497431A (zh) * 2011-12-13 2012-06-13 曙光信息产业(北京)有限公司 一种tcp连接缓存应用数据的内存申请方法和系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326137A (zh) * 2015-07-02 2017-01-11 腾讯科技(深圳)有限公司 一种内存优化方法、装置及用户设备
CN106326137B (zh) * 2015-07-02 2020-09-22 腾讯科技(深圳)有限公司 一种内存优化方法、装置及用户设备
CN108139969A (zh) * 2015-10-28 2018-06-08 华为技术有限公司 一种内存配置方法、装置及系统
CN106339325A (zh) * 2016-08-30 2017-01-18 广东美的制冷设备有限公司 WiFi模块的内存分配方法及装置
CN106339325B (zh) * 2016-08-30 2020-05-05 广东美的制冷设备有限公司 WiFi模块的内存分配方法及装置
CN114567413A (zh) * 2022-02-17 2022-05-31 中国银联股份有限公司 一种数据存储方法及装置
CN114567413B (zh) * 2022-02-17 2023-06-30 中国银联股份有限公司 一种数据存储方法及装置

Also Published As

Publication number Publication date
CN103761192B (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
CN105912403B (zh) Docker容器的资源管理方法及装置
CN104239150B (zh) 一种硬件资源调整的方法及装置
CN108519917A (zh) 一种资源池分配方法和装置
CN103761192A (zh) 一种内存分配的方法和装置
CN105227489A (zh) 一种带宽管理方法及电子设备
CN107239347B (zh) 一种虚拟化场景下的设备资源分配方法和装置
CN107894922B (zh) Ram资源分配方法
CN111798113A (zh) 资源分配方法、装置、存储介质和电子设备
CN106034153A (zh) 带宽资源分配方法、数据传输方法、装置及系统
CN111190739A (zh) 一种资源分配方法、装置、电子设备及存储介质
CN105354147A (zh) 一种内存池管理方法及管理系统
CN106293945A (zh) 一种跨虚拟机的资源感知方法及系统
CN116471277A (zh) 算力分配方法、装置、服务器和计算机可读存储介质
CN109902059A (zh) 一种cpu与gpu之间的数据传输方法
CN106331192B (zh) 网络协议ip地址分配方法及装置
CN104320855A (zh) 资源调度方法及装置
CN104202305A (zh) 一种转码处理方法、装置及服务器
CN109788325B (zh) 视频任务分配方法及服务器
CN102547818A (zh) 资源标识分配方法和设备
JP2018511209A5 (zh)
CN106682198B (zh) 一种实现自动化部署数据库的方法和装置
CN104244422A (zh) 资源分配方法与装置
CN106447755A (zh) 一种动画渲染系统
CN114217977B (zh) 资源分配方法、装置、设备以及存储介质
CN113760549A (zh) 一种pod部署方法及装置

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211223

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Patentee after: Super fusion Digital Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.