CN113778674A - 一种负载均衡设备配置管理在多核下的免锁实现方法 - Google Patents
一种负载均衡设备配置管理在多核下的免锁实现方法 Download PDFInfo
- Publication number
- CN113778674A CN113778674A CN202111012642.XA CN202111012642A CN113778674A CN 113778674 A CN113778674 A CN 113778674A CN 202111012642 A CN202111012642 A CN 202111012642A CN 113778674 A CN113778674 A CN 113778674A
- Authority
- CN
- China
- Prior art keywords
- configuration
- data
- configuration data
- pointer
- lock
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种负载均衡设备配置管理在多核下的免锁实现方法,本发明主要针对多核下并发多线程在访问配置数据的无锁实现,需要访问配置数据的线程无需关心配置数据的变化,直接读取使用;实现无锁技术使得多核下多线程并发的修改配置数据和访问配置数据,从而提供设备对数据报文的高速处理。
Description
技术领域
本发明涉及负载均衡配置管理技术领域,具体是指一种负载均衡设备配置管理在多核下的免锁实现方法。
背景技术
负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。
负载均衡的属于高性能数通设备,一般都是采用多核CPU,软件实现都是基于多线程并发处理。这导致多个并行运行的线程会同时访问同一个配置数据,目前一般的做法是通过自旋锁来实现数据的读写保护。
目前多核下多线程并发访问同一个配置数据时,如何处理来提高设备对数据转发性能。目前广泛实用的技术是自旋锁。但在多核平台下,由于多核线程共享同一个管理数据而频繁使用自旋锁,这导致线程处理数据报文的性能下降。现有技术使用最直观和易于理解的加锁技术,就是给多核共享的配置数据加自旋锁提供保护,一个显著的问题就是,如果多个核同时使用同一个管理数据,多个核只能排队顺序执行,导致设备对数据的吞吐性能下降。所以,一种负载均衡设备配置管理在多核下的免锁实现方法成为人们亟待解决的问题。
发明内容
本发明要解决的技术问题是一种负载均衡设备配置管理在多核下的免锁实现方法。
为解决上述技术问题,本发明提供的技术方案为一种负载均衡设备配置管理在多核下的免锁实现方法,包括以下步骤:
步骤一:配置数据管理线程,用于负责配置数据的增加删除和修改,规定配置管理数据使用指针,指针指向一块配置数据结构;
步骤二:设置标记数组,所述标记数组的成员标记各个使用配置数据线程,并检测所有配置数据的指针数据;
步骤三:在修改或删除配置数据时,配置管理线程先保存配置数据指针,再将新的配置数据的地址赋值给该支配数据的指针,并将标记数组的每个成员赋值1;
步骤四:检查这个标记数组,如果标记数组所有的成员都是0,删除旧的配置数据内存块。
作为改进,所述管理线程谓设备的业务处理核心线程,可以绑定到CPU多个处理核且可并发执行的。
作为改进,所述配置管理数据的线程获取配置指针后,使用该指针指向的配置数据,期间不得重新获取配置指针。
作为改进,步骤二中所述指针数据的下标是各个使用配置数据的线程编号。
本发明与现有技术相比的优点在于:本发明主要针对多核下并发多线程在访问配置数据的无锁实现,需要访问配置数据的线程无需关心配置数据的变化,直接读取使用;实现无锁技术使得多核下多线程并发的修改配置数据和访问配置数据,从而提供设备对数据报文的高速处理。
附图说明
图1是本发明一种负载均衡设备配置管理在多核下的免锁实现方法的示意图。
图2是本发明一种负载均衡设备配置管理在多核下的免锁实现方法的系统流程示意图。
具体实施方式
下面结合附图对本发明一种负载均衡设备配置管理在多核下的免锁实现方法做进一步的详细说明。
结合附图1-2,一种负载均衡设备配置管理在多核下的免锁实现方法,包括以下步骤:
步骤一:配置数据管理线程,用于负责配置数据的增加删除和修改,规定配置管理数据使用指针,指针指向一块配置数据结构;
步骤二:设置标记数组,所述标记数组的成员标记各个使用配置数据线程,并检测所有配置数据的指针数据;
步骤三:在修改或删除配置数据时,配置管理线程先保存配置数据指针,再将新的配置数据的地址赋值给该支配数据的指针,并将标记数组的每个成员赋值1;
步骤四:检查这个标记数组,如果标记数组所有的成员都是0,删除旧的配置数据内存块。
所述管理线程谓设备的业务处理核心线程,可以绑定到CPU多个处理核且可并发执行的。
所述配置管理数据的线程获取配置指针后,使用该指针指向的配置数据,期间不得重新获取配置指针。
步骤二中所述指针数据的下标是各个使用配置数据的线程编号。
本发明一种负载均衡设备配置管理在多核下的免锁实现方法的具体实施过程如下:
配置管理线程只有一个,该线程负责配置数据的增加删除和修改,规定配置管理数据使用指针,指针指向一块配置数据结构。使用配置数据的是设备的业务处理核心线程,该组线程可以绑定到CPU多个处理核,也就是该组使用配置数据的线程是并发执行的。使用配置管理数据的线程使用管理数据是要获取配置指针,获取到配置指针后,使用该指针指向的配置数据,期间不得重新获取配置指针,因为每次获取的配置指针指向的内容会不同。
配置管理线程释放配置管理数据要确保使用该数据的线程释放了该配置数据块的指针。通过一个标记数组实现,实现如下:数组成员标记各个使用配置数据线程是否释放了所有配置数据的指针,数据下标是各个使用配置数据的线程编号,在修改或删除配置数据时,配置管理线程先保存配置数据指针,再将新的配置数据的地址赋值给该支配数据的指针,之后将标记数组的每个成员赋值1,然后检查这个标记数组,如果标记数组所有的成员都是0,删除旧的配置数据。使用配置数据线程每次处理完报文后释放配置数据指针,同时把标记数组对应自己的成员赋值0。通过以上操作,实现了修改配置数据和使用配置数据之间无锁的操作。
下面通过伪代码说明了如果使用该发明来实现在管理配置数据和使用配置数据并发时,如果不使用锁,也可以保护数据正确修改和正确访问。
设定处理IP数据流为32个线程,分别绑定一个CPU核。
以上对本发明及其实施方式进行了描述,这种描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的结构并不局限于此。总而言之如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。
Claims (4)
1.一种负载均衡设备配置管理在多核下的免锁实现方法,其特征在于:包括以下步骤:
步骤一:配置数据管理线程,用于负责配置数据的增加删除和修改,规定配置管理数据使用指针,指针指向一块配置数据结构;
步骤二:设置标记数组,所述标记数组的成员标记各个使用配置数据线程,并检测所有配置数据的指针数据;
步骤三:在修改或删除配置数据时,配置管理线程先保存配置数据指针,再将新的配置数据的地址赋值给该支配数据的指针,并将标记数组的每个成员赋值1;
步骤四:检查这个标记数组,如果标记数组所有的成员都是0,删除旧的配置数据内存块。
2.根据权利要求1所述的一种负载均衡设备配置管理在多核下的免锁实现方法,其特征在于:所述管理线程谓设备的业务处理核心线程,可以绑定到CPU多个处理核且可并发执行的。
3.根据权利要求1所述的一种负载均衡设备配置管理在多核下的免锁实现方法,其特征在于:所述配置管理数据的线程获取配置指针后,使用该指针指向的配置数据,期间不得重新获取配置指针。
4.根据权利要求1所述的一种负载均衡设备配置管理在多核下的免锁实现方法,其特征在于:步骤二中所述指针数据的下标是各个使用配置数据的线程编号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111012642.XA CN113778674A (zh) | 2021-08-31 | 2021-08-31 | 一种负载均衡设备配置管理在多核下的免锁实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111012642.XA CN113778674A (zh) | 2021-08-31 | 2021-08-31 | 一种负载均衡设备配置管理在多核下的免锁实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113778674A true CN113778674A (zh) | 2021-12-10 |
Family
ID=78840427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111012642.XA Pending CN113778674A (zh) | 2021-08-31 | 2021-08-31 | 一种负载均衡设备配置管理在多核下的免锁实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113778674A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327828A (zh) * | 2021-12-29 | 2022-04-12 | 科东(广州)软件科技有限公司 | 一种共享数据的并发访问方法、装置、设备及介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101689143A (zh) * | 2007-06-20 | 2010-03-31 | 富士通株式会社 | 高速缓存控制装置以及控制方法 |
CN103488717A (zh) * | 2013-09-11 | 2014-01-01 | 北京华胜天成科技股份有限公司 | 一种无锁数据汇聚方法及装置 |
CN103713884A (zh) * | 2013-12-18 | 2014-04-09 | 珠海金山网络游戏科技有限公司 | 多线程通过数组处理数据的方法、系统及多线程处理器 |
CN104216767A (zh) * | 2014-09-18 | 2014-12-17 | 东软集团股份有限公司 | 多线程之间访问共享数据的方法及装置 |
US20150331720A1 (en) * | 2012-10-19 | 2015-11-19 | uCIRRUS | Multi-threaded, lockless data parallelization |
CN106354572A (zh) * | 2016-08-31 | 2017-01-25 | 成都科来软件有限公司 | 一种多线程数据传输方法 |
CN110287044A (zh) * | 2019-07-02 | 2019-09-27 | 广州虎牙科技有限公司 | 无锁共享内存处理方法、装置、电子设备及可读存储介质 |
CN110543373A (zh) * | 2019-11-04 | 2019-12-06 | 长沙新弘软件有限公司 | 一种用户线程访问内核的方法 |
CN111314217A (zh) * | 2019-12-09 | 2020-06-19 | 上海金融期货信息技术有限公司 | 一种多链路传输系统 |
US20200409841A1 (en) * | 2019-06-26 | 2020-12-31 | International Business Machines Corporation | Multi-threaded pause-less replicating garbage collection |
-
2021
- 2021-08-31 CN CN202111012642.XA patent/CN113778674A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101689143A (zh) * | 2007-06-20 | 2010-03-31 | 富士通株式会社 | 高速缓存控制装置以及控制方法 |
US20150331720A1 (en) * | 2012-10-19 | 2015-11-19 | uCIRRUS | Multi-threaded, lockless data parallelization |
CN103488717A (zh) * | 2013-09-11 | 2014-01-01 | 北京华胜天成科技股份有限公司 | 一种无锁数据汇聚方法及装置 |
CN103713884A (zh) * | 2013-12-18 | 2014-04-09 | 珠海金山网络游戏科技有限公司 | 多线程通过数组处理数据的方法、系统及多线程处理器 |
CN104216767A (zh) * | 2014-09-18 | 2014-12-17 | 东软集团股份有限公司 | 多线程之间访问共享数据的方法及装置 |
CN106354572A (zh) * | 2016-08-31 | 2017-01-25 | 成都科来软件有限公司 | 一种多线程数据传输方法 |
US20200409841A1 (en) * | 2019-06-26 | 2020-12-31 | International Business Machines Corporation | Multi-threaded pause-less replicating garbage collection |
CN110287044A (zh) * | 2019-07-02 | 2019-09-27 | 广州虎牙科技有限公司 | 无锁共享内存处理方法、装置、电子设备及可读存储介质 |
CN110543373A (zh) * | 2019-11-04 | 2019-12-06 | 长沙新弘软件有限公司 | 一种用户线程访问内核的方法 |
CN111314217A (zh) * | 2019-12-09 | 2020-06-19 | 上海金融期货信息技术有限公司 | 一种多链路传输系统 |
Non-Patent Citations (1)
Title |
---|
吴和生;王崇骏;谢俊元;: "一种多核环境中无锁的多进程负载均衡会话保持方案", 电子与信息学报, no. 04 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327828A (zh) * | 2021-12-29 | 2022-04-12 | 科东(广州)软件科技有限公司 | 一种共享数据的并发访问方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8381230B2 (en) | Message passing with queues and channels | |
CN110865888A (zh) | 一种资源加载方法、装置、服务器及存储介质 | |
US11204813B2 (en) | System and method for multidimensional search with a resource pool in a computing environment | |
US20110137889A1 (en) | System and Method for Prioritizing Data Storage and Distribution | |
CN103150149A (zh) | 处理数据库重做数据的方法和装置 | |
CN111651286A (zh) | 数据通信方法、装置及计算设备、存储介质 | |
US8543722B2 (en) | Message passing with queues and channels | |
CN113778674A (zh) | 一种负载均衡设备配置管理在多核下的免锁实现方法 | |
US9223690B2 (en) | Freeing memory safely with low performance overhead in a concurrent environment | |
US8341368B2 (en) | Automatic reallocation of structured external storage structures | |
CN109597697A (zh) | 一种资源撮合处理方法及装置 | |
US11281666B2 (en) | Interception of database queries for delegation to an in memory data grid | |
CN112114983A (zh) | 一种基于共享内存的通信方法、装置和设备 | |
CN113961364B (zh) | 一种大规模锁系统实现方法、装置、存储介质和服务器 | |
CN109284177B (zh) | 一种数据更新方法和装置 | |
US10528625B2 (en) | Client cloud synchronizer | |
US11582133B2 (en) | Apparatus and method for distributed processing of identical packet in high-speed network security equipment | |
EP3923151A1 (en) | Write ordering in ssds | |
CN110347517B (zh) | 双系统的通信方法及计算机可读存储介质 | |
WO2015004571A1 (en) | Method and system for implementing a bit array in a cache line | |
CN107102901A (zh) | 一种任务处理方法和装置 | |
CN106055322A (zh) | 一种流程调度方法及装置 | |
CN112486421B (zh) | 一种数据存储方法、装置、电子设备及存储介质 | |
JP4462504B1 (ja) | 一貫性保持の起点となるトランザクション・プロセスが所有する更新アクセス・カウンタによるマルチ・トランザクション制御システム | |
US9378045B2 (en) | System and method for supporting cooperative concurrency in a middleware machine environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |