CN113297114A - 一种基于加密卡pcie独立io支持多进程、多线程的方法 - Google Patents
一种基于加密卡pcie独立io支持多进程、多线程的方法 Download PDFInfo
- Publication number
- CN113297114A CN113297114A CN202110560630.4A CN202110560630A CN113297114A CN 113297114 A CN113297114 A CN 113297114A CN 202110560630 A CN202110560630 A CN 202110560630A CN 113297114 A CN113297114 A CN 113297114A
- Authority
- CN
- China
- Prior art keywords
- thread
- space
- pid
- area
- pcie
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于加密卡PCIE独立IO支持多进程、多线程的方法,IO空间包括参数区、进程标识区和线程标识区,包括以下步骤:S1:读取配置文件,获取到进程个数和线程个数的配置信息;S2:进程初始化;S3:线程初始化;S4:数据传输;S5:IO空间释放。其中进程标识区用于对已使用进程进行标识,确保进程内进行线程初始化时IO空间是正确的避免同一空间重复使用,导致数据传输出现错误。线程标识是每个线程调用加解密服务时用于数据传输的IO空间,保证各线程稳定快速进行。通过对IO空间进行设计和划分,使独立IO空间具备支持多进程和多线程的方案,提高了通讯的性能和效率、避免出错。
Description
技术领域
本发明涉及通信领域,更具体地说涉及一种基于加密卡PCIE独立IO支持多进程、多线程的方法。
背景技术
PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,它的主要优势就是数据传输速率高,另外还有抗干扰能力强,传输距离远,功耗低等优点。PCIE通过的IO空间进行数据传输。
加密卡是一款通过PCIE插槽插在服务器上,通过PCIE和主机进行通讯的一个加解密服务产品。但是PCIE的IO空间是共享的,对外需要提供支持高性能的多进程,多线程的接口。但是现有的PCIE的IO空间在进行多进程、多线程信息传递时存在出现信息传递错位、数据传输效率低的问题。
发明内容
本发明的目的在于提供一种基于加密卡PCIE独立IO支持多进程、多线程的方法,将IO空间划分为参数区、进程标识区和线程标识区,提供多进程、多线程服务,实现数据快速、准确传输,用以解决上述背景技术中存在的技术问题。
本发明技术方案一种基于加密卡PCIE独立IO支持多进程、多线程的方法,IO空间包括参数区、进程标识区和线程标识区,本方法包括以下步骤:
S1:读取配置文件,获取到进程个数和线程个数的配置信息;
S2:进程初始化,获取IO空间中进程标识区的未被标识的区域,根据进程个数和线程个数分配进程的ID并标记,获取进程的PID并创建共享内存;
S3:线程初始化,根据进程的ID定位到IO空间线程标识的首地址,确定线程的THREADID,并把对应的IO空间做标记,将线程的THREADID和进程的PID绑定存在共享内存中;
S4:数据传输,服务接口接收传入线程的THREADID和数据,根据线程的THREADID和进程的PID确定IO空间中传输地址并进程数据传输;
S5:空间释放,根据线程的THREADID和进程的PID分别清除当前线程和进程的IO资源。
在一个优选地实施例中,未被标识的区域获取方法为:
A1:将PCIE的IO空间映射到主机侧;
A2:使用lockf获取文件锁;
A3:读取IO空间的进程标识区的值,根据读取数值确定未被标识的区域,并释放文件锁。
在一个优选地实施例中,进程标识区的初始值为0,进程标识区使用时数值为1,S2中进程的ID标记为1。
在一个优选地实施例中,所述共享内存通过shmget创建,所述共享内存的KEY为PID,所述共享内存中存储的内容为进程的PID和线程的THREADID,共享内存的大小为配置文件中线程个数*sizeof(PID)+sizeof(THREADID)。
在一个优选地实施例中,S3中IO空间的标记值为1。
本发明技术方案的有益效果是:
将IO空间划分为参数区、进程标识区和线程标识区。其中进程标识区用于对已使用进程进行标识,确保进程内进行线程初始化时IO空间是正确的避免同一空间重复使用,导致数据传输出现错误。线程标识是每个线程调用加解密服务时用于数据传输的IO空间,保证各线程稳定快速进行。通过对IO空间进行设计和划分,使独立IO空间具备支持多进程和多线程的方案,提高了通讯的性能和效率、避免出错。
附图说明
图1为本发明整体流程图,
图2为本发明进程初始化流程图,
图3为本发明线程初始化流程体。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
参照图1-图3,本发明技术方案一种基于加密卡PCIE独立IO支持多进程、多线程的方法,IO空间包括参数区、进程标识区和线程标识区。其中参数区是用作主机侧和卡侧进行一些参数传递配置等使用;进程标识区是为了进行初始化的时候,能够知道当前已经有几个进程在使用了,确保进程内进行线程初始化时IO空间是正确的避免同一空间重复使用,导致数据传输出现错误;线程标识是每个线程调用加解密服务时用于数据传输的IO空间。
本方法包括以下步骤:
S1:读取配置文件,获取到进程个数和线程个数的配置信息;通过对配置文件进行分析确定该文件所含有的进程个数和线程个数,以便IO空间进行空间准备。
S2:进程初始化,获取IO空间中进程标识区的未被标识的区域,根据进程个数和线程个数分配进程的ID并标记,获取进程的PID并创建共享内存。进程初始化的目的是为配置文件准备好对应进程和线程所需的内存空间。在准备前,通过查看IO空间中空间标识区的标识情况,来确定未被标识的区域,即未被使用的区域,配置文件的传输工作在未被标识区域完成。
未被标识的区域获取方法为:A1:将PCIE的IO空间映射到主机侧;A2:使用lockf获取文件锁;A3:读取IO空间的进程标识区的值,根据读取数值确定未被标识的区域,并释放文件锁。
进程标识区的初始值为0,进程标识区使用时数值为1。0代表的是该区域未被使用,1代表的是该空间正在使用。在0代标识的区域内进行进程的ID分配(0,1…N),具体个数根据S1中获取的进程个数确定,然后对这些分配的进程ID标记,标记值为1,表示该进程的ID对应的空间区域已经在使用了,避免重复使用。
通过用getpid获取进程的PID,然后根据进程的PID创建共享内存。共享内存通过shmget创建,共享内存的KEY为PID,共享内存中存储的内容为进程的PID和线程的THREADID(根据支持的线程最大个数分析0到N),共享内存的大小为配置文件中线程个数*sizeof(PID)+sizeof(THREADID)。
S3:线程初始化,获取互斥锁、获取文件锁;根据进程的ID定位到IO空间线程标识的首地址,确定线程的THREADID,并把对应的IO空间做标记,IO空间的标记值为1;释放文件锁,将线程的THREADID和进程的PID绑定存在共享内存中。
S4:数据传输,服务接口接收传入线程的THREADID和数据,根据线程的THREADID和进程的PID确定IO空间中传输地址并进程数据传输。
S5:空间释放,根据线程的THREADID和进程的PID分别清除当前线程和进程的IO资源。在数据传输完成后,对执行任务的线程的THREADID和进程的PID进行清除,将占用的空间区域释放出来,整个数据传输过程完成。
显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域及相关领域的普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。本发明中未具体描述和解释说明的结构、装置以及操作方法,如无特别说明和限定,均按照本领域的常规手段进行实施。
Claims (5)
1.一种基于加密卡PCIE独立IO支持多进程、多线程的方法,其特征在于,IO空间包括参数区、进程标识区和线程标识区,本方法包括以下步骤:
S1:读取配置文件,获取到进程个数和线程个数的配置信息;
S2:进程初始化,获取IO空间中进程标识区的未被标识的区域,根据进程个数和线程个数分配进程的ID并标记,获取进程的PID并创建共享内存;
S3:线程初始化,根据进程的ID定位到IO空间线程标识的首地址,确定线程的THREADID,并把对应的IO空间做标记,将线程的THREADID和进程的PID绑定存在共享内存中;
S4:数据传输,服务接口接收传入线程的THREADID和数据,根据线程的THREADID和进程的PID确定IO空间中传输地址并进程数据传输;
S5:IO空间释放,根据线程的THREADID和进程的PID分别清除当前线程和进程的IO资源。
2.根据权利要求1所述的基于加密卡PCIE独立IO支持多进程、多线程的方法,其特征在于,未被标识的区域获取方法为:
A1:将PCIE的IO空间映射到主机侧;
A2:使用lockf获取文件锁;
A3:读取IO空间的进程标识区的值,根据读取数值确定未被标识的区域,并释放文件锁。
3.根据权利要求2所述的基于加密卡PCIE独立IO支持多进程、多线程的方法,其特征在于,进程标识区的初始值为0,进程标识区使用时数值为1,S2中进程的ID标记为1。
4.根据权利要求1所述的基于加密卡PCIE独立IO支持多进程、多线程的方法,其特征在于,所述共享内存通过shmget创建,所述共享内存的KEY为PID,所述共享内存中存储的内容为进程的PID和线程的THREADID,共享内存的大小为配置文件中线程个数*sizeof(PID)+sizeof(THREADID)。
5.根据权利要求1所述的基于加密卡PCIE独立IO支持多进程、多线程的方法,其特征在于,S3中IO空间的标记值为1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110560630.4A CN113297114B (zh) | 2021-05-21 | 2021-05-21 | 一种基于加密卡pcie独立io支持多进程、多线程的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110560630.4A CN113297114B (zh) | 2021-05-21 | 2021-05-21 | 一种基于加密卡pcie独立io支持多进程、多线程的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113297114A true CN113297114A (zh) | 2021-08-24 |
CN113297114B CN113297114B (zh) | 2022-12-06 |
Family
ID=77323847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110560630.4A Active CN113297114B (zh) | 2021-05-21 | 2021-05-21 | 一种基于加密卡pcie独立io支持多进程、多线程的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113297114B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101551808A (zh) * | 2009-05-13 | 2009-10-07 | 山东中创软件商用中间件股份有限公司 | 支持多进程的嵌入式的树型数据库技术 |
CN102340489A (zh) * | 2010-07-20 | 2012-02-01 | 阿里巴巴集团控股有限公司 | 一种服务器之间的数据传输方法和服务器 |
CN103605577A (zh) * | 2013-12-04 | 2014-02-26 | 广州博冠信息科技有限公司 | 跨进程的资源共享方法和设备 |
CN103678553A (zh) * | 2013-12-06 | 2014-03-26 | 上海寰创通信科技股份有限公司 | 基于共享内存设计的无线终端数据库构建方法 |
CN107368362A (zh) * | 2017-06-29 | 2017-11-21 | 上海阅文信息技术有限公司 | 一种对于磁盘读写数据的多线程/多进程无锁处理方法及系统 |
US20170351639A1 (en) * | 2016-06-06 | 2017-12-07 | Cisco Technology, Inc. | Remote memory access using memory mapped addressing among multiple compute nodes |
CN112433865A (zh) * | 2020-11-23 | 2021-03-02 | 清创网御(合肥)科技有限公司 | 一种基于thrift框架threadpool模式的资源调用方法 |
-
2021
- 2021-05-21 CN CN202110560630.4A patent/CN113297114B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101551808A (zh) * | 2009-05-13 | 2009-10-07 | 山东中创软件商用中间件股份有限公司 | 支持多进程的嵌入式的树型数据库技术 |
CN102340489A (zh) * | 2010-07-20 | 2012-02-01 | 阿里巴巴集团控股有限公司 | 一种服务器之间的数据传输方法和服务器 |
CN103605577A (zh) * | 2013-12-04 | 2014-02-26 | 广州博冠信息科技有限公司 | 跨进程的资源共享方法和设备 |
CN103678553A (zh) * | 2013-12-06 | 2014-03-26 | 上海寰创通信科技股份有限公司 | 基于共享内存设计的无线终端数据库构建方法 |
US20170351639A1 (en) * | 2016-06-06 | 2017-12-07 | Cisco Technology, Inc. | Remote memory access using memory mapped addressing among multiple compute nodes |
CN107368362A (zh) * | 2017-06-29 | 2017-11-21 | 上海阅文信息技术有限公司 | 一种对于磁盘读写数据的多线程/多进程无锁处理方法及系统 |
CN112433865A (zh) * | 2020-11-23 | 2021-03-02 | 清创网御(合肥)科技有限公司 | 一种基于thrift框架threadpool模式的资源调用方法 |
Non-Patent Citations (1)
Title |
---|
陈健康等: "虚拟内存密集型多线程程序的性能改进方法", 《小型微型计算机系统》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113297114B (zh) | 2022-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109766302B (zh) | 设备管理的方法和装置 | |
CN109144710B (zh) | 资源调度方法、装置及计算机可读存储介质 | |
US8850156B2 (en) | Method and system for managing virtual machine storage space and physical host | |
CN110809760B (zh) | 资源池的管理方法、装置、资源池控制单元和通信设备 | |
CN105630731A (zh) | 一种多cpu环境下网卡数据处理方法和装置 | |
US10416897B2 (en) | Memory system with latency distribution optimization and an operating method thereof | |
US20180196677A1 (en) | Out-of-order processor and method for back to back instruction issue | |
DE102012215192A1 (de) | Verwalten der Wärmeverteilung unter Speichermodulen eines Computersystems | |
US11210127B2 (en) | Method and apparatus for processing request | |
CN111008162A (zh) | 一种单PCIE插槽支持多PCIE Port的实现方法及系统 | |
CN113407414A (zh) | 程序运行监测方法、装置、终端及存储介质 | |
CN102201922B (zh) | 一种数据计费方法和相关装置 | |
US11048557B2 (en) | Methods and modules relating to allocation of host machines | |
CN113297114B (zh) | 一种基于加密卡pcie独立io支持多进程、多线程的方法 | |
CN104753741A (zh) | 一种网卡测试性能调节的方法及装置 | |
CN106997275B (zh) | 缓存管理方法及使用该方法的电子装置 | |
CN115686746A (zh) | 访问方法、任务处理方法、计算设备及计算机存储介质 | |
CN105912394B (zh) | 线程处理方法和系统 | |
CN114647655A (zh) | 基于数据库的分布式锁处理方法、装置、存储介质及系统 | |
TWI571745B (zh) | 緩存管理方法及使用該方法的電子裝置 | |
CN112947863A (zh) | 一种飞腾服务器平台下存储空间合并成的方法 | |
CN111782609A (zh) | 一种快速将fastq文件均匀分片的方法 | |
EP3343370A1 (en) | Method of processing opencl kernel and computing device therefor | |
CN116303125B (zh) | 请求调度方法、缓存、装置、计算机设备及存储介质 | |
CN112905602B (zh) | 数据比对方法、计算设备及计算机存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |