CN115525226A - 硬件批量指纹计算方法、装置及设备 - Google Patents
硬件批量指纹计算方法、装置及设备 Download PDFInfo
- Publication number
- CN115525226A CN115525226A CN202211190486.0A CN202211190486A CN115525226A CN 115525226 A CN115525226 A CN 115525226A CN 202211190486 A CN202211190486 A CN 202211190486A CN 115525226 A CN115525226 A CN 115525226A
- Authority
- CN
- China
- Prior art keywords
- fingerprint
- hardware
- memory
- requests
- processing
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种硬件批量指纹计算方法、装置及设备,用于解决使用QAT硬件进行数据指纹计算的效率不高的技术问题。本发明在初始化过程中通过预分配物理连续内存缓存池来避免每次指纹计算过程中频繁地进行物理连续内存的分配和释放,批量下发指纹计算请求给硬件指纹计算装置,通过硬件指纹计算装置的多个硬件处理单元和逻辑处理实例并行处理批量下发的指纹计算请求,从而提升整体硬件指纹计算效率。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种硬件批量指纹计算方法、装置及设备。
背景技术
随着金融、制造、运营商、政府等行业业务量和性能要求的不断提高,高吞吐、低延迟、高可靠性的数据存储需求越发迫切,完全由固态硬盘(Solid State Drive,SSD)构建的全闪存存储系统(以下简称“全闪存储”),已经逐渐成为企业部署高性能存储系统的主流方案。
全闪存储虽然能够带来非常优越的性能,但相较于使用硬盘(Hard Disk Drive,HDD)的传统存储系统,全闪存储完全依赖SSD盘,其成本是非常高的。为降低客户的存储构建和运营成本,提升产品的竞争力,全闪存储普遍采取用了重复数据删除(简称去重或重删)、数据压缩等技术手段来优化数据存储落盘的过程。重删压缩既能提升磁盘利用率,又可降低磁盘写入次数、延长SSD寿命,有助于充分发挥全闪存储的性能和降低全闪存储的总拥有成本(Total Cost of Ownership,TCO)。
数据重删功能需采集数据指纹来进行输入/输出即I/O重复判定:若指纹已经存在,则不再存储数据本身,只保存其元数据信息,并在其中记录已有数据的地址。重删指纹的采集需要进行反复大量的哈希hash计算,会耗费较多的CPU计算资源,造成CPU高负载。尤其对于在线重删,需在关键I/O路径上进行指纹计算,若指纹计算性能不够理想,必然会引起I/O时延提高,最终导致系统性能下降。因此,全闪存储中应设计尽可能合理且高效的数据指纹计算方案,减少重删功能对主I/O性能的负面影响。
为实现全闪存储的高效数据指纹计算,当前主要有软件优化和硬件计算两种思路。软件优化思路通常是抛弃Linux上通用的哈希Hash计算接口,采用针对CPU指令集进行过专门优化的高效hash计算函数库,比如X86架构的存储服务器,可采取intel的ISA-L指令加速库。硬件计算的思路,主要是将hash指纹计算请求的处理任务从中央处理器(CentralProcessing Unit,CPU)卸载到图形处理器(Graphic Processing Unit,GPU)或其他专用硬件上进行,这比起软件的优化方案能更有效降低CPU负载。
在基于X86架构的存储服务器构建的分布式全闪存储系统中,采用快速辅助技术(Quick Assist Technology,QAT)的硬件加速卡来加速数据压缩计算和数据指纹计算是目前常用的一种技术方案。快辅技术QAT是一种高性能数据安全和压缩的加速技术,该技术利用QAT芯片分担CPU的对称/非对称加密计算、hash计算、数据压缩/解压等任务,来降低CPU使用率,提高整体平台性能。QAT技术可很好的将CPU从上述计算密集型任务中释放出来,同时其支持直接内存访问(Direct Memory Access,DMA)方式直接从内存获取数据,硬件拷贝数据时也无需CPU干预,不会对系统造成额外负担。
然而,由于QAT采取DMA的方式获取数据,要求原始数据和计算结果都放在物理连续内存中。而内存中待计算指纹的I/O分片,通常是存储在专用的逻辑内存中(例如ceph分布式存储采用的缓存列表BufferList结构,以离散内存表征逻辑连续的内存),这些逻辑内存通常是逻辑上连续但物理上不一定连续。这就需要在QAT请求下发前后,都要先开辟相应的物理连续内存空间将待计算数据转移进去,在硬件完成计算后,再将数据指纹计算结果从物理连续内存再转移回I/O分片专用的逻辑内存中。这就导致每次数据指纹计算都需要进行物理连续内存的开辟和释放,待计算指纹的I/O分片大小一般为4KB或8KB,动态开辟这样的物理连续大空间是非常耗时的,实测可占整个请求处理流程耗时的20%以上,这导致使用QAT硬件进行数据指纹计算的效率受到较大影响。
发明内容
有鉴于此,本发明提供一种硬件批量指纹计算方法、装置及设备,用于解决使用QAT硬件进行数据指纹计算的效率不高的技术问题。
基于本发明实施例的一方面,本发明提供一种硬件批量指纹计算方法,该方法应用于具有硬件指纹计算装置的电子设备,该方法包括:
下发批量指纹计算请求,所述批量指纹计算请求中包括多个指纹计算请求;
从内存缓存池中申请用于完成所述批量指纹计算请求的多个内存分片;
通过硬件指纹计算装置的多个硬件处理单元和逻辑处理实例使用所述多个内存分配并行处理批量下发的所述多个指纹计算请求;
将用于完成批量指纹计算请求的多个内存分片释放回内存缓存池。
进一步地,所述通过硬件指纹计算装置的多个硬件处理单元和逻辑处理实例使用所述多个内存分配并行处理批量下发的所述多个指纹计算请求的方法为:
将批量指纹计算请求中的待计算指纹的数据块拷贝到内存分片的源数据区域;
将所述多个指纹计算请求以异步模式批量下发给多个逻辑处理实例,逻辑处理实例分别将多个指纹计算请求提交给多个硬件处理单元进行并行处理;
等待所有下发的指纹计算请求处理完成;
在接收到所有指纹计算请求处理完成的通知消息后,从内存分片的结果数据区域拷贝出指纹计算结果。
进一步地,所述方法还包括:在将所述多个指纹计算请求以异步模式批量下发给多个逻辑处理实例后,通过轮询线程轮询每个逻辑处理实例,以判断是否完成所有下发的指纹计算请求的处理;轮询线程在判定完成所有下发的指纹计算请求的处理后发送所述通知消息。
进一步地,所述内存缓存池由上层应用程序在初始化硬件指纹计算装置时预先分配;所述内存缓存池中的每个内存分片包含了一次指纹计算请求处理所需的全部的物理连续内存空间和普通内存空间。
进一步地,所述硬件指纹计算装置为X86架构的存储服务器构建的分布式全闪存储系统中支持快速辅助技术QAT技术的硬件装置。
基于本发明实施例的另一方面,本发明还提供一种硬件批量指纹计算装置,该装置包括:
批量请求处理模块,用于处理批量指纹计算请求;其中包括:
内存分片处理单元,用于从内存缓存池中申请用于完成所述批量指纹计算请求的多个内存分片;以及在接收到轮询模块发送的指示所有指纹计算请求处理完成的通知消息后,将所述多个内存分片释放回内存缓存池;
内容拷贝单元,用于将批量指纹计算请求中的待计算指纹的数据块拷贝到内存分片的源数据区域;以及在接收到所述通知消息后,从内存分片的结果数据区域拷贝出指纹计算结果;
批量处理单元,用于将批量指纹计算请求中包括的多个指纹计算请求以异步模式批量下发给硬件指纹计算装置;
内存缓存池模块,用于管理内存缓存池;
硬件指纹计算装置,用于异步并行处理批量下发的多个指纹计算请求,其中包括多个逻辑处理实例和硬件处理单元:
逻辑处理实例,用于将多个指纹计算请求提交给多个硬件处理单元进行处理;
硬件处理单元,用于使用所述多个内存分片并行处理批量下发的所述多个指纹计算请求;
轮询模块,用于通过轮询线程轮询每个逻辑处理实例,以判断是否完成所有下发的指纹计算请求的处理;在判定完成所有下发的指纹计算请求的处理后发送所述通知消息。
进一步地,所述内存缓存池模块中的内存缓存池由上层应用程序在初始化硬件指纹计算装置时预先分配;所述内存缓存池中的每个内存分片包含了一次指纹计算请求处理所需的全部的物理连续内存空间和普通内存空间。
进一步地,所述硬件指纹计算装置为支持快速辅助技术QAT技术的硬件装置。
附图说明
为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本发明实施例的这些附图获得其他的附图。
图1为使用本发明提供的硬件批量指纹计算方法的应用场景示例图;
图2为本发明一实施例提供的硬件批量指纹计算方法的实现步骤及组件交互逻辑结构示意图;
图3为QAT硬件异步模式处理指纹计算请求的过程示意图;
图4为本发明一实施例提供的用于实现本发明提供的硬件批量指纹计算方法的电子设备结构示意图。
具体实施方式
在本发明实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明实施例。本发明实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本发明中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本发明的发明目的是为需要执行数据去重处理的存储系统(例如全闪存储)提供一种高效的硬件批量数据块指纹(简称指纹)计算方法,以提高存储系统的存储性能。
图1为使用本发明提供的硬件批量指纹计算方法的应用场景示例图,上层应用执行文件写入操作时通过文件系统向存储系统下发I/O写入请求,存储系统在接收到I/O写入请求后,首先将待写入数据进行固定大小的数据块切割,切割后的数据块(简称分片)使用本发明提供的硬件批量指纹计算方法进行指纹计算,以下结合附图描述数据块写入磁盘的过程:
S1.向硬件指纹计算装置批量下发针对多个数据块的指纹计算请求;
S2.硬件指纹计算装置在完成批量指纹计算请求后返回计算结果,根据计算结果依次判断每个指纹是否存在于指纹表中。
在完成批量指纹计算后,存储系统拿计算出来的数据指纹到指纹表中进行指纹匹配以判断是否指纹对应的数据块是否已经持久化存储在存储系统中(落盘),如果指纹已存在于指纹表中,说明当前指纹对应的待写入数据块是一个重复数据块,存储系统中已经持久化存储有当前指纹对应的数据块(称为原始数据块),重复数据块无需执行数据块的落盘存储步骤。
S3.将待写入数据块的指纹对应的原始数据块存储地址记录到元数据中;
由于待写入数据块为重复数据块,因此只需将重复数据块的指纹对应的已持久化存储于存储系统中的原始数据块的存储地址记录到元数据中即可。
S4.在将重复数据块的指纹对应的原始数据块地址记录到元数据后,将元数据持久化存储到元数据库中;
元数据库通常使用键值对类型的K-V数据库,支持高效的元数据的读写。
完成S4步骤即完成了重复数据块的去重写入步骤。
S5.如果指纹未存在于指纹表中,则首先将当前待写入数据块的元数据进行持久化存储;
在元数据持久化存储的过程中会更新指纹表以记录新数据块的指纹信息。
S6.将非重复的数据块写入非易失性存储介质(落盘)。
为描述方便,发明实施例中以磁盘作为非易失性存储介质为例进行描述,本领域技术人员可以理解的是,非易失性存储介质包括但不限于磁盘、闪存盘等,本发明不做具体限定。
全闪存储常用的指纹计算方案中,采取以QAT硬件Hash指纹计算为主、软件Hash指纹计算为辅的软硬结合的指纹计算方案。该方案在重复数据块删除(简称重删)流程中,将Hash指纹计算请求优先提交给QAT硬件进行指纹计算,若QAT硬件故障失效,则再将Hash指纹计算请求提交给软件Hash指纹计算模块进行计算,以保证一定健壮性。
为满足QAT硬件通过DMA方式访问连续内存的要求,在每次使用QAT硬件进行指纹计算时,都需要临时申请物理连续内存来存放指纹计算数据和指纹计算结果,在指纹计算结果被读取后再释放所申请的物理连续内存。虽然使用QAT硬件进行硬件指纹计算不占CPU资源,同时上层重删的多线程业务模型可保证硬件指纹计算请求一定程度的并发性,然而,反复动态进行物理连续内存的分配,使得指纹计算效率不高。进行指纹计算的物理连续内存分片大小一般为4KB或8KB,动态开辟这样的物理连续大空间是非常耗时的,实测可占整个指纹计算请求处理流程耗时的20%以上,这导致QAT硬件指纹计算效率不够理想。
基于上述的分析,为了提高硬件指纹计算效率,本发明的主要目的是提供一种硬件批量指纹计算方法及实施该方法的装置及电子设备,本发明技术方案的核心思想是:在初始化过程中通过预分配物理连续内存缓存池来避免每次指纹计算过程中频繁地进行物理连续内存的分配和释放,批量下发指纹计算请求给硬件指纹计算装置,通过硬件指纹计算装置的多个硬件处理单元和逻辑处理实例并行处理批量下发的指纹计算请求,从而提升整体硬件指纹计算效率。
本发明提及的硬件指纹计算装置是指采用QAT技术的硬件装置或采用与QAT技术原理的等同类似的架构设计的硬件装置。例如硬件指纹计算装置可以是专门的QAT硬件加速卡,也可以是支持QAT功能的CPU或其他任意支持QAT加速功能的硬件平台。以下为表述方便,也将硬件指纹计算装置简称为QAT硬件。
QAT硬件在处理指纹计算请求之前需要首先执行QAT硬件的初始化,QAT初始化内容主要包括:
(1)USDM驱动的初始化;
QAT技术提供了一个名为用户空间直接内存访问内存驱动(User Space DMA-ableMemory Driver,USDM),该驱动提供了用户态物理连续内存分配的功能。
QAT技术采取直接内存访问DMA的方式获取数据,要求待计算指纹的数据块和计算结果都放在物理连续内存中。而内存中待计算指纹的数据块,通常存储在专用的逻辑内存中(例如ceph分布式存储采用的BufferList结构,以离散内存表征逻辑连续的内存),逻辑上连续的内存空间无法保证在物理上也是连续的。在批量向QAT硬件的服务访问层(SAL,Service Access Layer)下发指纹计算请求之前,需调用USDM驱动为批量指纹计算分配由多个物理连续内存分片组成的内存缓存池以供批量指纹计算请求的处理使用。
(2)QAT硬件的SAL初始化;
QAT硬件通过服务访问层SAL对外提供应用程序接口API。应用程序进程通过创建QAT会话与SAL建立连接,以会话为通道进行指纹计算请求下发。SAL以QAT实例(QATinstance)为逻辑处理单元,将上层应用通过API接口下发的指纹计算请求提交到QAT硬件中的硬件处理单元进行处理。
SAL初始化需要完成两项任务,一个是创建轮询线程,一个是注册回调函数。轮询线程用于不断查询QAT实例(QAT instance)上是否有指纹计算请求处理完成。回调函数用于在指纹计算请求完成后,通知挂起等待的I/O线程指纹计算完成,以使其进行结果拷贝、资源回收等后续处理。
(3)内存缓存池(Buffer Pool)初始化;
应用程序初始化QAT硬件的时候,根据目标I/O大小,直接预先分配足够量的在物理地址空间上连续内存空间,均分为若干个内存分片(buffer),每个内存分片包含了一次QAT指纹计算请求处理所需的全部的物理连续内存空间和普通内存空间,所有的内存分片合到一起构成一个内存缓存池(Buffer Pool)。在每次I/O写入数据时,根据写入数据块的多少即单个指纹计算请求的多少从内存缓存池中申请相应数量的内存分片,每个内存分片都是物理上地址连续的内存缓存空间。
图2为本发明一实施例提供的硬件批量指纹计算方法的实现步骤及组件交互逻辑结构示意图。以下以采用QAT技术的存储服务器为例描述本发明提供的硬件批量指纹计算方法步骤流程及QAT硬件指纹计算逻辑,但QAT硬件架构不构成对本发明保护范围的具体限定,本发明提供的硬件批量指纹计算方法同样适用于与QAT硬件框架等同类似的硬件指纹计算框架。
S20.下发批量指纹计算请求,批量指纹计算请求中包括多个针对单个数据块的指纹计算请求;
应用程序初始化硬件指纹计算装置后,在向存储系统写入数据过程中,需要对写入的数据进行去重处理,去重处理过程调用本发明提供的硬件批量指纹计算方法对待写入的数据块进行指纹计算。
I/O线程根据写入数据块的数量,下发批量指纹计算请求,批量指纹计算请求中包括多个针对单个数据块的指纹计算请求,批量指纹计算请求中包括的指纹计算请求的数量受限于内存缓存池中内存片的数量,如果超过内存缓存池中内存片的最大值,可拆分成多个批量指纹计算请求进行处理。
S21.从内存缓存池中申请用于完成所述批量指纹计算请求的多个内存分片;
该步骤基于批量指纹计算请求中所包含的指纹计算请求的个数从内存缓存池申请用于完成这些指纹计算请求所需的内存分片。如果申请失败则返回批量指纹计算请求处理失败的处理结果。在批量指纹计算请求处理失败的情况下,可等待重试也可触发通过软件模块进行指纹计算的处理步骤。
内存缓存池在初始化后长期存在,从而避免每次处理批量指纹计算请求时临时进行物理连续内存的申请和释放。内存缓存池可采用循环队列、循环链表等数据结构,其中内存分片循环使用。处理批量指纹计算请求的I/O线程每次从内存缓存池中申请所需的内存分片,I/O线程申请成功后,只是临时占用内存分片,在使用完毕后及时释放对内存分片的使用权,从而将内存分片及时释放回内存缓存池以供下次使用。
S22.将批量指纹计算请求中的待计算指纹的数据块拷贝到内存分片的源数据区域;
S23.将批量指纹计算请求中的多个指纹计算请求以异步模式批量下发给多个逻辑处理实例(QAT实例),逻辑处理实例分别将多个指纹计算请求提交给硬件指纹计算装置(QAT硬件)中的多个硬件处理单元进行处理;
I/O线程调用SAL层提供的异步指纹计算API接口将多个指纹计算请求批量下发给QAT实例,QAT实例接收到指纹计算请求后将指纹计算请求提交给QAT硬件中对应的多个硬件处理单元进行处理。
S24.在批量下发指纹计算请求成功后,执行批量指纹计算请求的I/O线程挂起等待所有下发的指纹计算请求处理完成;
QAT硬件的服务访问层SAL向上提供同步模式和异步模式的API接口。同步模式下,指纹计算请求下发后,上层应用挂起等待直到请求处理完毕返回指纹计算结果。在异步模式下,指纹计算请求下发后,上层应用不用挂起等待指纹计算结果,而是通过事件通知或者轮询等方式获知指纹计算请求是否完成并在完成后读取指纹计算结果。
图3为QAT硬件异步模式处理指纹计算请求的过程示意图。如图3的示例,上层应用(Application)通过调用SAL层提供的API接口向QAT固件(Quick Assist TechnologyFirmware)下发指纹计算请求(步骤①~步骤④),在指纹计算请求下发到QAT固件后,下发指纹计算请求的API接口不等待QAT固件的指纹计算结果而是立即返回(步骤⑤),当QAT固件完成指纹计算后将计算结果通过加速驱动框架(Acceleration Driver Framework)返回给SAL层(步骤⑥~步骤⑦),SAL层通过回调函数将指纹计算结果返回给上层调用指纹计算API接口的应用程序(步骤⑧)。
无论指纹计算API接口是同步模式还是异步模式,SAL和底层的加速驱动固件之间本质上都是一种异步的协作模式,都需要不断查询QAT实例状态来判断指纹计算请求是否完成,在请求处理完成后,都会自动调用预先注册的回调函数(callback函数)唤醒挂起等待的I/O线程进行后续处理,只不过同步模式是在SAL层内部进行挂起等待,上层的API调用者不需要关心“等待-唤醒”过程。
如图2的示例,在将指纹计算请求批量下发到QAT实例后,通过轮询线程(Pollingthread)轮询每个QAT实例(步骤S31),判断是否有指纹计算请求处理完成(步骤S32)。每完成一个指纹计算请求的处理,用于记录任务完成数量的计数加1(步骤S33),然后判断是否完成本次批量下发的所有指纹计算请求(步骤S34),在所有指纹计算请求处理完成后,通过回调函数通知挂起等待的I/O线程(步骤S35)本次批量指纹计算请求处理完成。
QAT硬件中通常有多个硬件处理单元,硬件处理单元与QAT实例对应,QAT实例在将指纹计算请求下发给硬件处理单元后,硬件处理单元即可使用分配给它的内存分片进行指纹计算。硬件处理单元先通过DMA的方式从内存分片的源数据区域获取源数据,然后进行指纹计算,计算完成后,再通过DMA的方式将指纹计算结果拷贝到内存分片的结果数据区域,在完成计算结果的拷贝后,硬件处理单元再通知QAT实例指纹计算任务完成,修改任务状态,轮询线程可通过读取QAT实例中的任务状态来判断分配给该QAT实例的指纹计算请求是否处理完成。
S25.在接收到所有指纹计算请求处理完成的通知消息后,从内存分片的结果数据区域拷贝出指纹计算结果;
挂起等待的I/O线程接收到轮询线程反馈的所有指纹计算请求处理完成的通知消息后,即可通知上层应用程序从所申请的内存分片的结果数据区域拷贝出指纹计算结果。
S26.将用于完成批量指纹计算请求的多个内存分片释放回内存缓存池;
步骤S26批量指纹计算请求处理的返回步骤。若批量下发指纹计算请求失败,或批量指纹计算请求的I/O线程等待轮询线程的处理完成通知消息超时,则需要先释放内存分片到内存缓存池,然后才能返回批量指纹计算请求处理结果。
至此,就完成了一次批量指纹计算请求的处理。
虽然采用QAT硬件计算指纹相对于使用软件计算指纹的效率已经有很大提升,但QAT硬件每执行一次指纹计算,都需要经过数据拷贝、请求下发、DMA读写、计算处理、轮询回调、结果拷贝等一系列处理步骤,硬件计算之外有很多额外的开销,因此在批量指纹计算场景中,每次指纹计算都单独调用QAT硬件进行一次指纹计算的方式,整体指纹计算的效率并不高。本发明利用QAT硬件具备多个硬件处理单元和逻辑处理实例(QAT实例)的特性,采用批量模式一次下发多个指纹计算请求,通过多个QAT实例将多个指纹计算请求指派到不同硬件处理单元来并发处理,充分利用QAT硬件的并发处理能力,从而最大程度地摊薄了QAT的处理延迟,大幅提高了指纹计算的整体计算效率。
图4为本发明一实施例提供的用于实现本发明提供的硬件批量指纹计算方法的电子设备结构示意图,该设备400包括:诸如中央处理单元(CPU)的处理器410、通信总线420、通信接口440、存储介质430以及硬件指纹计算装置450。其中,处理器410与存储介质430和硬件指纹计算装置450之间可以通过通信总线420相互通信。存储介质430内存储有计算机程序,当该计算机程序被处理器410执行时即可实现本发明提供的硬件批量指纹计算方法中的一个或多个步骤的功能。
其中,存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。另外,存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本发明描述的过程的操作,除非本发明另外指示或以其他方式明显地与上下文矛盾。本发明描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本发明所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种硬件批量指纹计算方法,其特征在于,该方法应用于具有硬件指纹计算装置的电子设备,该方法包括:
下发批量指纹计算请求,所述批量指纹计算请求中包括多个指纹计算请求;
从内存缓存池中申请用于完成所述批量指纹计算请求的多个内存分片;
通过硬件指纹计算装置的多个硬件处理单元和逻辑处理实例使用所述多个内存分配并行处理批量下发的所述多个指纹计算请求;
将用于完成批量指纹计算请求的多个内存分片释放回内存缓存池。
2.根据权利要求1所述的方法,其特征在于,所述通过硬件指纹计算装置的多个硬件处理单元和逻辑处理实例使用所述多个内存分配并行处理批量下发的所述多个指纹计算请求的方法为:
将批量指纹计算请求中的待计算指纹的数据块拷贝到内存分片的源数据区域;
将所述多个指纹计算请求以异步模式批量下发给多个逻辑处理实例,逻辑处理实例分别将多个指纹计算请求提交给多个硬件处理单元进行并行处理;
等待所有下发的指纹计算请求处理完成;
在接收到所有指纹计算请求处理完成的通知消息后,从内存分片的结果数据区域拷贝出指纹计算结果。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在将所述多个指纹计算请求以异步模式批量下发给多个逻辑处理实例后,通过轮询线程轮询每个逻辑处理实例,以判断是否完成所有下发的指纹计算请求的处理;轮询线程在判定完成所有下发的指纹计算请求的处理后发送所述通知消息。
4.根据权利要求1所述的方法,其特征在于,
所述内存缓存池由上层应用程序在初始化硬件指纹计算装置时预先分配;所述内存缓存池中的每个内存分片包含了一次指纹计算请求处理所需的全部的物理连续内存空间和普通内存空间。
5.根据权利要求1所述的方法,其特征在于,
所述硬件指纹计算装置为X86架构的存储服务器构建的分布式全闪存储系统中支持快速辅助技术QAT技术的硬件装置。
6.一种硬件批量指纹计算装置,其特征在于,该装置包括:
批量请求处理模块,用于处理批量指纹计算请求;其中包括:
内存分片处理单元,用于从内存缓存池中申请用于完成所述批量指纹计算请求的多个内存分片;以及在接收到轮询模块发送的指示所有指纹计算请求处理完成的通知消息后,将所述多个内存分片释放回内存缓存池;
内容拷贝单元,用于将批量指纹计算请求中的待计算指纹的数据块拷贝到内存分片的源数据区域;以及在接收到所述通知消息后,从内存分片的结果数据区域拷贝出指纹计算结果;
批量处理单元,用于将批量指纹计算请求中包括的多个指纹计算请求以异步模式批量下发给硬件指纹计算装置;
内存缓存池模块,用于管理内存缓存池;
硬件指纹计算装置,用于异步并行处理批量下发的多个指纹计算请求,其中包括多个逻辑处理实例和硬件处理单元:
逻辑处理实例,用于将多个指纹计算请求提交给多个硬件处理单元进行处理;
硬件处理单元,用于使用所述多个内存分片并行处理批量下发的所述多个指纹计算请求;
轮询模块,用于通过轮询线程轮询每个逻辑处理实例,以判断是否完成所有下发的指纹计算请求的处理;在判定完成所有下发的指纹计算请求的处理后发送所述通知消息。
7.根据权利要求6所述的装置,其特征在于,
所述内存缓存池模块中的内存缓存池由上层应用程序在初始化硬件指纹计算装置时预先分配;所述内存缓存池中的每个内存分片包含了一次指纹计算请求处理所需的全部的物理连续内存空间和普通内存空间。
8.根据权利要求6所述的装置,其特征在于,
所述硬件指纹计算装置为X86架构的存储服务器构建的分布式全闪存储系统中支持快速辅助技术QAT技术的硬件装置。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储介质和通信总线,其中,处理器、通信接口、存储介质通过通信总线完成相互间的通信;
存储介质,用于存放计算机程序;
处理器,用于执行存储介质上所存放的计算机程序时,实施权利要求1-5中任一项所述的方法步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序当被处理器执行时实施如权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211190486.0A CN115525226A (zh) | 2022-09-28 | 2022-09-28 | 硬件批量指纹计算方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211190486.0A CN115525226A (zh) | 2022-09-28 | 2022-09-28 | 硬件批量指纹计算方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115525226A true CN115525226A (zh) | 2022-12-27 |
Family
ID=84700129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211190486.0A Pending CN115525226A (zh) | 2022-09-28 | 2022-09-28 | 硬件批量指纹计算方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115525226A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117909087A (zh) * | 2024-03-20 | 2024-04-19 | 新华三技术有限公司 | 一种数据处理方法、装置、中央处理器及电子设备 |
-
2022
- 2022-09-28 CN CN202211190486.0A patent/CN115525226A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117909087A (zh) * | 2024-03-20 | 2024-04-19 | 新华三技术有限公司 | 一种数据处理方法、装置、中央处理器及电子设备 |
CN117909087B (zh) * | 2024-03-20 | 2024-06-21 | 新华三技术有限公司 | 一种数据处理方法、装置、中央处理器及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9710310B2 (en) | Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines | |
US10459661B2 (en) | Stream identifier based storage system for managing an array of SSDs | |
CN102314377B (zh) | 加速器及其实现支持虚拟机迁移的方法 | |
CN113918101B (zh) | 一种写数据高速缓存的方法、系统、设备和存储介质 | |
CN108228343B (zh) | 内存回收方法及装置、计算机装置及计算机可读存储介质 | |
US9778990B2 (en) | Methods and systems for concurrently taking snapshots of a plurality of virtual machines | |
WO2013082809A1 (zh) | 协处理加速方法、装置及系统 | |
US9378047B1 (en) | Efficient communication of interrupts from kernel space to user space using event queues | |
US9836516B2 (en) | Parallel scanners for log based replication | |
US11243808B2 (en) | Information processing apparatus and storage medium storing execution control program | |
WO2021114848A1 (zh) | 数据库的数据读写方法及装置 | |
US20200301592A1 (en) | Data storage device idle time processing | |
JP2018528515A (ja) | 効率的な並列コンピューティングのための簡略化されたタスクベースランタイムのための方法 | |
WO2023071125A1 (zh) | 一种处理dma的方法、装置、及计算机可读存储介质 | |
US9817754B2 (en) | Flash memory management | |
WO2023201987A1 (zh) | 请求处理方法、装置、设备及介质 | |
US10521371B2 (en) | Cache system and associated method | |
CN104123236A (zh) | 用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统 | |
US9697047B2 (en) | Cooperation of hoarding memory allocators in a multi-process system | |
CN112748869B (zh) | 一种数据处理方法及装置 | |
US10831684B1 (en) | Kernal driver extension system and method | |
CN115525226A (zh) | 硬件批量指纹计算方法、装置及设备 | |
US20170371707A1 (en) | Data analysis in storage system | |
CN117311939A (zh) | 一种客户端请求的处理方法、计算设备及存储介质 | |
CN111176566B (zh) | 一种支持queue命令的eMMC读写控制方法及存储介质 |
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 |