CN113138945B - 一种数据缓存方法、装置、设备及介质 - Google Patents
一种数据缓存方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN113138945B CN113138945B CN202110410477.7A CN202110410477A CN113138945B CN 113138945 B CN113138945 B CN 113138945B CN 202110410477 A CN202110410477 A CN 202110410477A CN 113138945 B CN113138945 B CN 113138945B
- Authority
- CN
- China
- Prior art keywords
- writing
- data
- file
- disk
- offset position
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000009826 distribution Methods 0.000 claims abstract description 4
- 238000003860 storage Methods 0.000 claims description 73
- 238000012545 processing Methods 0.000 claims description 35
- 125000004122 cyclic group Chemical group 0.000 claims description 25
- 230000006870 function Effects 0.000 claims description 24
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002441 reversible 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/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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种数据缓存方法、装置、设备及介质,方法包括:响应于空间分配请求,对固定区域磁盘空间进行预分配,确定内存块缓冲区;响应于数据写入请求,将第一数据循环写入所述内存块缓冲区或所述磁盘;响应于数据读取请求,从所述内存块缓冲区或所述磁盘中循环读取第二数据。本发明提高了数据缓存的效率,可广泛应用于数据缓存技术领域。
Description
技术领域
本发明涉及数据缓存技术领域,尤其是一种数据缓存方法、装置、设备及介质。
背景技术
随着通信网络的不断发展和用户规模的不断扩大。往往需要较大的缓存空间作为部分临时数据存储区。由于内存造价成本较高,容量相对有限。在内存资源有限时需要对这段时间内海量数据缓存到磁盘中。对这类型的数据处理时,经常需要处理每秒几百兆到几千兆的数据。这些数据需要快速缓存到磁盘中,而磁盘设备存储空间一般相对固定。而且网络恢复后还需要快速读取存储区内容。随着网络迭代速度加快,如何高效快速的利用固定磁盘空间缓存数据变成很值得思考解决的问题。
发明内容
有鉴于此,本发明实施例提供一种高效的数据缓存方法、装置、设备及介质。
本发明的第一方面提供了一种数据缓存方法,包括:
响应于空间分配请求,对固定区域磁盘空间进行预分配,确定内存块缓冲区;
响应于数据写入请求,将第一数据循环写入所述内存块缓冲区或所述磁盘;
响应于数据读取请求,从所述内存块缓冲区或所述磁盘中循环读取第二数据。
可选地,所述响应于空间分配请求,对固定区域磁盘空间进行预分配,确定内存块缓冲区,包括:
输入设置参数路径创建目录和缓存文件;
根据预设值创建预设大小的磁盘文件,作为高速缓存的存储区;
通过open64函数接口创建文件写描述符和读描述符;
创建内存写缓冲区和内存读缓冲区。
可选地,所述创建内存写缓冲区和内存读缓冲区,包括:
调用getpagesize函数获取内存页大小;
通过posix_memalign函数对内存写缓冲区和内存读缓冲区进行对齐;
配置所述内存写缓冲区的文件写偏移位置;
配置所述内存读缓冲区的文件读偏移位置。
可选地,所述响应于数据写入请求,将第一数据循环写入所述内存块缓冲区或所述磁盘,包括:
根据所述数据写入请求,根据所述第一数据构建内置存储结构作为写入请求数据块;
对于同一循环内的数据写入,则判断写入数据块总长度与文件写偏移位置的和是否小于总的存储空间大小,若是,则调用磁盘存储控制模块-写入请求处理单元,写入请求数据块;反之,则调用磁盘存储控制模块-刷写内存缓存处理单元,同步磁盘写入数据。
可选地,所述响应于数据写入请求,将第一数据循环写入所述内存块缓冲区或所述磁盘,还包括:
对于非同一循环内的数据写入,判断写入数据块总长度与文件写偏移位置之和是否小于文件读偏移位置,若是则用磁盘存储控制模块-写入请求处理单元,写入请求数据块。
可选地,所述响应于数据读取请求,从所述内存块缓冲区或所述磁盘中循环读取第二数据,包括:
根据所述数据读取请求,判断是否有待读取的第二数据,若是,则执行下一步骤;
向内存中写入缓存数据;
读取所述缓存数据。
可选地,所述响应于数据读取请求,从所述内存块缓冲区或所述磁盘中循环读取第二数据,还包括:
判断所述数据读取请求是否携带循环标记,若是,则执行下一步骤;
重置缓存数据的文件读取偏移值;
根据重置后的文件读取偏移值,读取新的缓存数据,并修改文件读取偏移值,直至循环读取到所有缓存数据。
本发明实施例的另一方面提供了一种数据缓存装置,包括数据缓存需求设备和高速缓存装置,所述高速缓存装置包括预设空间分配模块、循环写入控制模块、循环读取控制模块和磁盘存储控制模块;
所述预设空间分配模块,用于初始化关键元素,对固定区域磁盘空间的分配;
所述循环写入控制模块,用于判断磁盘缓存空间是否足够、判断是否需要循环写入、调整写入偏移位置以及调用磁盘存储控制模块写入数据;
所述循环读取控制模块,用于读取请求数据块长度、循环读取缓存内容、调整读文件偏移位置以及根据请求数据长度读取数据内容;
所述磁盘存储控制模块,用于根据写入请求对内存二级缓冲区和磁盘写入操作处理、根据读取请求对内存二级缓冲区和磁盘空间读取操作处理,以及将内存二级缓冲区中缓冲数据写入到磁盘空间。
本发明实施例的另一方面提供了一种电子设备,包括处理器以及存储器;
所述存储器用于存储程序;
所述处理器执行所述程序实现如前面所述的方法。
本发明实施例的另一方面提供了一种计算机可读存储介质,所述存储介质存储有程序,所述程序被处理器执行实现如前面所述的方法。
本发明实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机请求,该计算机请求存储在计算机可读存储介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机请求,处理器执行该计算机请求,使得该计算机设备执行前面的方法。
本发明的实施例响应于空间分配请求,对固定区域磁盘空间进行预分配,确定内存块缓冲区;响应于数据写入请求,将第一数据循环写入所述内存块缓冲区或所述磁盘;响应于数据读取请求,从所述内存块缓冲区或所述磁盘中循环读取第二数据。本发明提高了数据缓存的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的装置结构示意图;
图2为本发明实施例提供的预设空间分配的流程示意图;
图3为本发明实施例提供的循环写入控制模块的控制流程图;
图4为本发明实施例提供的循环读取控制模块的控制流程图;
图5为本发明实施例提供的硬盘存储控制模块的原理架构图;
图6为本发明实施例提供的内置存储结构的示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
针对现有技术存在的问题,本发明实施例提供了一种数据缓存方法,包括:
响应于空间分配请求,对固定区域磁盘空间进行预分配,确定内存块缓冲区;
响应于数据写入请求,将第一数据循环写入所述内存块缓冲区或所述磁盘;
响应于数据读取请求,从所述内存块缓冲区或所述磁盘中循环读取第二数据。
可选地,所述响应于空间分配请求,对固定区域磁盘空间进行预分配,确定内存块缓冲区,包括:
输入设置参数路径创建目录和缓存文件;
根据预设值创建预设大小的磁盘文件,作为高速缓存的存储区;
通过open64函数接口创建文件写描述符和读描述符;
创建内存写缓冲区和内存读缓冲区。
可选地,所述创建内存写缓冲区和内存读缓冲区,包括:
调用getpagesize函数获取内存页大小;
通过posix_memalign函数对内存写缓冲区和内存读缓冲区进行对齐;
配置所述内存写缓冲区的文件写偏移位置;
配置所述内存读缓冲区的文件读偏移位置。
可选地,所述响应于数据写入请求,将第一数据循环写入所述内存块缓冲区或所述磁盘,包括:
根据所述数据写入请求,根据所述第一数据构建内置存储结构作为写入请求数据块;
对于同一循环内的数据写入,则判断写入数据块总长度与文件写偏移位置的和是否小于总的存储空间大小,若是,则调用磁盘存储控制模块-写入请求处理单元,写入请求数据块;反之,则调用磁盘存储控制模块-刷写内存缓存处理单元,同步磁盘写入数据。
可选地,所述响应于数据写入请求,将第一数据循环写入所述内存块缓冲区或所述磁盘,还包括:
对于非同一循环内的数据写入,判断写入数据块总长度与文件写偏移位置之和是否小于文件读偏移位置,若是则用磁盘存储控制模块-写入请求处理单元,写入请求数据块。
可选地,所述响应于数据读取请求,从所述内存块缓冲区或所述磁盘中循环读取第二数据,包括:
根据所述数据读取请求,判断是否有待读取的第二数据,若是,则执行下一步骤;
向内存中写入缓存数据;
读取所述缓存数据。
可选地,所述响应于数据读取请求,从所述内存块缓冲区或所述磁盘中循环读取第二数据,还包括:
判断所述数据读取请求是否携带循环标记,若是,则执行下一步骤;
重置缓存数据的文件读取偏移值;
根据重置后的文件读取偏移值,读取新的缓存数据,并修改文件读取偏移值,直至循环读取到所有缓存数据。
本发明实施例的另一方面提供了一种数据缓存装置,包括数据缓存需求设备和高速缓存装置,所述高速缓存装置包括预设空间分配模块、循环写入控制模块、循环读取控制模块和磁盘存储控制模块;
所述预设空间分配模块,用于初始化关键元素,对固定区域磁盘空间的分配;
所述循环写入控制模块,用于判断磁盘缓存空间是否足够、判断是否需要循环写入、调整写入偏移位置以及调用磁盘存储控制模块写入数据;
所述循环读取控制模块,用于读取请求数据块长度、循环读取缓存内容、调整读文件偏移位置以及根据请求数据长度读取数据内容;
所述磁盘存储控制模块,用于根据写入请求对内存二级缓冲区和磁盘写入操作处理、根据读取请求对内存二级缓冲区和磁盘空间读取操作处理,以及将内存二级缓冲区中缓冲数据写入到磁盘空间。
本发明实施例的另一方面提供了一种电子设备,包括处理器以及存储器;
所述存储器用于存储程序;
所述处理器执行所述程序实现如前面所述的方法。
本发明实施例的另一方面提供了一种计算机可读存储介质,所述存储介质存储有程序,所述程序被处理器执行实现如前面所述的方法。
下面结合说明书附图,对本发明的数据缓存方法的具体实现过程进行详细描述:
如图1所示,本发明的装置主要由数据缓存需求设备与高速缓存装置组成。其中高速缓存装置由预设空间分配模块、循环写入控制模块、循环读取控制模块、磁盘存储控制模块组成。
具体地,预设空间分配模块的主要功能是:初始化必要的关键元素,对固定区域磁盘空间的分配。通过创建基于内存页对齐的内存块缓冲区,优化写入、读取的性能。其中,预设空间分配模块的关键元素的一些示例如表1所示:
表1
参照图2,本发明实施例的预设空间分配的过程包括:文件及路径初始化、文件大小初始化、创建读写描述符、创建内存读写缓冲区4个处理过程。
其中,
1、文件及路径初始化:
通过输入设置参数路径创建目录和缓存文件。
2、文件大小初始化:
根据预设值,创建预设大小的磁盘文件,作为高速缓存的存储区。
3、创建读写描述符:
分别通过open64函数接口分别创建文件写描述符和读描述符。
4、创建内存读写缓冲区:
调用getpagesize函数(获取内存页大小),内存页大小的倍数(默认取20倍)通过函数posix_memalign创建对齐的内存写缓冲区和读缓冲区。设置wirte_offset(文件写偏移位置)和read_offset(文件读偏移位置)初始值,初始预设之为0。
循环写入控制模块的主要功能是:判断磁盘缓存空间是否足够、判断是否需要循环写入、调整写入偏移位置、调用磁盘存储控制模块写入数据等。
参考图3,本发明实施例的循环写入控制模块的主要流程包括:
1-1:收到写入请求后,先将数据内容构建内置存储结构作为写入请求数据块。再判断读写是否同一循环。如果是,执行1-3步骤。否则,执行1-2步骤。
1-2:读写不在同一循环,判断存储空间是否足够写入请求的数据块。即写入数据块总长度与wirte_offset(文件写偏移位置)和是否小于read_offset(文件读偏移位置),判断存储空间是否足够。是则执行1-4步骤。否则磁盘缓存的空间不足,结束流程。
1-3:读写在同一循环,判断剩余存储空间是否足够。判断写入数据块总长度与wirte_offset(文件写偏移位置)和是否小于总的存储空间大小。是则有剩余的存储空间,执行1-4步骤。否则需要循环继续写入,执行1-6步骤。
1-4:调用磁盘存储控制模块-写入请求处理单元,写入请求数据块。执行1-5步骤。
1-5:修改wirte_offset(文件写偏移位置)加写入请求数据块总长度,即:wirte_offset=wirte_offset+data_size。通过本步骤,结束流程。
1-6:调用磁盘存储控制模块-刷写内存缓存处理单元,同步磁盘写入数据。将循环标志0xffffffff写入磁盘,修改wirte_offset(文件写偏移位置)在缓冲区开始位置0。执行1-7步骤。
1-7:判断wirte_offset(文件写偏移位置)是否等于read_offset(文件读偏移位置)。是则表示磁盘缓存空间已满,存储空间不足结束流程。否则执行1-4步骤,继续写入。
本发明实施例的循环读取控制模块的主要功能包括:读取请求数据块长度、循环读取缓存内容、调整读文件偏移位置、根据请求数据长度读取数据内容等。
参照图4,本发明实施例的循环读取控制模块的处理流程包括:
2-1:判断read_offset(文件读偏移位置)与wirte_offset(文件写偏移位置)是否相等。是则表示缓存区中没有待读取数据,结束流程。否则执行步骤2-2。
2-2:同步写入数据,调用磁盘存储控制模块刷写内存中写缓冲数据。执行步骤2-3。
2-3:调用磁盘存储控制模块-读取请求处理单元,读取缓存数据。执行步骤2-4。
2-4:判断读取数据长度变量,值是否表示0xffffffff。否则执行步骤2-5。是则代表循环标记,执行步骤2-7。
2-5:调整读文件偏移,修改read_offset(文件读偏移位置)加上数据长度和数据内容即:read_offset+=size_len+buf_size。执行步骤2-6。
2-6:返回请求数据和长度。通过本步骤,结束流程。
2-7:重置read_offset(文件读偏移位置)位置循环指向磁盘缓存区开始位置。执行步骤2-8。
2-8:调用磁盘存储控制模块-读取请求处理单元,读取缓存数据。执行步骤2-6。
本发明实施例的磁盘存储控制模块的主要功能包括:根据写入请求对内存二级缓冲区和磁盘写入操作处理、根据读取请求对内存二级缓冲区和磁盘空间读取操作处理、刷写内存二级缓冲区中写缓冲数据到磁盘空间。
参照图5,本发明实施例的硬盘存储控制模块的原理说明如下:
1、写入请求处理单元:
3-1:请求数据匹配计算:计算写入请求大小与内存写缓冲区剩余空间是否匹配。不匹配则计算其差值并执行3-2,匹配则执行3-3。
3-2:写磁盘空间:写入请求数据大于内存写缓冲区的剩余空间,则先用写入请求的部分数据将剩余写缓冲区空间填满。将内存写缓冲区中数据通过write函数写入磁盘。清空写缓冲区空间,将剩余的写入请求数据执行3-3。
3-3:更新写内存缓冲:满足存入写缓冲的数据,通过内存拷贝方式写进写缓冲区。
2、读取请求处理单元:
3-4:提取数据块长度:计算read_offset(文件读偏移位置)比readBuf_EndOffset(末尾偏移量)值是否小于2(存储结构长度)。是则直接从读内存缓冲区中拷贝存储结构两字节长度内容。否则执行3-6更新读内存缓冲区。再从读内存缓冲区中拷贝存储结构两字节长度内容。如果长度结果是0xffffffff(循环标志位)则直接返回结果。
3-5:提取数据块:以read_offset(文件读偏移位置)值加上2字节(存储结构长度)。判断新的read_offset(文件读偏移位置)与数据长度的和是否小于readBuf_EndOffset(末尾偏移量)值。是则直接从读内存缓冲区中拷贝数据内容。否则3-6更新读内存缓冲区的数据,从读内存缓冲区中拷贝数据内容。
3-6:更新读内存缓冲:从read_offset(文件读偏移位置)作为readBuf_BeginOffset(开始偏移量),读取磁盘数据到内存二级缓冲的读缓冲区中,覆盖原缓冲数据。
3、刷新缓冲区处理单元:
3-7:写缓冲更新磁盘:判断内存写缓冲区是否有数据,有将内存写缓冲区内容写入磁盘缓存。
3-8:重置写内存缓冲:清空内存写缓冲区内容,将内容设置为0。没有则直接退出处理单元。
另外,本发明实施例的读循环和写循环控制模块协作工作原理如下:
1.循环写入控制模块根据写偏移量,顺序的写入预分配的缓存循环存储空间。通过判断读偏移量与循环剩余空间判断是否填满缓存空间。
2.循环读取控制模块,判断已写入的磁盘缓存数据,维护顺序读取的循环偏移量。通过写偏移位置匹配读偏移位置,判断读取完缓存空间内容。
本发明实施例判断读操作和写操作是否属于同一循环的原理为:wirte_offset(文件写偏移位置)大于read_offset(文件读偏移位置)则判断为同一循环。wirte_offset(文件写偏移位置)小于read_offset(文件读偏移位置)则判断为不同一循环。
图6为本发明实施例提供的内置存储结构示意图,如图6所示,1.length区域为存储结构中data长度,固定为2字节(IP包的Payload Length长度为2字节存储)。data区域为缓存数据存储。总的数据块长度代表length长度+data长度。
综上所述,相较于现有技术,本发明具有以下特点:
1、引入磁盘存储控制模块,利用内存作读写二级缓冲区方法。能够减少操作磁盘I/O的频繁度,磁盘读写性能也会相应提高。
2.引入磁盘的读循环和写循环控制模块(读写双循环设计)。通过顺序写入或读取磁盘,缓存区末端写入循环标记。能够提高磁盘空间资源利用率,顺序读写的方式也能够减少磁盘操作资源开销。
本发明的磁盘作为缓存装置时引入磁盘存储控制模块。利用内存作二级缓冲区方法,结合内存和磁盘特性减少对磁盘I/O操作次数,提高磁盘读写效率。现有技术一般通过磁盘缓存直接操作磁盘,没有独立的控制处理单元。读写性能较差,对整机处理性能也有影响。
本发明的磁盘作为缓存装置时引入磁盘的读循环和写循环控制模块。通过顺序写入或读取磁盘,缓存区末端写入循环标记,循环控制磁盘缓存区的读写。能够提高磁盘资源利用率,减少资源开销。一般现有技术先创建并写入缓存数据的磁盘文件,读取完毕后再删除相关缓存文件。新的缓存数据需求即再重新创建删除,增加磁盘操作开销。另外由于频繁创建与删除文件会产生很大量磁盘碎片,长期对磁盘读写性能会随使用时间而变差。因此本发明能够提高磁盘的读写性能。
在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干请求用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行请求的定序列表,可以具体实现在任何计算机可读介质中,以供请求执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从请求执行系统、装置或设备取请求并执行请求的系统)使用,或结合这些请求执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供请求执行系统、装置或设备或结合这些请求执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的请求执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (8)
1.一种数据缓存方法,其特征在于,包括:
响应于空间分配请求,对固定区域磁盘空间进行预分配,确定内存块缓冲区;
响应于数据写入请求,将第一数据循环写入所述内存块缓冲区或所述磁盘;
响应于数据读取请求,从所述内存块缓冲区或所述磁盘中循环读取第二数据;
其中,所述响应于数据写入请求,将第一数据循环写入所述内存块缓冲区或所述磁盘,包括:
根据所述数据写入请求,根据所述第一数据构建内置存储结构作为写入请求数据块;
对于同一循环内的数据写入,判断剩余存储空间是否足够,即判断写入数据块总长度与文件写偏移位置的和是否小于总的存储空间大小;
若是,则调用磁盘存储控制模块-写入请求处理单元,写入请求数据块,以文件写偏移位置与写入请求数据块的总长度之和作为文件写偏移位置,结束写入;
若否,则调用磁盘存储控制模块-刷写内存缓存处理单元,同步磁盘写入数据,将循环标志0xffffffff写入磁盘,修改文件写偏移位置在缓冲区开始位置0,当文件写偏移位置等于读偏移位置时结束写入,当文件写偏移位置不等于读偏移位置时,返回到调用写入请求处理单元的步骤;
对于非同一循环内的数据写入,判断存储空间是否足够写入请求的数据块,即判断写入数据块总长度与文件写偏移位置之和是否小于文件读偏移位置,若是,调用磁盘存储控制模块-写入请求处理单元,写入请求数据块,以文件写偏移位置与写入请求数据块的总长度作为文件写偏移位置,结束写入;若否则结束写入;
其中,当文件写偏移位置大于文件读偏移位置时,读操作和写操作属于同一循环;当文件写偏移位置小于文件读偏移位置时,读操作和写操作属于非同一循环。
2.根据权利要求1所述的一种数据缓存方法,其特征在于,所述响应于空间分配请求,对固定区域磁盘空间进行预分配,确定内存块缓冲区,包括:
输入设置参数路径创建目录和缓存文件;
根据预设值创建预设大小的磁盘文件,作为高速缓存的存储区;
通过open64函数接口创建文件写描述符和读描述符;
创建内存写缓冲区和内存读缓冲区。
3.根据权利要求2所述的一种数据缓存方法,其特征在于,所述创建内存写缓冲区和内存读缓冲区,包括:
调用getpagesize函数获取内存页大小;
通过posix_memalign函数对内存写缓冲区和内存读缓冲区进行对齐;
配置所述内存写缓冲区的文件写偏移位置;
配置所述内存读缓冲区的文件读偏移位置。
4.根据权利要求1所述的一种数据缓存方法,其特征在于,所述响应于数据读取请求,从所述内存块缓冲区或所述磁盘中循环读取第二数据,包括:
根据所述数据读取请求,判断是否有待读取的第二数据,若是,则执行下一步骤;
向内存中写入缓存数据;
读取所述缓存数据。
5.根据权利要求4所述的一种数据缓存方法,其特征在于,所述响应于数据读取请求,从所述内存块缓冲区或所述磁盘中循环读取第二数据,还包括:
判断所述数据读取请求是否携带循环标记,若是,则执行下一步骤;
重置缓存数据的文件读取偏移值;
根据重置后的文件读取偏移值,读取新的缓存数据,并修改文件读取偏移值,直至循环读取到所有缓存数据。
6.一种数据缓存装置,其特征在于,包括数据缓存需求设备和高速缓存装置,所述高速缓存装置包括预设空间分配模块、循环写入控制模块、循环读取控制模块和磁盘存储控制模块;
所述预设空间分配模块,用于初始化关键元素,对固定区域磁盘空间的分配,确定内存块缓冲区;
所述循环写入控制模块,用于判断磁盘缓存空间是否足够、判断是否需要循环写入、调整写入偏移位置以及调用磁盘存储控制模块写入数据;
所述循环读取控制模块,用于读取请求数据块长度、循环读取缓存内容、调整读文件偏移位置以及根据请求数据长度读取数据内容;
所述磁盘存储控制模块,用于根据写入请求对内存二级缓冲区和磁盘写入操作处理、根据读取请求对内存二级缓冲区和磁盘空间读取操作处理,以及将内存二级缓冲区中缓冲数据写入到磁盘空间;
在循环写入控制模块中,响应于数据写入请求,将第一数据循环写入所述内存块缓冲区或所述磁盘具体为:
根据所述数据写入请求,根据所述第一数据构建内置存储结构作为写入请求数据块;
对于同一循环内的数据写入,判断剩余存储空间是否足够,即判断写入数据块总长度与文件写偏移位置的和是否小于总的存储空间大小;
若是,则调用磁盘存储控制模块-写入请求处理单元,写入请求数据块,以文件写偏移位置与写入请求数据块的总长度之和作为文件写偏移位置,结束写入;
若否,则调用磁盘存储控制模块-刷写内存缓存处理单元,同步磁盘写入数据,将循环标志0xffffffff写入磁盘,修改文件写偏移位置在缓冲区开始位置0,当文件写偏移位置等于读偏移位置时结束写入,当文件写偏移位置不等于读偏移位置时,返回调用写入请求处理单元;
对于非同一循环内的数据写入,判断存储空间是否足够写入请求的数据块,即判断写入数据块总长度与文件写偏移位置之和是否小于文件读偏移位置,若是,调用磁盘存储控制模块-写入请求处理单元,写入请求数据块,以文件写偏移位置与写入请求数据块的总长度作为文件写偏移位置,结束写入;若否则结束写入;
其中,当文件写偏移位置大于文件读偏移位置时,读操作和写操作属于同一循环;当文件写偏移位置小于文件读偏移位置时,读操作和写操作属于非同一循环。
7.一种电子设备,其特征在于,包括处理器以及存储器;
所述存储器用于存储程序;
所述处理器执行所述程序实现如权利要求1-5中任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述存储介质存储有程序,所述程序被处理器执行实现如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110410477.7A CN113138945B (zh) | 2021-04-16 | 2021-04-16 | 一种数据缓存方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110410477.7A CN113138945B (zh) | 2021-04-16 | 2021-04-16 | 一种数据缓存方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113138945A CN113138945A (zh) | 2021-07-20 |
CN113138945B true CN113138945B (zh) | 2023-11-21 |
Family
ID=76813102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110410477.7A Active CN113138945B (zh) | 2021-04-16 | 2021-04-16 | 一种数据缓存方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113138945B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778338A (zh) * | 2021-09-13 | 2021-12-10 | 北京东方金信科技股份有限公司 | 分布式存储数据读取效率优化方法、系统、设备和介质 |
CN114363428B (zh) * | 2022-01-06 | 2023-10-17 | 齐鲁空天信息研究院 | 基于socket的数据传递方法 |
CN115390752B (zh) * | 2022-08-10 | 2023-04-18 | 中科豪联(杭州)技术有限公司 | 一种多磁盘的缓存文件管理方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256564A (zh) * | 2007-12-25 | 2008-09-03 | 深圳市同洲电子股份有限公司 | 一种循环文件的操作方法 |
CN101894161A (zh) * | 2010-07-22 | 2010-11-24 | 北京天融信科技有限公司 | 一种用于实时监控的循环事件存取方法和装置 |
CN102169420A (zh) * | 2011-04-18 | 2011-08-31 | 杭州海康威视系统技术有限公司 | 缓冲区循环读写方法及装置 |
CN102541757A (zh) * | 2011-11-30 | 2012-07-04 | 华为技术有限公司 | 写缓存方法、缓存同步方法和装置 |
US8756361B1 (en) * | 2010-10-01 | 2014-06-17 | Western Digital Technologies, Inc. | Disk drive modifying metadata cached in a circular buffer when a write operation is aborted |
CN105511802A (zh) * | 2015-11-24 | 2016-04-20 | 北京达沃时代科技有限公司 | 写缓存的方法和装置以及磁盘缓存区的同步方法和装置 |
CN108491333A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 环形缓冲区的数据写入方法、装置、设备及介质 |
CN112307263A (zh) * | 2020-10-29 | 2021-02-02 | 苏州浪潮智能科技有限公司 | 一种文件存储方法、装置、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111868697A (zh) * | 2017-12-12 | 2020-10-30 | 华为技术有限公司 | 存储级存储系统的磨损均衡方案及其实现方式 |
-
2021
- 2021-04-16 CN CN202110410477.7A patent/CN113138945B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256564A (zh) * | 2007-12-25 | 2008-09-03 | 深圳市同洲电子股份有限公司 | 一种循环文件的操作方法 |
CN101894161A (zh) * | 2010-07-22 | 2010-11-24 | 北京天融信科技有限公司 | 一种用于实时监控的循环事件存取方法和装置 |
US8756361B1 (en) * | 2010-10-01 | 2014-06-17 | Western Digital Technologies, Inc. | Disk drive modifying metadata cached in a circular buffer when a write operation is aborted |
CN102169420A (zh) * | 2011-04-18 | 2011-08-31 | 杭州海康威视系统技术有限公司 | 缓冲区循环读写方法及装置 |
CN102541757A (zh) * | 2011-11-30 | 2012-07-04 | 华为技术有限公司 | 写缓存方法、缓存同步方法和装置 |
CN105511802A (zh) * | 2015-11-24 | 2016-04-20 | 北京达沃时代科技有限公司 | 写缓存的方法和装置以及磁盘缓存区的同步方法和装置 |
CN108491333A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 环形缓冲区的数据写入方法、装置、设备及介质 |
CN112307263A (zh) * | 2020-10-29 | 2021-02-02 | 苏州浪潮智能科技有限公司 | 一种文件存储方法、装置、设备及介质 |
Non-Patent Citations (2)
Title |
---|
一种基于DSP的可循环读写文件系统设计;殷杰波;《单片机与嵌入式系统应用》;第14卷(第11期);21-23+27 * |
基于PCI Express总线的SAR回波数据实时记录系统;周立国 等;《电子器件》(第2期);213-217 * |
Also Published As
Publication number | Publication date |
---|---|
CN113138945A (zh) | 2021-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113138945B (zh) | 一种数据缓存方法、装置、设备及介质 | |
US20220413706A1 (en) | Data Storage Method, Apparatus and Storage System | |
KR100951107B1 (ko) | 최적의 성능을 위한 파일 관리 방법 | |
JP5976608B2 (ja) | メモリデバイス | |
US9727479B1 (en) | Compressing portions of a buffer cache using an LRU queue | |
CN109471843B (zh) | 一种元数据缓存方法、系统及相关装置 | |
CN109558456A (zh) | 一种文件迁移方法、装置、设备及可读存储介质 | |
JP2009003934A (ja) | データ管理システム及びデータ管理方法、並びにデータ管理方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
TW202309741A (zh) | 差分包產生方法,差分包產生設備,更新方法,及嵌入式系統 | |
WO2009150810A1 (ja) | アクセス装置、及び残容量算出方法 | |
KR101046083B1 (ko) | 정보 기록 매체의 데이터 처리 장치 및 데이터 기록 방법 | |
US10719906B2 (en) | Processing system for graphs and operating method thereof | |
JP3543661B2 (ja) | 交換機ファイルシステムにおけるバッファキャッシュ方法および装置 | |
JP5969122B2 (ja) | ホストバスアダプタおよびシステム | |
CN107577775A (zh) | 一种读取数据方法、装置、电子设备及可读存储介质 | |
CN113703873A (zh) | 客户端的冷启动方法、装置、介质、设备和程序产品 | |
KR20060017816A (ko) | 주 메모리와 기억 장치 사이에서 데이터를 전송하는 방법및 장치 | |
JP6812826B2 (ja) | 格納方法、格納装置及び格納プログラム | |
US10949340B2 (en) | Block mapping systems and methods for storage device | |
CN115712500A (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
US11586353B2 (en) | Optimized access to high-speed storage device | |
CN109299021A (zh) | 页迁移方法、装置和中央处理器 | |
JP6243884B2 (ja) | 情報処理装置、プロセッサ、および情報処理方法 | |
CN116301636B (zh) | 一种管理数据结构的方法以及基于哈希算法的硬件加速器 | |
WO2018186455A1 (ja) | 不揮発性メモリにおける空き容量管理方法、及び不揮発性メモリを含む情報記録装置にデータを記録するアクセス装置、情報記録装置および情報記録システム |
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 |