CN110609708A - 用于数据处理的方法、设备和计算机程序产品 - Google Patents
用于数据处理的方法、设备和计算机程序产品 Download PDFInfo
- Publication number
- CN110609708A CN110609708A CN201810619242.7A CN201810619242A CN110609708A CN 110609708 A CN110609708 A CN 110609708A CN 201810619242 A CN201810619242 A CN 201810619242A CN 110609708 A CN110609708 A CN 110609708A
- Authority
- CN
- China
- Prior art keywords
- page
- determining
- buffer
- storage pool
- application
- 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
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000012545 processing Methods 0.000 title claims abstract description 31
- 238000004590 computer program Methods 0.000 title claims abstract description 16
- 239000000872 buffer Substances 0.000 claims abstract description 98
- 238000007906 compression Methods 0.000 claims abstract description 25
- 230000006835 compression Effects 0.000 claims abstract description 25
- 230000004044 response Effects 0.000 claims abstract description 6
- 238000013507 mapping Methods 0.000 claims description 25
- 238000005516 engineering process Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 13
- 238000012360 testing method Methods 0.000 description 8
- 230000006837 decompression Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 239000000835 fiber Substances 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 101100180399 Mus musculus Izumo1r gene Proteins 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本公开的实施例旨提供一种用于数据处理的方法、设备和计算机程序产品。该方法包括:创建针对应用的存储池,所述存储池包括至少一个页面,所述至少一个页面具有连续的物理地址;确定用于存储所述应用的数据的缓冲区的信息;以及响应于所述数据要被执行压缩或加密操作,基于所述缓冲区的所述信息,确定所述至少一个页面中与所述缓冲区相对应的页面部分,以用于所述压缩或加密操作的执行。本公开提出的用于数据处理的方法一方面能够满足上文所提及的QAT的存储需求,另一方面能够节约系统开销,优化系统性能。
Description
技术领域
本公开的实施例总体涉及数据处理,更具体地,涉及一种用于数据处理的方法、设备和计算机程序产品。
背景技术
随着应用复杂性的不断增长,系统需要越来越多的计算资源用于工作负载,包括加密和数据压缩。英特尔快速辅助技术(QuickAssist Technology,QAT)提供安全和压缩加速功能,以提高英特尔架构平台的性能和效率。英特尔QAT硬件辅助引擎可以预留用于应用处理的处理器周期,这不仅可以减轻CPU负担,还可以提高整体系统性能,特别是对于计算密集型解决方案(例如Data Domain Restorer)而言尤其如此。
然而,为了支持QAT,应用必须依靠额外的用户空间库和英特尔提供的内核模块来满足QAT的存储需求。例如,英特尔QAT在硬件中实现为使用直接存储器存取(DMA)访问动态随机存取存储器(DRAM)中的数据的设备,因此要在其上运行的数据必须位于可直接存储器存取(DMA-able)的存储器中。这意味着数据必须存储在锁定的页面中,并且页面在物理上是连续的。或者,应用可以传递多个如散集列表所描述的区域中的数据。此外,英特尔QAT应用界面(API)需要应用提供回调函数,以将每个要运行的缓冲区的虚拟地址转换为物理地址。
目前的解决方法是复制缓冲区。例如,应用从英特尔提供的存储分配器中分配特定的物理上连续的存储缓冲区,并将这些缓冲区用作复制缓冲区。在将数据传递给QAT之前,应用需要将数据从其通用缓冲区复制到复制缓冲区。英特尔存储分配器保证这些复制缓冲区在物理上是连续的并为应用提供物理地址。这种方法的不足之处在于,在复制缓冲区方面需要较大系统开销,并且应用需要例如通过锁定复制缓冲区来保护与QAT的线程共享的复制缓冲区,这可能造成系统性能瓶颈。此外,目前的解决方案还存在一些与操作系统相关联的局限性。
发明内容
本公开的实施例旨在提供一种用于数据处理的方法、设备和计算机程序产品,以解决现有技术中存在的问题。
在本公开的第一方面,提供一种用于数据处理的方法。所述方法包括创建针对应用的存储池,所述存储池包括至少一个页面,所述至少一个页面具有连续的物理地址;确定用于存储所述应用的数据的缓冲区的信息;以及响应于所述数据要被执行压缩或加密操作,基于所述缓冲区的所述信息,确定所述至少一个页面中与所述缓冲区相对应的页面部分,以用于所述压缩或加密操作的执行。
在本公开的第二方面,提供一种用于数据处理的设备。所述设备包括至少一个处理器以及与所述至少一个处理器耦合的存储器。所述存储器包含有存储于其中的指令,所述指令在被所述至少一个处理单元执行时,使得所述设备执行动作,所述动作包括:创建针对应用的存储池,所述存储池包括至少一个页面,所述至少一个页面具有连续的物理地址;确定用于存储所述应用的数据的缓冲区的信息;以及响应于所述数据要被执行压缩或加密操作,基于所述缓冲区的所述信息,确定所述至少一个页面中与所述缓冲区相对应的页面部分,以用于所述压缩或加密操作的执行。
在本公开的第三方面,提供一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行上述第一方面所述的方法的步骤。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开内容的关键特征或主要特征,也无意限制本公开内容的范围。
附图说明
通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例而非限制性的方式示出了本公开的若干实施例,其中:
图1示出了根据一些实施例的使用QAT的数据域文件系统(DDFS)的架构的示意图。
图2示出了根据一些实施例的具有复制缓冲区的存储池。
图3能够实施本公开的实施例的示例性场景的示意图。
图4示出了根据本公开的实施例的方法400的流程图。
图5示出了根据本公开的实施例的缓冲区和页面的对应关系的示意图。
图6示出了可以用来实施本公开的实施例的设备600的示意性框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
在下文中,将参考附图详细描述本公开的各个示例性实施例。应当注意,这些附图和描述涉及的仅仅是作为示例性的实施例。应该指出的是,根据随后描述,很容易设想出此处公开的结构和方法的替换实施例,并且可以在不脱离本公开要求保护的原理的情况下使用这些替代实施例。
应当理解,给出这些示例性实施例仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
在此使用的术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”。术语“基于”是“至少部分地基于”。术语“一些实施例”表示“至少一些实施例”;术语“另一实施例”表示“至少一个另外的实施例”。其他术语的相关定义将在下文描述中给出。
目前,英特尔快速辅助技术(QuickAssist Technology,QAT)提供安全和压缩加速功能,以提高英特尔架构平台的性能和效率。为了支持QAT,应用必须依靠额外的用户空间库和英特尔提供的内核模块来满足QAT的存储需求。
图1示出了根据一些实施例的使用QAT的数据域文件系统(DDFS)的架构100的示意图。如图1所示,架构100包括内核110,QAT库120以及变化的DDFS 130。内核110包括QAT存储分配器111以及QAT驱动器112。变化的DDFS 130包括采用QAT压缩器131和采用QAT的加密机132。QAT存储分配器111用于为QAT分配存储空间。也就是说,为了支持QAT,应用必须依靠额外的用户空间库和英特尔提供的内核模块来满足QAT存储需求。
一般来说,QAT的存储需要包括以下方面。首先,英特尔QAT在硬件中实现为使用直接存储器存取(DMA)访问动态随机存取存储器(DRAM)中的数据的设备,因此要在其上运行的数据必须位于可直接存储器存取(DMA-able)的存储器中。这意味着数据必须存储在锁定的页面中,并且页面在物理上是连续的。或者,应用可以传递多个如散集列表所描述的区域中的数据。其次,由于QAT使用DMA访问缓冲区,所以缓冲区的所有页面都必须始终物理存在于系统的随机存取存储器(RAM)中。此外,英特尔QAT应用界面(API)需要应用提供回调函数,以将每个要运行的缓冲区的虚拟地址转换为物理地址。也就是说,需要获取物理地址与虚拟地址的对应关系。
除了满足上述需求之外,为了获得更好的性能,存储分配和地址转换都必须是低成本的,尤其是地址转换。针对QAT想知晓的每一块缓冲区物理地址,每次都会调用地址转换回调函数。单次调用QAT压缩或加密API可能会导致对于虚拟到物理转换回调函数的多次调用。
目前的解决方法是复制缓冲区。例如,应用从英特尔提供的存储分配器中分配特定的物理上连续的存储缓冲区,并将这些缓冲区用作复制缓冲区。在将数据传递给QAT之前,应用需要将数据从其通用缓冲区复制到复制缓冲区。英特尔存储分配器保证这些复制缓冲区在物理上是连续的并为应用提供物理地址。
图2示出了示出了根据一些实施例的具有复制缓冲区的存储池模型200。在图2中示出了在QAT应用210和QAT设备240之间存在通用存储池220和复制存储池230。该复制存储池230是由系统分配的物理上连续的存储空间。在QAT应用210将数据填充到通用存储池220上的缓冲区221,该数据在传递给QAT设备240之前,需要将该数据从缓冲区221复制到复制存储池230上的复制缓冲区231,以保证填充有数据的缓冲区在物理上是连续的。
上述方案在实现方面较为简单。然而其不足之处在于,在复制缓冲区方面需要较大系统开销,并且应用需要例如通过锁定复制缓冲区来保护与QAT的线程共享的复制缓冲区,这可能造成系统性能瓶颈。此外,目前的解决方案还存在一些与操作系统相关联的局限性。
因此,本公开提出一种用于数据处理的方法,其一方面能够满足上文所提及的QAT的存储需求,另一方面能够节约系统开销,优化系统性能。
图3能够实施本公开的实施例的示例性场景300的示意图。如图3所示,场景300包括QAT应用310、存储池320以及QAT实例(QAT Instance)330。在本公开中的术语“QAT实例”可以被理解为用于采用QAT而对数据进行处理的设备或实体。
QAT应用310包括初始化器311,该初始化器311用于在创建存储池320之前确定存储池320的存储预算。存储池320中的存储器创建器321基于所确定的存储预算创建存储池。存储池320可以被视作文件系统为QAT应用310所分配的专用存储池。存储池320可以包括至少一个页面。每个页面内的物理地址是连续的。
在创建存储池320的过程中需要创建缓存322。该缓存322用于存储反映存储池320的页面中的物理地址与QAT应用310的虚拟地址之间的映射关系的条目。当创建存储池320时,迭代存储池320中的所有页面,并通过在文件系统中查找页面映射文件来将它们的虚拟地址转换为物理地址。也就是说,一旦生成了QAT应用310的虚拟地址与存储池320的页面中的物理地址的映射关系,该映射关系就作为缓存322的条目被插入该缓存322。
在本公开的实施例中的术语“页面”例如能够是2MB的大页面。也就是说,例如,如果存储池320的存储预算为20M,存储池320可以包括10个2M的页面,每个2MB大页面中的缓冲区是物理连续的。术语“页面”例如也可以是4kB的通用页面。与使用4kB的通用页面的情况相比,使用2MB大页面可以使转换缓存的大小较小。当然,术语“页面”例如也可以被选择为1GB的大页面。应当理解,适用于应用和系统的任何大小的页面都可以被选择作为存储池320中的页面。
当QAT应用310想要使用存储池320中的存储空间来实现用户任务,例如存储数据时,QAT应用310的用户任务312从存储池320请求存储空间。存储池320中的缓冲区分配器323为QAT应用310分配缓冲区,以进行数据的存储。缓冲区分配器323为QAT应用310分配的缓冲区在这里被视作平坦缓冲区(Flat Buffer)。在本公开中,术语“平坦缓冲区”是保存数据层级结构的扁平化的二进制缓存(若干数组),其能够保持直接获取其中的数据化结构而不需要解析,并且能够保证数据结构变化的前后相兼容。
当QAT应用310期望对数据进行数据处理时,将由QAT应用310中的QAT任务提交器313发起任务。在本公开中的术语“数据处理”能够包括但不限于数据的加密,数据的解密,数据的压缩和数据的解压缩中的至少一种。如上文所述的,由于QAT存储需求,提供到QAT实例的缓冲区必须是物理上连续的。因此,QAT任务提交器313将缓冲区作为输入,通过存储池320中的散集列表构建器323和缓存322来生成要被提供到QAT实例330中的散集列表(Scatter-Gather-List)。
在本公开中的术语“散集列表”可以理解为对于在存储池320中与缓冲区相对应的页面中的页面部分(分段)的收集。每个页面部分作为散集列表中的条目,并且每个页面部分上的物理地址是连续的。散集列表还包括用于存储各个页面部分的起始物理地址和大小的列表头部。缓冲区到散集列表的转换将在下文中被进一步详细描述。
散集列表构建器323将散集列表提交到QAT实例330,以使得QAT实例330能够对数据进行处理,例如加密或压缩等。当QAT实例330完成该数据处理,则通知QAT应用310中的QAT响应处理器314该数据处理已经被完成。
通过提出在图3中示出的存储池320,能够一方面满足QAT所提出的存储需求,而另一方面避免在目前的解决方案中的缓冲区复制的操作造成的庞大的系统开销。此外,所提出的存储池还解决了平台兼容性的问题。
以下结合图4至图6进一步详细描述根据本公开的实施例的方法。图4示出了示出了根据本公开的实施例的方法400的流程图。图4中示出的方法能够适用于在图3中描述的场景300。为了方便描述,在图4中针对相同或相似的部件使用与图3一致的附图标记。在框410,创建针对应用310的存储池320。所创建的存储池320的容量可以通过应用310预先确定的容量需求来决定。在存储池中320包括至少一个页面,该至少一个页面具有连续的物理地址。如上文所提及的,在存储池320中所包括的页面可以具有预定的页面大小。
根据某些实施例,创建存储池320包括从存储池320中确定缓存322并且确定存储在存储池320中的至少一个页面的物理地址与应用310的虚拟地址之间的映射关系。所确定的映射关系被存储为该缓存322的条目。
根据某些实施例,确定映射关系可以通过将至少一个页面的映射到应用310的地址空间来实现。建立至少一个页面和应用310的地址空间的映射关系能够获取该至少一个页面的起始虚拟地址。在获取起始虚拟地址之后,可以对存储池320中的至少一个页面中的每个页面进行迭代,以基于该起始虚拟地址、该存储池320的基地址和每个页面在存储池320中的偏移量来确定该至少一个页面中的每个页面的相对应的物理地址。基于所确定的物理地址能够生成映射关系。该映射关系能够作为缓存322的条目而被保存至缓存322。
根据某些实施例,在缓存322中的映射关系的条目可以以哈希表的形式存在。
根据某些实施例,确定每个页面的相对应的物理地址能够通过读取文件系统中的页面映射文件来实现。
如上文所示,根据QAT的存储需求,存储池中的页面需要被锁定在存储池中。也就是说,不能出现将页面上的数据冲刷到其他的存储空间而释放页面的情况。因此,根据某些实施例,创建针对应用310的存储池320还可以包括将该至少一个页面锁定在所述存储池320中。
针对锁定页面的操作,可以在上文所述的对至少一个页面中的每个页面进行迭代之后实现。例如,确定了至少一个页面中的第一页面的相对应物理地址之后就将该第一页面锁定在存储池320中。根据某些实施例,也可以在确定了至少一个页面中的每个页面相对应的物理地址之后,再次迭代至少一个页面中的每个页面,以将每个页面锁定在存储池320中。
通过本公开的实施例提供改进的存储池,能够一方面满足QAT所提出的存储需求,而另一方面避免在目前的解决方案中的缓冲区复制的操作造成的庞大的系统开销。
再次参照图4,在框420,确定用于存储应用310的数据的缓冲区信息。根据某些实施例,该缓冲区信息例如可以包括缓冲区的大小,缓冲区的其实虚拟地址中的至少一项。
在框430,确定是否对数据执行加密或压缩操作。在某些实施例中,例如可以通过确定QAT任务提交器313是否发出了向QAT实例330发出提交QAT任务的请求来确定。
如果在框430中,确定要对数据进行加密或压缩操作,则在框440,基于缓冲区的信息来确定至少一个页面中与该缓冲区相对应的页面部分。
根据某些实施例,确定至少一个页面中与缓冲区相对应的页面部分可以包括确定缓冲区的起始虚拟地址和缓冲区大小。可以根据保存在缓存322中的映射关系,基于该起始虚拟地址来确定相应的物理地址。根据缓冲区的大小能够确定该缓冲区被涵盖在一个页面中,或者该缓冲区超出一个页面,从而确定该至少一个页面中的与缓冲区相对应的页面部分。
对于与缓冲区相对应的页面部分的确定可以参照图5被进一步详细描述。图5中示出了本公开的实施例的缓冲区和和页面的对应关系的示意图。
如图5所示,QAT应用310中的缓冲区510能够对应于存储池320中的页面。如上文所述,可以根据缓冲区510的起始虚拟地址以及之前保存在存储池320中的缓存(在图5中未示出)来得到相应的物理地址,以确定与该缓冲区相对应的页面,例如图5中的页面5200。根据缓冲区510的大小来确定该缓冲区510是否超出了页面5200。在图5中示出了超出页面5200的情况。如图5所示,缓冲区510还与页面5201中的一部分页面相对应。因此,在图5中,页面5200和页面5201中各自有一部分页面对应于缓冲区510。这两个页面部分被确定为与缓冲区510相对应的页面部分。
如上文所述,要提供给QAT实例330的页面部分能够以散集列表530的方式给出。继续参照图5,散集列表530包括列表头部531。前文所述的在,页面5200和页面5201中被确定为与缓冲区510相对应的页面部分分别作为散集列表530的条目5320和5321。所确定的页面部分的特征信息被存储在列表头部531。该特征信息可以包括页面部分的起始物理地址、页面部分的结束物理地址、页面部分的大小和所属的页面标识中的至少一项。
根据某些实施例,可以将该散集列表530发送到QAT实例330,例如QAT设备,以使得QAT实例330,基于散集列表对数据执行所述压缩或加密操作。
通过本公开的实施例提供用于数据处理的方法,能在满足QAT所提出的存储需求的前提下,避免在目前的解决方案中由于缓冲区复制的操作造成系统性能瓶颈,同时提供了对于不同平台的良好的兼容性。
使用Data Domain最新平台Juno对本公开提出的方案进行测试。客户端A是2个具有2个双端口16Gb光纤通道适配器的Cisco C200系列服务器。目标是具有2个四端口16Gb光纤通道SLIC的Juno 4层级数据域复位器。
Perfload测试是DDFS性能基准测试的官方测试。测试涵盖了读、写、模拟备份和恢复用户案例。Perfload将在测试期间收集性能数据。这里以Perfload测试中的一个测试用例的解压缩数据为例来实现对于本公开的实施方案的测试。
表1中的数据显示了DDFS压缩器组件中的解压延迟和吞吐量。表中的所有延迟数据均为平均数据。QAT解压缩延迟代表QAT API的延迟。缓冲区平均大小表示解压缩后的数据大小-未压缩的数据大小。在Perfload测试中,压缩率约为44%。所以压缩的数据大小约为缓冲区大小平均值的一半,其约为48KB。如表1所示,目前的方法必须做存储复制。存储复制的总耗费是67.337μs。根据本公开的方案无需存储复制,但需要查找虚拟到物理转译缓存,其将耗费为4.805μs。因此,根据本公开的方案的总延迟是225.338μs。因此,解压缩吞吐量从382.233MB/s增加到491.466MB/s,提高了28%。
表1:解压缩性能统计
表2和表3是为了展示系统级的性能改进。表2描述了压缩密集型情况的性能,表3则针对解压密集型情况。可以看到,它在压缩和解压缩情况下的CPU利用率降低了大约22%,同时提供了更高的吞吐量。
改进的存储池 | 具有复制缓冲区的存储池 | |
吞吐量(MB/S) | 3519.99 | 3398.72 |
CPU使用率 | 52.71% | 67.37% |
表2:压缩密集型情况的性能比较
改进的存储池 | 具有复制缓冲区的存储池 | |
吞吐量(MB/S) | 6595.05 | 6051.68 |
CPU使用率 | 45.25% | 58.51% |
表3:压缩密集型情况的性能比较
图6示出了可以用来实施本公开的实施例的设备600的示意性框图。如图6所示,设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的计算机程序指令或者从存储单元604加载到随机访问存储器(RAM)603中的计算机程序指令,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。CPU601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法400,可由处理单元601执行。例如,在一些实施例中,方法200可被实现为计算机软件程序,其被有形地包含于机器程序产品,例如存储单元604。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序被加载到RAM 603并由CPU 601执行时,可以执行上文描述的方法400的一个或多个步骤。
综上所述,本公开的实施例提供了一种用于数据处理的方法和设备,能在满足QAT所提出的存储需求的前提下,避免在目前的解决方案中由于缓冲区复制的操作造成系统性能瓶颈,同时提供了对于不同平台的良好的兼容性。
本公开内容可以是方法、设备和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开内容的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开内容操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开内容的各个方面。
这里参照根据本公开内容实施例的方法、装置(设备)和计算机程序产品的流程图和/或框图描述了本公开内容的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机程序产品则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开内容的多个实施例的方法、设备和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开内容的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文公开的各实施例。
Claims (15)
1.一种用于数据处理的方法,包括:
创建针对应用的存储池,所述存储池包括至少一个页面,所述至少一个页面具有连续的物理地址;
确定用于存储所述应用的数据的缓冲区的信息;以及
响应于所述数据要被执行压缩或加密操作,基于所述缓冲区的所述信息,确定所述至少一个页面中与所述缓冲区相对应的页面部分,以用于所述压缩或加密操作的执行。
2.根据权利要求1所述的方法,其中创建针对应用的存储池包括:
从所述存储池中确定缓存;
确定所述至少一个页面的所述物理地址与所述应用的虚拟地址之间的映射关系;以及
将所述映射关系保存为所述缓存的条目。
3.根据权利要求2所述的方法,其中确定映射关系包括:
通过将所述至少一个页面映射到所述应用的地址空间来获取所述至少一个页面的起始虚拟地址,
至少部分地基于所获取的所述起始虚拟地址确定所述至少一个页面中的每个页面的相对应的物理地址;以及
基于所确定的物理地址生成所述映射关系。
4.根据权利要求3所述的方法,其中确定所述至少一个页面中的每个页面的相对应的物理地址包括:
读取文件系统中的页面映射文件,以将所述虚拟地址转换成相对应的物理地址。
5.根据权利要求1所述的方法,其中创建针对应用的存储池包括:
将所述至少一个页面锁定在所述存储池中。
6.根据权利要求1所述的方法,其中确定所述至少一个页面中与所述缓冲区相对应的页面部分包括:
确定缓冲区的起始虚拟地址和缓冲区大小;
基于所述起始虚拟地址确定相对应的物理地址;以及
确定所述至少一个页面中的与所述缓冲区相对应的页面部分。
7.根据权利要求1所述的方法,还包括:
确定所述页面部分的特征信息,所述特征信息包括以下中的至少一项:所述页面部分的起始物理地址、所述页面部分的结束物理地址、所述页面部分的大小、所属的页面标识;以及
向快速辅助技术(QAT)设备发送所述页面部分的特征信息,以使得所述QAT设备基于所述特征信息对所述数据执行所述压缩或加密操作。
8.一种用于数据处理的设备,包括:
至少一个处理器;以及
与所述至少一个处理器耦合的存储器,所述存储器包含有存储于其中的指令,所述指令在被所述至少一个处理单元执行时,使得所述设备执行动作,所述动作包括:
创建针对应用的存储池,所述存储池包括至少一个页面,所述至少一个页面具有连续的物理地址;
确定用于存储所述应用的数据的缓冲区的信息;以及
响应于所述数据要被执行压缩或加密操作,基于所述缓冲区的所述信息,确定所述至少一个页面中与所述缓冲区相对应的页面部分,以用于所述压缩或加密操作的执行。
9.根据权利要求8所述的设备,其中创建针对应用的存储池包括:
从所述存储池中确定缓存;
确定所述至少一个页面的所述物理地址与所述应用的虚拟地址之间的映射关系;以及
将所述映射关系保存为所述缓存的条目。
10.根据权利要求9所述的设备,其中确定映射关系包括:
通过将所述至少一个页面映射到所述应用的地址空间来获取所述至少一个页面的起始虚拟地址,
至少部分地基于所获取的所述起始虚拟地址确定所述至少一个页面中的每个页面的相对应的物理地址;以及
基于所确定的物理地址生成所述映射关系。
11.根据权利要求10所述的设备,其中确定所述至少一个页面中的每个页面的相对应的物理地址包括:
读取文件系统中的页面映射文件,以将所述虚拟地址转换成相对应的物理地址。
12.根据权利要求8所述的设备,其中创建针对应用的存储池包括:
将所述至少一个页面锁定在所述存储池中。
13.根据权利要求8所述的设备,其中确定所述至少一个页面中与所述缓冲区相对应的页面部分包括:
确定缓冲区的起始虚拟地址和缓冲区大小;以及
基于所述起始虚拟地址确定相对应的物理地址;
确定所述至少一个页面中的与所述缓冲区相对应的页面部分。
14.根据权利要求8所述的设备,还包括:
确定所述页面部分的特征信息,所述特征信息包括以下中的至少一项:所述页面部分的起始物理地址、所述页面部分的结束物理地址、所述页面部分的大小、所属的页面标识;以及
向快速辅助技术(QAT)设备发送所述页面部分的特征信息,以使得所述QAT设备基于所述特征信息对所述数据执行所述压缩或加密操作。
15.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1至7任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810619242.7A CN110609708B (zh) | 2018-06-15 | 2018-06-15 | 用于数据处理的方法、设备和计算机可读介质 |
US16/146,816 US20190384638A1 (en) | 2018-06-15 | 2018-09-28 | Method, device and computer program product for data processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810619242.7A CN110609708B (zh) | 2018-06-15 | 2018-06-15 | 用于数据处理的方法、设备和计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110609708A true CN110609708A (zh) | 2019-12-24 |
CN110609708B CN110609708B (zh) | 2023-10-27 |
Family
ID=68839277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810619242.7A Active CN110609708B (zh) | 2018-06-15 | 2018-06-15 | 用于数据处理的方法、设备和计算机可读介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20190384638A1 (zh) |
CN (1) | CN110609708B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112329023A (zh) * | 2020-11-13 | 2021-02-05 | 南京百敖软件有限公司 | 一种利用英特尔QuickAssist技术加速启动时间的方法 |
CN114461405A (zh) * | 2022-04-01 | 2022-05-10 | 荣耀终端有限公司 | 一种内存中锁定页面的存储方法及相关装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538582A (zh) * | 2020-04-26 | 2020-08-14 | 中国科学技术大学 | 基于Intel QAT的同态加密卸载方法 |
CN112286679B (zh) * | 2020-10-20 | 2022-10-21 | 烽火通信科技股份有限公司 | 一种基于DPDK的多核间buffer动态迁移方法与装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040215918A1 (en) * | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Method, apparatus and computer program product for dynamically minimizing translation lookaside buffer entries across contiguous memory |
CN102184140A (zh) * | 2011-04-01 | 2011-09-14 | 航天恒星科技有限公司 | 一种面向实时数据库的表文件空间分配方法 |
US8543792B1 (en) * | 2006-09-19 | 2013-09-24 | Nvidia Corporation | Memory access techniques including coalesing page table entries |
US20150339228A1 (en) * | 2014-05-21 | 2015-11-26 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
US20160292079A1 (en) * | 2015-03-30 | 2016-10-06 | Xpliant, Inc. | Packet processing system, method and device having reduced static power consumption |
US20170286320A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Avoiding redundant memory encryption in a cryptographic protection system |
US20180024748A1 (en) * | 2016-07-19 | 2018-01-25 | SK Hynix Inc. | Data storage device for compressing input data |
-
2018
- 2018-06-15 CN CN201810619242.7A patent/CN110609708B/zh active Active
- 2018-09-28 US US16/146,816 patent/US20190384638A1/en not_active Abandoned
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040215918A1 (en) * | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Method, apparatus and computer program product for dynamically minimizing translation lookaside buffer entries across contiguous memory |
US8543792B1 (en) * | 2006-09-19 | 2013-09-24 | Nvidia Corporation | Memory access techniques including coalesing page table entries |
CN102184140A (zh) * | 2011-04-01 | 2011-09-14 | 航天恒星科技有限公司 | 一种面向实时数据库的表文件空间分配方法 |
US20150339228A1 (en) * | 2014-05-21 | 2015-11-26 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
US20160292079A1 (en) * | 2015-03-30 | 2016-10-06 | Xpliant, Inc. | Packet processing system, method and device having reduced static power consumption |
US20170286320A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Avoiding redundant memory encryption in a cryptographic protection system |
US20180024748A1 (en) * | 2016-07-19 | 2018-01-25 | SK Hynix Inc. | Data storage device for compressing input data |
Non-Patent Citations (1)
Title |
---|
冯小梅等: "云存储技术的现状分析与发展趋势", 《广西计算机学会》, pages 275 - 282 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112329023A (zh) * | 2020-11-13 | 2021-02-05 | 南京百敖软件有限公司 | 一种利用英特尔QuickAssist技术加速启动时间的方法 |
CN112329023B (zh) * | 2020-11-13 | 2024-05-24 | 南京百敖软件有限公司 | 一种利用英特尔QuickAssist技术加速启动时间的方法 |
CN114461405A (zh) * | 2022-04-01 | 2022-05-10 | 荣耀终端有限公司 | 一种内存中锁定页面的存储方法及相关装置 |
CN114461405B (zh) * | 2022-04-01 | 2022-09-13 | 荣耀终端有限公司 | 一种内存中锁定页面的存储方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110609708B (zh) | 2023-10-27 |
US20190384638A1 (en) | 2019-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11126353B2 (en) | Method and apparatus for data copy | |
US10831654B2 (en) | Cache management using multiple cache history lists | |
CN111949605B (zh) | 用于实现文件系统的方法、设备和计算机程序产品 | |
CN107870728B (zh) | 用于移动数据的方法和设备 | |
CN110609708B (zh) | 用于数据处理的方法、设备和计算机可读介质 | |
US10698812B2 (en) | Updating cache using two bloom filters | |
US10572385B2 (en) | Granting exclusive cache access using locality cache coherency state | |
CN105518631B (zh) | 内存管理方法、装置和系统、以及片上网络 | |
US11048422B2 (en) | Method, device, and computer readable storage medium for allocating access rights to data among storage processors | |
CN109478171B (zh) | 提高openfabrics环境中的吞吐量 | |
CN114089920A (zh) | 数据存储方法、装置、可读介质及电子设备 | |
US11010307B2 (en) | Cache management | |
US11093389B2 (en) | Method, apparatus, and computer program product for managing storage system | |
CN115470156A (zh) | 基于rdma的内存使用方法、系统、电子设备和存储介质 | |
CN111782614B (zh) | 数据访问方法、装置、设备及存储介质 | |
JP2023505442A (ja) | 第2のタイプのメモリとしてのダイナミック・ランダム・アクセス・メモリ・キャッシュの提供 | |
US20220155987A1 (en) | Performance of Dispersed Location-Based Deduplication | |
CN115562871A (zh) | 内存分配管理的方法和装置 | |
US11481255B2 (en) | Management of memory pages for a set of non-consecutive work elements in work queue designated by a sliding window for execution on a coherent accelerator | |
US9857979B2 (en) | Optimizing page boundary crossing in system memory using a reference bit and a change bit | |
US20240103766A1 (en) | Method, electronic device, and computer progam product for asynchronously accessing data | |
US11755496B1 (en) | Memory de-duplication using physical memory aliases | |
US11573896B2 (en) | DRAM caching storage class memory | |
US20240103767A1 (en) | Method, electronic device, and computer program product for synchronously accessing data | |
US20230026565A1 (en) | Method of inputting and outputting data, electronic device and computer program product |
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 |