CN103309840A - 一种新建连接的方法及其装置 - Google Patents
一种新建连接的方法及其装置 Download PDFInfo
- Publication number
- CN103309840A CN103309840A CN2013102850519A CN201310285051A CN103309840A CN 103309840 A CN103309840 A CN 103309840A CN 2013102850519 A CN2013102850519 A CN 2013102850519A CN 201310285051 A CN201310285051 A CN 201310285051A CN 103309840 A CN103309840 A CN 103309840A
- Authority
- CN
- China
- Prior art keywords
- buffer
- cpu
- size
- buffer queue
- buffer pool
- 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.)
- Pending
Links
Images
Abstract
本发明公开了一种提高多核系统新建连接数的方法包括:S1:针对多个CPU,为每一个CPU分别建立与其对应的缓冲池;每一个缓冲池中预先存放设定大小的内存;S2:当第一CPU需要新建连接时,从该第一CPU对应的缓冲池中获取连接所需的内存。本发明还公开了一种新建连接装置。本发明所公开的技术方案降低了CPU之间对系统内存资源的竞争,提高设备对于新建连接请求的实时反应能力。
Description
技术领域
本发明涉及计算机通信领域,尤其涉及一种新建连接的方法及其装置。
背景技术
衡量安全设备的性能四大指标主要包括吞吐量、报文转发率、最大并发连接数和每秒新建连接数,新建连接数作为四大指标之一,主要体现了被测设备对于连接请求的实时反应能力,而影响新建的能力与CPU和内存的速度是否匹配有关。
现有技术中多核新建连接一般采用CPU直接对内存进行新建连接操作,当第一个CPU对内存进行申请新建连接时,其余的CPU对内存进行连接,需要等待第一个CPU新建连接并释放。如图1的现有技术的新建工作原理图。CPU在新建连接的过程中需要反复的为一个连接申请释放内存,这样在CPU反复释放申请内存的过程中,CPU之间对内存资源就会进行很强的竞争,从而造成等待或互斥,大大降低了设备对于新建连接请求的实时反应能力。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何提供一种新建连接的方法,以降低现有技术中CPU对内存直接进行新建连接操作引起CPU之间对内存资源竞争的技术问题;并提供了降低CPU之间的竞争的一种新建连接装置。
(二)技术方案
为了解决上述技术问题,一方面,本发明提供一种新建连接的方法,包括如下步骤:
S1:针对多个CPU,为每一个CPU分别建立与其对应的缓冲池;每一个缓冲池中预先存放设定大小的内存;
S2:当第一CPU需要新建连接时,从该第一CPU对应的缓冲池中获取连接所需的内存。
优选地,所述缓冲池包括多个缓存队列;
所述每一个缓存队列最大所占用的内存为:N*S,其中,N为每个缓存队列中允许的最大值,S为每个连接占用的内存大小。
优选地,所述缓冲池包括多个缓存队列;
该方法进一步包括:检测所任意一个缓冲池的缓存队列的大小是否不足预先设定的每个缓存队列的最小保证大小K,如果是,将该缓存队列的大小扩充至M个S大小的内存挂到该缓存队列上,其中M=2*K,且N≥2*K,N为每个缓存队列中允许的最大值。
优选地,该方法进一步包括:
当第二CPU收到表示拆除连接的报文时,直接将该连接的内存保存到该第二CPU对应的缓存池中。
优选地,所述缓冲池包括多个缓存队列;
该方法进一步包括:检测所任意一个缓冲池的缓存队列的大小是否大于N,如果是,将该缓存队列的大小缩减为N/2,其中,N/2≥K,K为每个缓存队列的最小保证大小。
另一方面,本发明还提供了一种新建连接装置,包括建立模块和获取模块;
所述建立模块,用于针对多个CPU,为每一个CPU分别建立与其对应的缓冲池;每一个缓冲池中预先存放设定大小的内存;
所述获取模块,用于当第一CPU需要新建连接时,从该第一CPU对应的缓冲池中获取连接所需的内存。
优选地,所述建立模块,为每一个CPU分别建立与其对应的包括多个缓存队列的缓冲池,所述每一个缓存队列最大所占用的内存为:N*S,其中,N为每个缓存队列中允许的最大值,S为每个连接占用的内存大小。
优选地,所述建立模块,为每一个CPU分别建立与其对应的包括多个缓存队列的缓冲池;
该装置进一步包括:第一检测处理模块,用于检测任意一个缓冲池的缓存队列的大小是否不足预先设定的每个缓存队列的最小保证大小K,如果是,将该缓存队列的大小扩充至M个S大小的内存挂到该缓存队列上,其中M=2*K,且N≥2*K,N为每个缓存队列中允许的最大值。
优选地,所述装置还包括释放模块,用于当第二CPU收到表示拆除连接的报文时,直接将该连接的内存保存到该第二CPU对应的缓存池中。
优选地,所述建立模块,为每一个CPU分别建立与其对应的包括多个缓存队列的缓冲池;
该装置进一步包括:第二检测处理模块,用于检测任意一个缓冲池缓存队列的大小是否大于N,如果是,将该缓存队列的大小缩减为N/2,其中,N/2≥K,K为每个缓存队列的最小保证大小。
(三)有益效果
本发明所提出的一种新建连接方法及其装置的技术方案有如下优点:由于本发明中的每一个CPU各自对应一个缓冲池,而每一个缓冲池中预先存放设定大小的内存,这样每一个CPU仅对自己对应的缓冲池操作,减少了CPU之间对内存直接进行操作而引起的等待或互斥,降低了CPU之间的相互竞争,从而提高设备对于新建连接请求的实时反应能力。
附图说明
图1为现有技术的新建原理图;
图2为本发明实施例的一种新建连接的方法的流程图;
图3为本发明实施例的一种新建连接方法的原理图;
图4为本发明优选基于缓存队列的实施例的流程图;
图5为本发明实施例的一种新建连接装置的基本结构示意图;
图6为本发明实施例的一种新建连接装置的优选结构示意图。
具体实施方式
下面结合说明书附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例仅用于说明本发明,但不用来限制本发明的范围。
每秒新建连接数是一般是指中间设备在单位时间内(一般是1秒内)所能建立连接的数量,其大小直接影响中间系统在单位时间内所能建立的最大连接数量,是衡量中间系统性能的一个重要指标。
针对多核系统中CPU之间存在的竞争,为了克服CPU之间的竞争,提高设备的性能。
本发明实施例首先提出了一种新建连接的方法,如图2所示,该方法包括如下步骤:
S1:针对多个CPU,为每一个CPU分别建立与其对应的缓冲池;每一个缓冲池中预先存放设定大小的内存;
S2:当第一CPU需要新建连接时,从该第一CPU对应的缓冲池中获取连接所需的内存。
可见,在本发明实施例中,由于每一个CPU各自对应一个缓冲池,而每一个缓冲池中预先存放设定大小的内存,这样每一个CPU仅对自己对应的缓冲池操作,减少CPU了之间对内存直接进行操作而引起的等待或互斥,降低了CPU之间的相互竞争,从而提高设备对于新建连接请求的实时反应能力。参见图3,展示的是本发明实施例的原理图。
本发明实施例的上述方法中,缓冲池可包括多个缓存队列;且每一个缓存队列最大所占用的内存为:N*S,其中,N为每个缓存队列中允许的最大值,S为每个连接占用的内存大小。可以满足连接所需要的内存大小。
在本发明的另一个实施例中,当缓冲池包括多个缓存队列;在本发明实施例上,进一步包括:检测任意一个缓冲池的缓存队列的大小是否不足预先设定的每个缓存队列的最小保证大小K,如果是,将该缓存队列的大小扩充至M个S大小的内存挂到该缓存队列上,其中M=2*K,且N≥2*K,N为每个缓存队列中允许的最大值。通过对缓存队列的大小进行适当的调整,即可以满足实际连接操作的需要,又避免造成不必要的系统资源的浪费。
为了节约系统资源,减少资源浪费,需要在本发明实施例上,进一步包括:
当第二CPU收到表示拆除连接的报文时,直接将该连接的内存保存到该第二CPU对应的缓存池中。
同样,为了即可以满足实际连接操作的需要,又避免造成不必要的系统资源的浪费。需要对缓冲池进行适当地缩减,具体包括如下步骤:
所述缓冲池包括多个缓存队列;
进一步包括:检测任意一个缓冲池的缓存队列的大小是否大于N,如果是,将该缓存队列的大小缩减为N/2,其中,N/2≥K,K为每个缓存队列的最小保证大小。
下面以缓冲池包括多个缓冲队列,详细说明本发明的一个实施例的实现过程。
如图4为本发明的一个优选实施例的新建连接方法的流程图。其具体步骤包括:
步骤S10:针对多个CPU,为每一个CPU分别建立与其对应的缓存队列;每一个缓存队列中预先存放设定大小的内存。
其中,设定的内存的大小的依据是IP地址协议和设备支持的业务数量,且每一个缓存队列最大所占用的内存为:N*S,其中,N为每个缓存队列中允许的最大值,S为每个连接占用的内存大小。这样既可以避免内存的浪费,同时又能保证缓冲池中内存的数量足够系统使用。
每个缓存队列允许的最大值N,取决于CPU数量、内存和CPU性能。例如4个CPU,每个CPU处理数据包的能力为2500个/s,那么队列大小就可以设置成5000个,且5000个大小实际占用内存是很少的。
为了降低多核系统中CPU之间的竞争,缓冲队列的数量是与硬件平台的CPU数量相同。如有4个CPU的硬件,则对应的缓存队列为4个,每个CPU对应一个缓存队列,这样既可以提高设备的性能,又合理利用了内存资源。
由于大多数软件平台基于linux操作系统做的,linux有相应的机制获取CPU数量,并且可以对每个CPU绑定一个固定的线程,因而CPU在执行自己的线程时是可以获取相应的CPU的ID号,假如有4个CPU的硬件,则获取CPU的id号分别为0、1、2和3,其对应的缓存队列号分别为0、1、2和3。
步骤S11:当第一CPU需要新建连接时,从该第一CPU对应的缓冲池中获取连接所需的内存。
步骤S12:检测任意一个缓冲池的缓存队列的大小是否不足预先设定的每个缓存队列的最小保证大小K,如果是,将该缓存队列的大小扩充至M个S大小的内存挂到队列上,其中M=2*K,且N≥2*K,N为每个缓存队列中允许的最大值。
缓存队列扩充数量M是根据最小保证数量来扩充,一般扩充为最小保证数量K的两倍。这样既可以满足新建连接的需要,又减少内存资源不必要的浪费,还可以降低后续处理的等待时间,从而提高设备对于新建连接请求的实时反应能力。而最小保证数量的值一般是网卡缓冲队列的大小的几倍。在linux系统中,网卡缓冲队列的值一般是256,本发明实施例设置的大小是500。
步骤S13:当第二CPU收到表示拆除连接的报文时,直接将该连接的内存保存到该第二CPU对应的缓存队列中。
步骤S14:检测任意一个缓冲池的缓存队列的大小是否大于N,如果是,将该缓存队列的大小缩减为N/2,其中,N/2≥K,K为每个缓存队列的最小保证大小。
缩减后的缓存队列的大小是以每个缓存队列中允许的最大值为依据的,本发明实施例选取的是每个缓存队列中允许的最大值的一半。
至此,则完成了本发明实施例中新建连接的过程。
另外,需要说明的是,上述基于图4的所有流程描述是本发明新建连接方法的一种优选的实现过程,在本发明新建连接方法的实际实现中,可以根据需要在图1所示流程的基础上进行任意变形,可以是选择图4中的任意步骤来实现,各步骤的先后顺序也可以根据需要调整等。比如,在一种实际实现中,可以不执行步骤S12、S13或S14。
本发明一个实施例中还提出了一种新建连接装置,参见图5,该装置包括:包括建立模块211和获取模块221;
所述建立模块211,用于针对多个CPU,为每一个CPU分别建立与其对应的缓冲池;每一个缓冲池中预先存放设定大小的内存;
所述获取模块221,用于当第一CPU需要新建连接时,从该第一CPU对应的缓冲池中获取连接所需的内存。
在本发明装置的一个实施例中,为了满足连接所需要的内存。该新建装置的建立模块211,为每一个CPU分别建立与其对应的包括多个缓存队列的缓冲池;所述每一个缓存队列最大所占用的内存为:N*S,其中,N为每个缓存队列中允许的最大值,S为每个连接占用的内存大小。
在本发明装置的另一个实施例中,为了降低后续处理的等待时间,提高设备对于新建连接请求的实时反应能力,参考图6,新建连接装置中的建立模块,为每一个CPU分别建立与其对应的包括多个缓存队列的缓冲池;该装置进一步包括:第一检测处理模231,用于检测任意一个缓冲池的缓存队列的大小是否不足预先设定的每个缓存队列的最小保证大小K,如果是,将该缓存队列的大小扩充至M个S大小的内存挂到该缓存队列上,其中M=2*K,且N≥2*K,N为每个缓存队列中允许的最大值。
在本发明装置的又一个实施例中,参考图6,该装置还包括释放模块241,用于当第二CPU收到表示拆除连接的报文时,直接将该连接内存保存到该第二CPU对应的缓存池中。将闲置的连接释放,不占用资源,提高了资源的利用率,合理有效地利用资源。
在本发明装置的再一个实施例中,为了更进一步节约资源,参考图6,该装置的建立模块,为每一个CPU分别建立与其对应的包括多个缓存队列的缓冲池;该装置进一步包括:第二检测处理模块251,用于检测所对应的缓存队列的大小是否大于N,如果是,将该缓存队列的大小缩减为N/2,其中,N/2≥K,K为每个缓存队列的最小保证大小。
需要说明的是,上述图6所示的新建连接装置中的各个实施例的结构可以进行任意组合。如只需要获取新建连接的内存,不需要对缓冲池的内存进行释放或扩充处理;可以只进行连接拆除处理,不需进行获取新建连接的内存处理。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。
Claims (10)
1.一种新建连接的方法,其特征在于,包括如下步骤:
S1:针对多个CPU,为每一个CPU分别建立与其对应的缓冲池;每一个缓冲池中预先存放设定大小的内存;
S2:当第一CPU需要新建连接时,从该第一CPU对应的缓冲池中获取连接所需的内存。
2.根据权利要求1所述的方法,其特征在于,所述缓冲池包括多个缓存队列;
所述每一个缓存队列最大所占用的内存为:N*S,其中,N为每个缓存队列中允许的最大值,S为每个连接占用的内存大小。
3.根据权利要求1所述的方法,其特征在于,所述缓冲池包括多个缓存队列;
该方法进一步包括:检测任意一个缓冲池中缓存队列的大小是否不足预先设定的每个缓存队列的最小保证大小K,如果是,将该缓存队列的大小扩充至M个S大小的内存挂到该缓存队列上,其中M=2*K,且N≥2*K,N为每个缓存队列中允许的最大值。
4.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
当第二CPU收到表示拆除连接的报文时,直接将该连接的内存保存到该第二CPU对应的缓存池中。
5.根据权利要求1所述的方法,其特征在于,所述缓冲池包括多个缓存队列;
该方法进一步包括:检测任意一个缓冲池中缓存队列的大小是否大于N,如果是,将该缓存队列的大小缩减为N/2,其中,N/2≥K,K为每个缓存队列的最小保证大小。
6.一种新建连接装置,其特征在于,包括建立模块和获取模块;
所述建立模块,用于针对多个CPU,为每一个CPU分别建立与其对应的缓冲池;每一个缓冲池中预先存放设定大小的内存;
所述获取模块,用于当第一CPU需要新建连接时,从该第一CPU对应的缓冲池中获取连接所需的内存。
7.根据权利要求6所述的装置,其特征在于,所述建立模块,为每一个CPU分别建立与其对应的包括多个缓存队列的缓冲池;
所述每一个缓存队列最大所占用的内存为:N*S,其中,N为每个缓存队列中允许的最大值,S为每个连接占用的内存大小。
8.根据权利要求6所述的装置,其特征在于,所述建立模块,为每一个CPU分别建立与其对应的包括多个缓存队列的缓冲池;
该装置进一步包括:第一检测处理模块,用于检测任意一个缓冲池中缓存队列的大小是否不足预先设定的每个缓存队列的最小保证大小K,如果是,将该缓存队列的大小扩充至M个S大小的内存挂到该缓存队列上,其中M=2*K,且N≥2*K,N为每个缓存队列中允许的最大值。
9.根据权利要求6所述的装置,其特征在于,其特征在于,所述装置还包括释放模块,用于当第二CPU收到表示拆除连接的报文时,直接将该连接的内存保存到该第二CPU对应的缓存池中。
10.根据权利要求6所述的装置,其特征在于,所述建立模块包括多个缓存队列;
该装置进一步包括:第二检测处理模块,用于检测检测任意一个缓冲池中缓存队列的大小是否大于N,如果是,将该缓存队列的大小缩减为N/2,其中,N/2≥K,K为每个缓存队列的最小保证大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102850519A CN103309840A (zh) | 2013-07-08 | 2013-07-08 | 一种新建连接的方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102850519A CN103309840A (zh) | 2013-07-08 | 2013-07-08 | 一种新建连接的方法及其装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103309840A true CN103309840A (zh) | 2013-09-18 |
Family
ID=49135080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013102850519A Pending CN103309840A (zh) | 2013-07-08 | 2013-07-08 | 一种新建连接的方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103309840A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106230823A (zh) * | 2016-08-01 | 2016-12-14 | 北京神州绿盟信息安全科技股份有限公司 | 一种流量统计方法及装置 |
CN109284188A (zh) * | 2018-09-03 | 2019-01-29 | 武汉斗鱼网络科技有限公司 | 一种缓冲数组维护方法、装置、终端及可读介质 |
CN110557436A (zh) * | 2019-07-31 | 2019-12-10 | 视联动力信息技术股份有限公司 | 一种数据传输方法、装置、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1147650A (zh) * | 1995-06-19 | 1997-04-16 | 株式会社东芝 | 多处理系统 |
JP2007034910A (ja) * | 2005-07-29 | 2007-02-08 | Fujitsu Ten Ltd | マルチcpuシステム及びスケジューラ |
CN101055556A (zh) * | 2006-04-10 | 2007-10-17 | 中国科学院研究生院 | 一种多cpu系统及cpu之间消息传递的方法 |
CN101093450A (zh) * | 2006-06-19 | 2007-12-26 | 迈普(四川)通信技术有限公司 | 一种多cpu互斥的方法 |
CN102497322A (zh) * | 2011-12-19 | 2012-06-13 | 曙光信息产业(北京)有限公司 | 一种基于分流网卡和多核cpu实现的高速包过滤设备和方法 |
CN102571580A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据接收方法和计算机 |
-
2013
- 2013-07-08 CN CN2013102850519A patent/CN103309840A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1147650A (zh) * | 1995-06-19 | 1997-04-16 | 株式会社东芝 | 多处理系统 |
JP2007034910A (ja) * | 2005-07-29 | 2007-02-08 | Fujitsu Ten Ltd | マルチcpuシステム及びスケジューラ |
CN101055556A (zh) * | 2006-04-10 | 2007-10-17 | 中国科学院研究生院 | 一种多cpu系统及cpu之间消息传递的方法 |
CN101093450A (zh) * | 2006-06-19 | 2007-12-26 | 迈普(四川)通信技术有限公司 | 一种多cpu互斥的方法 |
CN102497322A (zh) * | 2011-12-19 | 2012-06-13 | 曙光信息产业(北京)有限公司 | 一种基于分流网卡和多核cpu实现的高速包过滤设备和方法 |
CN102571580A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据接收方法和计算机 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106230823A (zh) * | 2016-08-01 | 2016-12-14 | 北京神州绿盟信息安全科技股份有限公司 | 一种流量统计方法及装置 |
CN109284188A (zh) * | 2018-09-03 | 2019-01-29 | 武汉斗鱼网络科技有限公司 | 一种缓冲数组维护方法、装置、终端及可读介质 |
CN109284188B (zh) * | 2018-09-03 | 2020-10-16 | 武汉斗鱼网络科技有限公司 | 一种缓冲数组维护方法、装置、终端及可读介质 |
CN110557436A (zh) * | 2019-07-31 | 2019-12-10 | 视联动力信息技术股份有限公司 | 一种数据传输方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102098503B (zh) | 一种多核处理器并行解码图像的方法和装置 | |
CN104506379B (zh) | 网络数据捕获方法和系统 | |
CN109697122A (zh) | 任务处理方法、设备及计算机存储介质 | |
CN107256180A (zh) | 数据处理方法、装置及终端 | |
CN107491346A (zh) | 一种应用的任务处理方法、装置及系统 | |
CN103309840A (zh) | 一种新建连接的方法及其装置 | |
WO2013048943A1 (en) | Active state power management (aspm) to reduce power consumption by pci express components | |
CN105516024A (zh) | 一种基于队列的任务流量监控方法及系统 | |
CN106325996B (zh) | 一种gpu资源的分配方法及系统 | |
CN103729236A (zh) | 一种限制云计算用户资源使用额度的方法 | |
CN110888704A (zh) | 一种高并发接口处理方法、装置、设备及存储介质 | |
CN107479966B (zh) | 一种基于多核心cpu的信令采集方法 | |
CN108037898A (zh) | 一种基于Ceph的dpdk通讯的方法、系统及装置 | |
CN106325995B (zh) | 一种gpu资源的分配方法及系统 | |
CN103885900B (zh) | 数据访问处理方法、PCIe设备和用户设备 | |
CN103823712A (zh) | 一种多cpu虚拟机系统的数据流处理方法和装置 | |
US10135944B2 (en) | Processing a unit of work | |
CN103873474B (zh) | 基于Windows的TCP/IP协议的网络传输方法 | |
CN108075915A (zh) | 一种基于自适应控制策略的rdma通信连接池管理方法 | |
CN100535864C (zh) | 一种系统进程调度下无效超时消息的方法及消息发送方法 | |
CN103116527B (zh) | 一种基于网络控制器的超大规模栅栏同步方法 | |
CN105591790A (zh) | 数据通信连接池管理装置 | |
EP1214652A2 (en) | Efficient event waiting | |
CN207424866U (zh) | 一种基于异构多核处理器的内核之间的数据通讯系统 | |
CN102693434A (zh) | 射频识别设备接口层的通信装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130918 |
|
RJ01 | Rejection of invention patent application after publication |