CN103136115B - 请求访问零拷贝高速缓存的方法及*** - Google Patents

请求访问零拷贝高速缓存的方法及*** Download PDF

Info

Publication number
CN103136115B
CN103136115B CN201110392008.3A CN201110392008A CN103136115B CN 103136115 B CN103136115 B CN 103136115B CN 201110392008 A CN201110392008 A CN 201110392008A CN 103136115 B CN103136115 B CN 103136115B
Authority
CN
China
Prior art keywords
request
access
cache
write
cache region
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.)
Expired - Fee Related
Application number
CN201110392008.3A
Other languages
English (en)
Other versions
CN103136115A (zh
Inventor
胡畅泉
陈志丰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cheng Ruifang
Original Assignee
Inventec Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inventec Corp filed Critical Inventec Corp
Priority to CN201110392008.3A priority Critical patent/CN103136115B/zh
Publication of CN103136115A publication Critical patent/CN103136115A/zh
Application granted granted Critical
Publication of CN103136115B publication Critical patent/CN103136115B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种请求访问零拷贝高速缓存Cache的***,包括创建模块,用于为每个访问Cache的请求创建一个请求数据结构,所述请求数据结构包括有记录对应访问请求需要访问的Cache区域的地址;队列模块,用于将请求数据结构依照请求顺序放入请求队列中;识别模块,根据请求队列中的每个请求数据结构,识别对应的访问请求需要访问的Cache区域是否被占用;空间分配模块,用于在识别写请求需要访问的Cache区域被占用时,对写请求分配暂存空间;以及写模块,用于将写请求对应数据写入所述暂存空间中;以及在被占用Cache区域被释放时,将暂存空间的数据写入Cache区域中。本发明可以提高请求的访问效率。

Description

请求访问零拷贝高速缓存的方法及***
技术领域
本发明涉及对高速缓存(Cache)的内存使用技术,尤其涉及零拷贝(Zerocopy)Cache的内存使用方法。
背景技术
Cache(高速缓存),是计算机***中的重要组成部分,它广泛存在于中央处理器(CPU),磁盘控制器,总线适配器等部件中。Cache本质上是一个概念,一种逻辑,它既可以硬件的形式存在,在硬件的配合下发挥作用。
Cache的核心功能是加快目标部件对外界访问的响应速度,对于存储***而言,Cache的意义主要在于提高磁盘***的访问速度。Cache的功能主要分为两个方面,即,服务读请求与写请求。对于写请求,Cache的作用在于将待写数据暂存在高速设备(内存)中,使访问者不必等待数据真止写至低速目标设备(磁盘等)。对于读请求,Cache的意义在于能够将高速设备中的数据副本尽快返回给用户,而不必去访问实际低速设备。
在整个存储***的软件架构中,其中软件构架包括ISCSI(internet SmallComputer System Interface,互联网小型计算机***接口)、Cache、LVM(Logical Volume Manager,逻辑卷管理)、RAID(Redundant Array ofIndependent Disk,独立冗余磁盘阵列)和HDD(Hard Disk Drive,硬盘驱动器)。
如图1所示,Cache位于ISCSI服务层之下,LVM层之上,属于衔接部件,对存储***性能有重要影响。
从数据的流向来看,由ISCSI服务层下发的请求全部汇聚于Cache,为保证Cache数据的完整性,对Cache中同一区域的使用,必须以互斥方式进行。即,当某个区域正在被访问时,对此区域的其它访问请求需要等待。此种策略在保证了逻辑的正确性的同时,降低了请求的处理速度,成为了***效能的一个瓶颈。
但是对于零拷贝Cache,由于Cache内存在被一个用户使用的过程中必须锁定,从而来防止两个用户共同使用内存所造成的混乱。当一个用户在使用特点的内存组块(memory chunk)时,其他需要使用该内存组块的用户必须等待,从而降低了并发,减少了效能。
发明内容
本发明的目的旨在至少解决现有技术中的上述问题之一。
为此,本发明的实施例提出了一种请求访问零拷贝Cache的方法及***,以在保证逻辑正确性的同时提高请求的处理速度。
根据本发明的一个方面,本发明实施例提出了一种请求访问零拷贝高速缓存Cache的方法,所述访问方法包括以下步骤:为每个访问Cache的请求创建一个请求数据结构,其中所述请求数据结构包括有记录对应访问请求需要访问的Cache区域的地址;将所述请求数据结构依照请求顺序放入请求队列中;根据请求队列中的每个请求数据结构,识别对应的访问请求需要访问的Cache区域是否被占用;在识别写请求需要访问的Cache区域被占用时,对该写请求分配暂存空间并将对应数据写入所述暂存空间中;以及在被占用Cache区域被释放时,将所述暂存空间的数据写入该Cache区域中。
根据本发明进一步的实施例,在识别写请求需要访问的Cache区域未被占用时,将写请求对应数据写入该Cache区域中。
根据本发明进一步的实施例,在识别读请求需要访问的Cache区域被占用时,延迟该读请求对被占用Cache区域的访问;以及在读请求返回时访问该Cache区域。
根据本发明进一步的实施例,在识别读请求需要访问的Cache区域未被占用时,则读取该Cache区域。
根据本发明进一步的实施例,所述暂存空间的容量与被占用的Cache区域容量一致。
根据本发明的另一方面,本发明的实施例提出一种请求访问零拷贝高速缓存Cache的***,所述访问***包括:创建模块,所述创建模块用于为每个访问Cache的请求创建一个请求数据结构,其中所述请求数据结构包括有记录对应访问请求需要访问的Cache区域的地址;队列模块,所述队列模块用于将所述请求数据结构依照请求顺序放入请求队列中;识别模块,所述识别模块用于根据请求队列中的每个请求数据结构,识别对应的访问请求需要访问的Cache区域是否被占用;空间分配模块,所述空间分配模块用于在识别写请求需要访问的Cache区域被占用时,对该写请求分配暂存空间;以及写模块,所述写模块用于将写请求对应数据写入所述暂存空间中;以及在被占用Cache区域被释放时,将所述暂存空间的数据写入该Cache区域中。
根据本发明进一步的实施例,在所述识别模块识别写请求需要访问的Cache区域未被占用时,所述写模块将写请求对应数据写入该Cache区域中。
根据本发明进一步的实施例,还包括读模块,在所述识别模块识别读请求需要访问的Cache区域被占用时,所述读模块延迟该读请求对被占用Cache区域的访问;以及在读请求返回时访问该Cache区域。
根据本发明再一步的实施例,在所述识别模块识别读请求需要访问的Cache区域未被占用时,所述读模块读取该Cache区域。
本发明采用请求排队机制,在写请求发生冲突时对冲突区域分配容纳待写数据的暂存空间;在冲突解除后,将暂存空间中的内容写至原冲突区域。当读请求发生冲突时,延迟对冲突区域的访问,对非冲突区域的访问照常进行。
从而在保证逻辑正确性的前提下,使发生冲突的请求能够尽快返回,而不必等待相关请求的完成,提高了请求的处理速度。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
本发明的上述和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为个存储***的软件架构示意图;
图2为本发明实施例的请求访问零拷贝Cache的***结构方框图;
图3为本发明实施例的访问Cache的请求队列的请求数据结构示意图;
图4为本发明请求访问零拷贝Cache的方法步骤流程图;
图5a和图5b为本发明实施例的写请求访问零拷贝Cache的步骤流程图;
图6a和图6b为本发明实施例的读请求访问零拷贝Cache的步骤流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
参考图2,该图为本发明实施例的请求访问零拷贝Cache的***结构方框图。
如图所示,该***包括创建模块12、队列模块14、识别模块16、空间分配模块18和写模块20。
其中,创建模块12用于为每个访问Cache的请求创建一个请求数据结构,以此来代表这个请求,其中请求数据结构中有一子数据结构,其中记录了对应访问请求需要访问的Cache区域(Cache block)的地址(指针),用户通过这些指针来访问Cache中的内容。
随后,队列模块14将请求数据结构依照请求顺序放入请求队列中,等待处理。
请求队列的请求数据结构示意图可以参考图3,例如请求i对应箭头表示的指针指向Cache中的区域block c和block d,表示该请求i所需要访问的区域。
同样地,请求i的后续请求j的指针表示该请求j需要访问Cache中的blockd和block e。
识别模块16则根据请求队列中的每个请求数据结构,具体地来说根据指针指向的block地址,识别对应的访问请求需要访问的Cache区域是否被占用,即是否存在冲突。例如对于图3实施例,识别模块16可以识别请求j与请求i存在block d访问的冲突。
对于当前为写请求的访问请求,当一个写请求到达后,为了保证在同一时刻一个Cache block只被一个请求写入,写请求需要申请对目标block进行独占式访问。如果在识别此时目标block已被其它请求全部或部分占用,即为冲突block,则由空间分配模块18对该写请求分配暂存空间(block副本),并由写模块20将对应数据写入该暂存空间中,即冲突block中的数据被写入block副本。
在一个实施例中,暂存空间的容量与被占用的Cache block容量一致。
此后,在识别模块16识别写请求需要访问的Cache block未被占用时,即为非冲突block,则由写模块20将写请求对应数据直接写入该Cache。
并且在冲突block被释放时,写模块20将暂存空间的数据写入该Cacheblock中。
在一个实施例中,除了设置有对写请求访问冲突block的暂存空间分配之外,本发明还可以包括读模块22,在识别模块16识别读请求需要访问的Cacheblock(部分或全部)被占用时,读模块22延迟该读请求对被占用Cache block的访问,对冲突block先不进行读操作,只读取非冲突block(如果存在)。等到读请求返回时(其间可能经历磁盘访问过程),再访问先前发生冲突的block。在读请求返回时,由识别模块16再次检测该冲突block是否还存在冲突,若是则等待;否则,读模块22对该block执行读取操作。
上述各个模块在***中采用软件方式实现,***初始化时,作为内核功能模块(Kernel Module)而加载到操作***(Linux)当中。
在本发明一个实施例中,硬件环境为:采用Intel JasperForest架构Xeon系列中央处理单元(CPU)的存储服务器。本发明中描述的Cache逻辑也可采用现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等可编程逻辑器件实现;Cache管理的存储空间在***主存中分配,或者Cache管理的存储空间也可使用独立于***主存的随机存取存储器(RAM)器件实现。
下面参考图4,图4为本发明请求访问零拷贝Cache的方法步骤流程图。
首先,为每个访问Cache的请求创建一个请求数据结构(步骤102),其中请求数据结构包括有记录对应访问请求需要访问的Cache区域的地址。
然后,将所述请求数据结构依照请求顺序放入请求队列中(步骤104)。
根据请求队列中的每个请求数据结构,识别对应的访问请求需要访问的Cache区域是否被占用(步骤106)。以及,根据识别结果对Cache区域进行相应的访问操作(步骤108)。
本发明可以对写操作和/或读操作的访问请求执行相应的Cache访问处理,下文中将结合图5和图6分别对其进行详细说明。
其中图5a和图5b为本发明实施例的写请求访问零拷贝Cache的步骤流程图;图6a和图6b为本发明实施例的读请求访问零拷贝Cache的步骤流程图。
参考图5a,该图显示了写请求创建过程。
在一个写请求到达后,首先为其创建数据结构(202),并申请对目标block进行独占时访问(步骤204)。接着判断目标block是否被占用(步骤206),如果此时目标block已被其它请求全部或部分占用,则为此请求分配暂存空间,以创建block副本,冲突block中的数据被写入block副本(步骤208),其中暂存空间的容量与发生冲突的block一致。
若未被占用,即为非冲突block,则将其中的数据直接写入Cache(步骤210);在冲突block被释放时,将block副本中的内容写至此block(步骤210)。
参考图5b,该图显示了block释放过程。
在释放block时首先判断是否存在副本(步骤302),若不存在则直接释放该block(步骤310)。若存在,则进一步判断对应block是否仍被占用(步骤304),若被占用则等待该block解锁(步骤306);否则,将block副本的内容复制到block中(步骤308),然后释放该block(步骤310)。
参考图6a,该图显示了读请求创建过程。
在一个读请求到达后,首先为其创建数据结构(402),并中请对目标block进行独占时访问(步骤404)。接着判断目标block是否被占用(步骤406),如果此时目标block已被其它请求全部或部分占用,则读取未冲突block中的数据(步骤410);否则,读取全部block(步骤408)。
参考图6b,该图显示了读请求返回过程。
首先判断是否存在未读的冲突block(步骤502),若不存在则直接返回(步骤610)。若存在,则进一步判断对应block是否需要读取,即其中的内容是否为最新(步骤504),这是因为该读请求可能与前一个写请求冲突,若是写请求在完成之后,block中即为最新内容,这时就可以直接从该block中读取数据(步骤506),而不用从磁盘读取。否则,从磁盘读取(步骤508)。
本发明采用请求排队机制,当写请求发生冲突时对冲突区域分配容纳待写数据的暂存空间;待冲突解除后,将暂存空间中的内容写至原冲突区域。当读请求发生冲突时,延迟对冲突区域的访问,对非冲突区域的访问照常进行。
本发明综合成本、性能、实现难度等方面的考虑,使用Cache软件模块结合物理内存的方式实现Cache功能。在保证逻辑正确性的前提下,使发生冲突的请求能够尽快返回,而不必等待相关请求的完成,提高了请求的处理速度。相应地,提高了Cache的访问效率。
并且,逻辑简练清晰,易于维护,对硬件性能消耗小。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (8)

1.一种请求访问零拷贝高速缓存Cache的方法,其特征在于,所述方法包括以下步骤:
为每个访问Cache的请求创建一个请求数据结构,其中所述请求数据结构包括有记录对应访问请求需要访问的Cache区域的地址;
将所述请求数据结构依照请求顺序放入请求队列中;
根据请求队列中的每个请求数据结构,识别对应的访问请求需要访问的Cache区域是否被占用;
在识别写请求需要访问的Cache区域被占用时,对该写请求分配暂存空间并将对应数据写入所述暂存空间中;以及
在被占用Cache区域被释放时,将所述暂存空间的数据写入该Cache区域中。
2.如权利要求1所述的请求访问零拷贝高速缓存Cache的方法,其特征在于,在识别写请求需要访问的Cache区域未被占用时,将写请求对应数据写入该Cache区域中。
3.如权利要求1所述的请求访问零拷贝高速缓存Cache的方法,其特征在于,
在识别读请求需要访问的Cache区域被占用时,延迟该读请求对被占用Cache区域的访问;以及
在识别读请求需要访问的Cache区域未被占用时,则读取该Cache区域。
4.如权利要求1所述的请求访问零拷贝高速缓存Cache的方法,其特征在于,所述暂存空间的容量与被占用的Cache区域容量一致。
5.一种请求访问零拷贝高速缓存Cache的***,其特征在于,所述访问***包括:
创建模块,所述创建模块用于为每个访问Cache的请求创建一个请求数据结构,其中所述请求数据结构包括有记录对应访问请求需要访问的Cache区域的地址;
队列模块,所述队列模块用于将所述请求数据结构依照请求顺序放入请求队列中;
识别模块,所述识别模块用于根据请求队列中的每个请求数据结构,识别对应的访问请求需要访问的Cache区域是否被占用;
空间分配模块,所述空间分配模块用于在识别写请求需要访问的Cache区域被占用时,对该写请求分配暂存空间;以及
写模块,所述写模块用于将写请求对应数据写入所述暂存空间中;以及在被占用Cache区域被释放时,将所述暂存空间的数据写入该Cache区域中。
6.如权利要求5所述的请求访问零拷贝高速缓存Cache的***,其特征在于,在所述识别模块识别写请求需要访问的Cache区域未被占用时,所述写模块将写请求对应数据写入该Cache区域中。
7.如权利要求5所述的请求访问零拷贝高速缓存Cache的***,其特征在于,还包括读模块,在所述识别模块识别读请求需要访问的Cache区域被占用时,所述读模块延迟该读请求对被占用Cache区域的访问以及在读请求返回时访问该Cache区域;以及在所述识别模块识别读请求需要访问的Cache区域未被占用时,所述读模块读取该Cache区域。
8.如权利要求5所述的请求访问零拷贝高速缓存Cache的***,其特征在于,所述暂存空间的容量与被占用的Cache区域容量一致。
CN201110392008.3A 2011-11-23 2011-11-23 请求访问零拷贝高速缓存的方法及*** Expired - Fee Related CN103136115B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110392008.3A CN103136115B (zh) 2011-11-23 2011-11-23 请求访问零拷贝高速缓存的方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110392008.3A CN103136115B (zh) 2011-11-23 2011-11-23 请求访问零拷贝高速缓存的方法及***

Publications (2)

Publication Number Publication Date
CN103136115A CN103136115A (zh) 2013-06-05
CN103136115B true CN103136115B (zh) 2015-08-19

Family

ID=48495965

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110392008.3A Expired - Fee Related CN103136115B (zh) 2011-11-23 2011-11-23 请求访问零拷贝高速缓存的方法及***

Country Status (1)

Country Link
CN (1) CN103136115B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559390B (zh) * 2016-09-23 2023-06-06 成都华为技术有限公司 一种数据写入控制方法及存储设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7152069B1 (en) * 2002-10-15 2006-12-19 Network Appliance, Inc. Zero copy writes through use of mbufs
CN101063963A (zh) * 2006-04-26 2007-10-31 韩国电子通信研究院 数据零拷贝文件的移动方法
CN101877666A (zh) * 2009-11-13 2010-11-03 曙光信息产业(北京)有限公司 基于零拷贝方式的多应用程序报文接收方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9535732B2 (en) * 2009-11-24 2017-01-03 Red Hat Israel, Ltd. Zero copy transmission in virtualization environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7152069B1 (en) * 2002-10-15 2006-12-19 Network Appliance, Inc. Zero copy writes through use of mbufs
CN101063963A (zh) * 2006-04-26 2007-10-31 韩国电子通信研究院 数据零拷贝文件的移动方法
CN101877666A (zh) * 2009-11-13 2010-11-03 曙光信息产业(北京)有限公司 基于零拷贝方式的多应用程序报文接收方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
网络缓存的零拷贝优化;周敬利 等;《计算机科学》;20050930;第32卷(第9期);全文 *

Also Published As

Publication number Publication date
CN103136115A (zh) 2013-06-05

Similar Documents

Publication Publication Date Title
CN103049397B (zh) 一种基于相变存储器的固态硬盘内部缓存管理方法及***
US8086765B2 (en) Direct I/O device access by a virtual machine with memory managed using memory disaggregation
US8392670B2 (en) Performance management of access to flash memory in a storage device
US8161128B2 (en) Sharing of data across disjoint clusters
US9348747B2 (en) Solid state memory command queue in hybrid device
US20130145095A1 (en) Melthod and system for integrating the functions of a cache system with a storage tiering system
JP2014154155A (ja) コマンド・プッシュ・モデルの使用によりデータ・ストレージ・システムにおける書込みレイテンシを低減させるための方法およびシステム
US11494308B2 (en) Methods and devices for bypassing the internal cache of an advanced DRAM memory controller
US20180107601A1 (en) Cache architecture and algorithms for hybrid object storage devices
WO2006012196A2 (en) An apparatus and method for high performance volatile disk drive memory access using an integrated dma engine
KR20120050891A (ko) 스토리지 시스템에서 요청에 대한 응답과 연관된 지연의 감소
US9785552B2 (en) Computer system including virtual memory or cache
JP4612269B2 (ja) 仮想ボリューム管理方式
CN106469119A (zh) 一种基于nvdimm的数据写缓存方法及其装置
US10628048B2 (en) Storage control device for controlling write access from host device to memory device
CN107577492A (zh) 加速文件***读写的nvm块设备驱动方法及***
US9645926B2 (en) Storage system and method for managing file cache and block cache based on access type
US11010091B2 (en) Multi-tier storage
CN103136115B (zh) 请求访问零拷贝高速缓存的方法及***
US8364890B2 (en) RAID control apparatus and control method therefor
US20210374063A1 (en) Method for processing page fault by processor
KR20220088274A (ko) 코어별 저널 구조를 포함하는 컴퓨팅 시스템
US12019894B2 (en) Systems and methods for managing coresident data for containers
CN109344136A (zh) 一种共享文件***的访问方法、装置及设备
EP4328755A1 (en) Systems, methods, and apparatus for accessing data in versions of memory pages

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Cheng Ruifang

Inventor before: Hu Changquan

Inventor before: Chen Zhifeng

TR01 Transfer of patent right

Effective date of registration: 20170920

Address after: Guangming Road, Chengguan Town, Puyang City, Henan province Nanle County of No. 8

Patentee after: Cheng Ruifang

Address before: 300193 West Lake Road, Tianjin, No. 38, No.

Co-patentee before: Inventec Corporation

Patentee before: Inventec Co., Ltd.

TR01 Transfer of patent right
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 541002 No. two, No. 5, West Road, Xiangshan District, Guilin, the Guangxi Zhuang Autonomous Region

Patentee after: Cheng Ruifang

Address before: Guangming Road, Chengguan Town, Puyang City, Henan province Nanle County of No. 8

Patentee before: Cheng Ruifang

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150819

Termination date: 20171123