CN107193487B - 一种随机访问识别方法及系统 - Google Patents
一种随机访问识别方法及系统 Download PDFInfo
- Publication number
- CN107193487B CN107193487B CN201710281734.5A CN201710281734A CN107193487B CN 107193487 B CN107193487 B CN 107193487B CN 201710281734 A CN201710281734 A CN 201710281734A CN 107193487 B CN107193487 B CN 107193487B
- Authority
- CN
- China
- Prior art keywords
- request
- file
- randomness
- hdd
- ssd
- 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
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0683—Plurality of storage devices
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种随机访问识别方法,包括:确定N个文件的请求组成的请求集合;第K个文件包括MK个请求,每个请求对应其原始偏移地址信息和请求大小信息;根据第K个文件包括MK个请求中每个请求的原始偏移地址信息和请求大小信息确定第K个文件的随机性TK;根据N个文件中每个文件的随机性,确定请求集合的随机性;根据请求集合的随机性和当前数据流向,确定将请求集合定位到机械硬盘HDD或固态硬盘SSD中的一个。本发明实施例克服了传统方法在客户端以进程为粒度来识别随机访问的缺陷,能够准确识别由多种访问模式导致的随机访问问题。
Description
技术领域
本发明属于高性能计算中的输入/输出(input/output,I/O)子系统领域,更具体地,涉及一种随机访问识别方法及系统。
背景技术
高性能计算(High performance computing,HPC)朝着百亿亿次级发展时,I/O性能仍然是一个主要的瓶颈,尤其是在数据密集型的科学应用中体现得非常明显。当前大多数领域,如气象领域、物理领域、地球科学领域等,这些领域的应用主要包括数据模拟。这种以数据模拟为主的应用通常会阶段性地向并行文件系统输出大量中间结果或者周期性地写检查点文件。这种应用特征会产生大量的写请求,并且这种周期性的写请求会给文件系统带来巨大压力。
与此同时,以机械硬盘(Hard DisK Drive,HDD)为主的存储介质,由于其大容量,低廉的价格以及在访问大块连续数据时较高的带宽等特点,通常被高性能计算机系统作为主要的存储设备。新型的存储设备固态硬盘(Solid State Drives,SSD)由于其几乎为0的访问延迟以及对随机访问不敏感等特性,已经被广泛应用在高性能计算环境当中。但由于计算能力激增而导致的数据量爆发性增长,使用SSD作为主要存储介质依然代价高昂。并且由于SSD的写入次数有限等缺点也使其无法作为稳定的主要存储介质,因此当前的主流做法依然是使用SSD和HDD结合的混合存储方案。
一方面,针对科学应用的I/O瓶颈问题,尤其是写性能瓶颈,一种被称为突发缓冲(Burst Buffer)的混合存储方案被提出。Burst Buffer使用SSD作为HDD的缓冲,来处理突发的写请求,解决中间结果的快速写出问题。在Burst Buffer的设计中,数据首先被写入到快速的设备,如SSD中,并在随后的计算阶段被刷新到慢速的设备,如HDD中。但是BurstBuffer依然存在弊端:不甄别地缓冲所有中间数据,没有充分利用SSD和HDD的各自的优势,在高性能计算应用规模增长,数据量激增的趋势下,缓冲所有数据会导致出现SSD容量不足的情况或者为了能容纳所有的中间数据使用大量的SSD而极大地增加系统建造成本。
另一方面,现有的高性能计算领域随机请求识别方法都是在客户端以进程为粒度进行随机请求识别。这种以进程为粒度的识别方法存在的缺陷是只能从单个进程的视图识别某一个阶段的I/O请求之间的顺序性/随机性。然而随着高性能计算集群的规模以及应用并发规模的增长,很多访问模式都会导致随机访问的发生。例如,当客户端进程的数目远大于数据服务器的数量时,会导致大量进程同时访问一个或者少数几个数据节点的情况,这些进程之间的竞争会导致数据节点的磁头来回移动,依然会导致随机访问的产生。此时从每个进程的视图来看,其所访问的请求依然是连续的,而在数据节点的访问顺序却是随机的,显然以进程为粒度的随机识别方法无法识别这种情况下的随机访问。
同时现有技术并未考虑针对多个文件的请求的处理,不同文件中,请求的原始偏移地址可能是相同的,当不同文件中的请求同时到达数据节点时,若不考虑不同文件的差别,将会造成识别有误。
综上,现有随机访问识别方法以客户端的单个进程为粒度,且并未考虑多个文件的情况,不能准确反映数达到据节点后请求的随机性,以及现有技术不甄别地缓冲所有中间数据,没有充分利用SSD和HDD的各自的优势。
发明内容
针对现有技术的缺陷,本发明的目的在于解决现有技术以客户端的单个进程为粒度,且并未考虑多个文件的情况,不能准确反映数达到据节点后请求的随机性的技术问题。
为实现上述目的,第一方面,本发明提供了一种随机访问识别方法,该方法包括以下步骤:确定N个文件的请求组成的请求集合;第K个文件包括MK个请求,每个请求对应其原始偏移地址信息和请求大小信息;根据第K个文件包括MK个请求中每个请求的原始偏移地址信息和请求大小信息确定第K个文件的随机性TK;根据每个文件的随机性,确定请求集合的随机性;根据请求集合的随机性和当前数据流向,确定将请求集合定位到机械硬盘HDD或固态硬盘SSD中的一个,其中,当前数据流向指的是当前数据正在被写入HDD或SDD中的一个,将请求集合定位到HDD或SDD中的一个,指的是将请求集合中每个请求对应的数据写入HDD或SDD中的一个;其中,N为文件的总数目,N为正整数,K为文件的序号数,1≤K≤N,K为正整数,MK为第K个文件包括的请求数目,MK为正整数。
其中,上述N个文件以及N个文件包括的请求来自至少一个进程,至少一个进程来自至少一个客户端。
本发明实施例通过将来自不同进程的请求组织成请求集合,请求集合中分别对应不同文件的“请求流”,可以判断出单个进程中某一个阶段的I/O请求之间的随机性以及多个进程之间由于竞争引起的随机访问。使用快速设备SSD缓冲随机请求可以使随机请求得到快速处理且有效减少随机访问在HDD中引起的寻道延迟。
本发明实施例克服了传统方法在客户端以进程为粒度来识别随机访问的缺陷,能够准确识别由多种访问模式导致的随机访问问题。
在一个可选的实施例中,根据每个文件的随机性,确定请求集合的随机性,通过以下公式得到:其中,S为请求集合的随机性。
具体地,本发明实施例考虑不同文件,可以综合全面考虑某一个阶段不同进程组成的请求集合的随机性。分别考虑不同文件的随机性以及不同文件组成的请求集合的随机性,提高了请求集合随机性计算的准确性。
在一个可选的实施例中,根据第K个文件包括MK个请求中每个请求的原始偏移地址信息和请求大小信息确定第K个文件的随机性TK,包括:将MK个请求按照原始偏移地址进行从小到大排序;根据每个请求的原始偏移地址信息和请求大小信息确定排序后的MK个请求中相邻两个请求的随机因子;根据排序后的MK个请求中相邻两个请求的随机因子,确定第K个文件的随机性TK。
具体地,通过排序操作可以模拟出完全公平调度器(Completely Fair Queuing,CFQ)调度器的对请求做出的排序优化,筛选出无法被CFQ调度器优化的请求,即真正引起HDD随机访问的请求。
在一个可选的实施例中,根据每个请求的原始偏移地址信息和请求大小信息确定排序后的MK个请求中相邻两个请求的随机因子,包括:若排序后的MK个请求的相邻两个请求中,前一个请求的原始偏移地址与后一个请求的原始偏移地址之差等于前一个请求的请求大小,则将相邻两个请求的随机因子为0,否则为1。
具体地,通过计算随机因子可以模拟出CFQ调度器的对请求做出的合并优化,即如果两个请求的偏移地址是临接的,那两个请求之间的寻道延迟是0,反之如果不临接,磁盘就需要重新寻道,产生寻道延迟。
在一个可选的实施例中,根据排序后的MK个请求中相邻两个请求的随机因子,确定第K个文件的随机性TK,通过以下公式得到:其中,RF为排序后的MK个请求中相邻两个请求的随机因子,Mk-1为MK个请求中相邻请求的总数目,i为Mk-1个相邻请求中每个相邻请求的序号。
具体地,现有技术计算每个请求的随机性,针对每个请求的随机性判断将该请求定位到相应的SSD或HDD,其缺点是由于单个请求在到达具体存储设备之前会经过多层软件栈,其顺序和大小可能因为排序和合并操作而被改变,因此不够准确。本申请对每个文件中的请求组织成相应的“请求流”;计算该请求流的随机性,可以模拟出底层调度器对请求可能做出的排序和合并优化,筛选出真正引起HDD随机访问的请求。另外,由于请求集合中的请求来自于不同的进程,可以识别出由于进程之间竞争引起的随机访问。
其中,每个文件对应的“请求流”组成请求集合。
在一个可选的实施例中,采用自平衡二叉查找树AVL结构管理缓存在SSD中的数据,每个AVL树的节点对应一个请求,每个节点的内容包括:请求的原始偏移地址信息、请求在SSD缓冲区的偏移地址信息以及请求的大小信息,AVL树的节点按照请求的原始偏移地址进行排序。缓冲请求的同时,根据请求所在的文件查找对应的AVL树,插入对应的节点并更新AVL树。刷新数据的过程中,中序遍历对应的AVL树,根据节点对应的请求在SSD缓冲区的偏移地址信息和请求大小信息从SSD中读取相应的数据,根据请求的原始偏移地址信息和请求大小信息将相应的数据写入到HDD。
具体地,通过AVL树维护数据刷新过程中的顺序性和正确性,通过中序遍历AVL树来恢复数据原来的顺序,使数据被顺序回写到HDD中,保证性能的同时避免额外的排序工作。
在一个可选的实施例中,根据请求集合的随机性和当前数据流向,确定将请求集合定位到HDD或SSD中的一个,包括:若当前数据正在被写入HDD中,且请求集合的随机性大于预设第一阈值,则将请求集合定位到SSD中,否则定位到HDD中;若当前数据正在被写入SSD中,且请求集合的随机性小于预设第二阈值,则将请求集合定位到HDD中,否则定位到SSD中;第二阈值小于第一阈值。
具体地,通过第一阈值和第二阈值可以使数据的流向会在某一个状态维持一段时间,从而避免数据流向的频繁变化,保护数据的空间局部性,例如,只有足够的随机数据被缓冲到SSD中时,数据在经过排序后刷新到HDD时的空间局部性和性能才会更好。
在一个可选的实施例中,SSD划分为两个块SSD1、SSD2;若SSD1被写满,则将请求集合定位到SSD2,同时将SSD1的数据刷新到HDD,在SSD1的数据刷新结束之后,新的数据被写入SSD1;若SSD2被写满,则将请求集合定位到SSD1,同时将SSD2的数据刷新到HDD,在SSD2的数据刷新结束之后,新的数据被写入SSD2。
具体地,通过将SSD分块以及流水线式管理缓冲与刷新过程,可以避免在SSD空间占满之后,余下的随机请求无法被缓冲到SSD的情况,即保证系统有空余的SSD空间来缓冲随机请求。上述管理模式也可称为双缓冲流水线模式。
第二方面,本发明提供了一种随机访问识别系统,该系统包括:确定模块,用于确定N个文件的请求组成的请求集合;第K个文件包括MK个请求,每个请求对应其原始偏移地址信息和请求大小信息;随机性计算模块,用于根据第K个文件包括MK个请求中每个请求的原始偏移地址信息和请求大小信息确定第K个文件的随机性TK;随机性计算模块,还用于根据每个文件的随机性,确定请求集合的随机性;定位模块,用于根据请求集合的随机性和当前数据流向,确定将请求集合定位到机械硬盘HDD或固态硬盘SSD中的一个,其中,当前数据流向指的是当前数据正在被写入HDD或SDD中的一个。其中,N为文件的总数目,N为正整数,K为文件的序号数,1≤K≤N,K为正整数,MK为第K个文件包括的请求数目,MK为正整数。
在一个可选的实施例中,随机性计算模块,具体用于将MK个请求按照原始偏移地址进行从小到大排序;根据每个请求的原始偏移地址信息和请求大小信息确定排序后的MK个请求中相邻两个请求的随机因子;根据排序后的MK个请求中相邻两个请求的随机因子,确定第K个文件的随机性TK。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
(1)本发明实施例从I/O节点获取请求组成的请求集合,请求的到达顺序能够更真实地反映出磁盘的I/O情况。不同于在客户端以进程为粒度来识别随机请求,由于数据来源于不同的进程,能够从一个全局的视角反应出高性能计算领域中由多种访问模式导致的随机访问问题,并且该方法可以移植到其他并行文件系统之中,具有很强的通用性。
(2)本发明实施例将不同文件的请求分开,分别考虑不同文件的随机性以及不同文件组成的请求集合的随机性,提高了请求集合随机性计算的准确性。
(3)本发明实施例定向模块中的阈值设定是可配置的参数,可以根据不同的应用在不同实际生产环境中进行调优,具有很强的灵活性。
(4)本发明实施例选择性地缓冲请求对应的随机数据,充分发挥了SSD和HDD各自的优势,节约SSD空间。采用双缓冲流水线模式并行地管理数据缓冲过程和数据刷新过程,能够保证SSD的空间保持在一个可用的范围,即使SSD总容量小于数据总量依然可以缓冲数据,提升系统的性能,降低了系统构建成本。
附图说明
图1为本发明实施例提供的随机访问识别方法流程示意图;
图2为本发明实施例提供的随机性计算方法流程示意图;
图3为本发明实施例N个文件对应的随机访问示意图;
图4为本发明实施例提供的随机访问识别系统结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为本发明实施例提供的随机访问识别方法流程示意图,该方法包括步骤S101至步骤S104。
在步骤S101,确定N个文件的请求组成的请求集合;第K个文件包括MK个请求,每个请求对应其原始偏移地址信息和请求大小信息。
其中,N为文件的总数目,N为正整数,K为文件的序号数,1≤K≤N,K为正整数,MK为第K个文件包括的请求数目,MK为正整数。
其中,可设每个文件的请求组成的相应的“请求流”。
在步骤S102,根据第K个文件包括MK个请求中每个请求的原始偏移地址信息和请求大小信息确定第K个文件的随机性TK。
其中,可设第K个文件的随机性TK为第K个文件中请求组成的“请求流”的随机性。
将MK个请求按照原始偏移地址进行从小到大排序;根据每个请求的原始偏移地址信息和请求大小信息确定排序后的MK个请求中相邻两个请求的随机因子;根据排序后的MK个请求中相邻两个请求的随机因子,确定第K个文件的随机性TK
若排序后的MK个请求的相邻两个请求中,前一个请求的原始偏移地址与后一个请求的原始偏移地址之差等于前一个请求的请求大小,则将相邻两个请求的随机因子为0,否则为1。
具体地,通过排序操作可以模拟出CFQ调度器的对请求做出的排序优化,筛选出无法被CFQ调度器优化的请求,即真正引起HDD随机访问的请求。通过计算随机因子可以模拟出CFQ调度器的对请求做出的合并优化,即如果两个请求的偏移地址是临接的,那两个请求之间的寻道延迟是0,反之如果不临接,磁盘就需要重新寻道,产生寻道延迟。
在一个可选的实施例中,根据排序后的MK个请求中相邻两个请求的随机因子,确定第K个文件的随机性TK,通过以下公式得到:其中,RF为排序后的MK个请求中相邻两个请求的随机因子,Mk-1为MK个请求中相邻请求的总数目,i为Mk-1个相邻请求中每个相邻请求的序号。
在步骤S103,根据每个文件的随机性,确定请求集合的随机性。
其中,S为请求集合的随机性。
由于不同文件包括的请求的原始偏移地址可能相同,若不在请求集合中将不同文件的“请求流”分开考虑随机性,则可能会引起随机性计算的不准确,影响I/O性能。
在步骤S104,根据请求集合的随机性和当前数据流向,确定将请求集合定位到HDD或SSD中的一个,其中,当前数据流向指的是当前数据正在被写入HDD或SDD中的一个,将请求集合定位到HDD或SDD中的一个,指的是将请求集合中每个请求对应的数据写入HDD或SDD中的一个。
本发明实施例通过将来自不同进程的请求组织成请求集合,请求集合中分别对应不同文件的“请求流”,可以判断出单个进程中某一个阶段的I/O请求之间的随机性以及多个进程之间由于竞争引起的随机访问。使用快速设备SSD缓冲随机请求可以使随机请求得到快速处理且有效减少随机访问在HDD中引起的寻道延迟。
本发明实施例克服了传统方法在客户端以进程为粒度来识别随机访问的缺陷,能够准确识别由多种访问模式导致的随机访问问题。
相应地,图2为本发明实施例提供的随机性计算方法流程示意图。如图2所示,包括步骤S201至步骤S202。
其中,图2以单个文件的请求组成的“请求流”为例,进行说明。
在步骤S201,在数据节点进行同一文件请求的元数据收集与组织,请求的元数据收集包括记录请求的原始偏移地址和请求大小。请求的组织过程是将请求的元数据按照其到达数据节点的顺序以固定长度组织成一个单位,每个单位称之为“请求流”。
需要注意的是该“请求流”只包含请求的元数据信息,而不包含请求对应的实际数据。“请求流”的长度默认为128,与Linux内核的CFQ的默认队列长度保持一致,用户可根据CFQ队列的长度来灵活调整“请求流”的长度。
在步骤S202,根据步骤S201中收集的元数据和组织的“请求流”,将“请求流”按照请求的原始偏移地址进行从小到大重新排序。
在步骤S203,根据步骤S202中得到的重新排序后的“请求流”,计算该“请求流”的“随机因子”。
再步骤S204,根据步骤S203中得到的根据“随机因子”的比例对该“请求流”的随机性进行评估。
其中,“随机因子”的计算方法为:对每一个有序的“请求流”,若“请求流”中相邻两个请求的偏移地址之差等于请求大小,将该相邻两个请求的“随机因子”赋值为0;不相等时,将该相邻两个请求的“随机因子”赋值为1。
本发明实施例在数据节点进行随机性评估,突破了传统方法从客户端识别随机请求的局限性,无论是应用本身的访问具有随机性还是由于多进程竞争磁头导致的随机访问,都能够从一个全局的视角识别出来。因此本发明实施例是一种能够应对由多种访问模式导致的随机访问问题的方法。
在一个可选的实施例中,可采用自平衡二叉查找树AVL结构管理缓存在SSD中的数据。
其中,将请求对应的随机数据缓冲在SSD中时,写在SSD中的缓存文件,对应该请求在SSD缓冲区的偏移地址。
具体地,每个AVL树的节点对应一个请求,每个节点的内容包括:请求的原始偏移地址信息、请求在SSD缓冲区的偏移地址信息以及请求的大小信息,AVL树的节点按照请求的原始偏移地址进行排序。缓冲请求的同时,根据请求所在的文件查找对应的AVL树,插入对应的节点并更新AVL树。刷新数据的过程中,中序遍历对应的AVL树,根据节点对应的请求在SSD缓冲区的偏移地址信息和请求大小信息从SSD中读取相应的数据,根据请求的原始偏移地址信息和请求大小信息将相应的数据写入到HDD。
具体地,通过AVL树维护数据刷新过程中的顺序性和正确性,通过中序遍历AVL树来恢复数据原来的顺序,使数据被顺序回写到HDD中,保证性能的同时避免额外的排序工作。
在一个可选的实施例中,根据请求集合的随机性和当前数据流向,确定将请求集合定位到HDD或SSD中的一个,包括:若当前数据正在被写入HDD中,且请求集合的随机性大于预设第一阈值,则将请求集合定位到SSD中,否则定位到HDD中;若当前数据正在被写入SSD中,且请求集合的随机性小于预设第二阈值,则将请求集合定位到HDD中,否则定位到SSD中;第二阈值小于第一阈值。
具体地,系统在最开始执行的阶段,第一个“请求流”被定向到HDD中。若当前数据正在被写入HDD中,且此时“请求流”的随机性大于预设第一阈值时,则认为“请求流”随机性强,并将接下来的“请求流”定位到SSD中,否则“请求流”的流向不改变,即定位到HDD。若当前数据正在被写入SSD中,且此时“请求流”的随机性小于预设第二阈值时,则认为“请求流”随机性弱,并将接下来的“请求流”定位到HDD中,否则“请求流”的流向不改变,即定位到SSD。上述管理模式也可称为双缓冲流水线模式。
具体地,通过第一阈值和第二阈值可以使数据的流向会在某一个状态维持一段时间,从而避免数据流向的频繁变化,保护数据的空间局部性,例如,只有足够的随机数据被缓冲到SSD中时,数据在经过排序后刷新到HDD时的空间局部性和性能才会更好。
其中,第二阈值小于第一阈值,这两个阈值是可配置的参数,可以根据不同的应用以及不同软硬件环境进行调优以达到最佳效果。例如,第一阈值为35%,第二阈值为20%。
本发明实施例区分请求流的随机性与顺序性,充分地发挥了SSD和HDD各自的优势。
在一个可选的实施例中,SSD划分为两个块SSD1、SSD2;若SSD1被写满,则将请求集合定位到SSD2,同时将SSD1的数据刷新到HDD,在SSD1的数据刷新结束之后,新的数据被写入SSD1;若SSD2被写满,则将请求集合定位到SSD1,同时将SSD2的数据刷新到HDD,在SSD2的数据刷新结束之后,新的数据被写入SSD2。
本发明实施例通过选择性地缓存数据,并且通过准确识别由多种访问模式导致的随机访问,充分发挥SSD和HDD各自的优势,利用有限的SSD资源提升系统写性能。采用双缓冲流水线模式并行地管理数据缓冲过程和数据刷新过程,能够保证SSD的空间保持在一个可用的范围,即使SSD总容量小于数据总量依然可以缓冲数据,提升系统的性能,降低了系统构建成本。
相应地,图3为本发明实施例提供的N个文件对应的随机访问示意图。如图3所示,I/O节点接收多个文件发送的请求,例如图3中的文件1…文件K等。每个文件可包括多个进程,例如文件1包括进程1和进程2。每个进程可包括多个请求,例如文件1中进程1包括原始偏移地址为1的请求#1和原始偏移地址为2的请求#2,进程1的请求顺序是{#1,#2,…},进程2的请求顺序是{#33,#64,…}。文件K中进程K包括原始偏移地址为1的请求#1和原始偏移地址为2的请求#2等。由图3的示例可知,不同文件中,请求的原始偏移地址可能是相同的。
在I/O节点处,请求到达的顺序不同,如图3所示的,I/O节点处,按照请求到达的时间顺序,请求集合为:#1(文件1)、#33(文件1)、#1(文件K)、#2(文件K)、#64(文件1)、#2(文件1)、#31(文件K)、#16(文件K)…,可知,不同文件中的请求的到达顺序存在竞争关系,且相同文件的不同进程或同一进程下的请求的到达顺序也存在竞争关系。
其中,请求集合包括的请求的长度,可以根据CFQ队列的长度来灵活调整。
对I/O节点处请求集合计算随机性前,需要先将请求到达的顺序按文件和原始偏移地址的大小进行重新排序。如图3所示,文件1对应的请求流为:#1、#2、#33、#64…,其中,请求#2和#33之间的间隔为偏移地址间隔。假设请求#2和#33之间不存在其他请求时,则请求#2和#33之间的随机因子通过将#2和#33之间的偏移地址间隔与#2的请求长度做比较得到。具体可参见图2所示的方法记载,例如:文件1中,请求#1与请求#2之间的偏移地址恰好等于请求大小,因此“随机因子”为0,请求#2与请求#33之间的“随机因子”为1。
图4为本发明实施例提供的一种随机访问识别系统结构示意图,如图4所示,进程1、进程2、进程3…对应的I/O请求并发地访问I/O节点,其中,进程1、进程2、进程3…可来自N个文件,以及每个进程可包括多个请求。
在图4中,I/O节点处可包括确定模块、随机性计算模块以及定向模块等。确定模块,用于确定N个文件的请求组成的请求集合;第K个文件包括MK个请求,每个请求对应其原始偏移地址信息和请求大小信息;其中,N为文件的总数目,N为正整数,K为文件的序号数,1≤K≤N,K为正整数,MK为第K个文件包括的请求数目,MK为正整数。
随机性计算模块,用于根据第K个文件包括MK个请求中每个请求的原始偏移地址信息和请求大小信息确定第K个文件的随机性TK。随机性计算模块,还用于根据每个文件的随机性,确定请求集合的随机性。
定位模块,用于根据请求集合的随机性和当前数据流向,确定将请求集合定位到机械硬盘HDD或固态硬盘SSD中的一个,其中,当前数据流向指的是当前数据正在被写入HDD或SDD中的一个。
如图4所示,若当前数据正在被写入SSD中,且此时请求集合的随机性小于第二阈值时,则认为请求集合随机性弱,为顺序数据,将该请求集合定位到HDD中,否则定位到SSD。
若当前数据正在被写入HDD中,且此时请求集合的随机性大于第一阈值时,则认为请求集合随机性强,为随机数据,将该请求集合定位到SSD中,否则定位到HDD。
在一个可选的示例中,随机性计算模块,具体用于将MK个请求按照原始偏移地址进行从小到大排序;根据每个请求的原始偏移地址信息和请求大小信息确定排序后的MK个请求中相邻两个请求的随机因子;根据排序后的MK个请求中相邻两个请求的随机因子,确定第K个文件的随机性TK。
另外,当将SSD划分为两个块SSD1、SSD2;I/O节点处对应的SSD管理处包括双缓冲流水线模块和缓存数据管理模块。
双缓冲流水线模块用于并行处理数据缓冲阶段和刷新阶段,并管理一个流水线队列,维护SSD的缓存空间。缓存数据管理模块用于管理缓存在SSD中的数据,并维护数据刷新过程中的顺序性和正确性。
另外,上述各个模块的功能及方法步骤可参见上述图1至图3中的描述,在此不做赘述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种随机访问识别方法,其特征在于,包括下述步骤:
确定N个文件的请求组成的请求集合;第K个文件包括MK个请求,每个请求对应其原始偏移地址信息和请求大小信息;
根据第K个文件包括MK个请求中每个请求的原始偏移地址信息和请求大小信息确定第K个文件的随机性TK;包括:将所述MK个请求按照原始偏移地址进行从小到大排序;根据每个请求的原始偏移地址信息和请求大小信息确定排序后的MK个请求中相邻两个请求的随机因子;根据所述排序后的MK个请求中相邻两个请求的随机因子,确定所述第K个文件的随机性TK;
若排序后的MK个请求的相邻两个请求中,前一个请求的原始偏移地址与后一个请求的原始偏移地址之差等于前一个请求的请求大小,则将所述相邻两个请求的随机因子为0,否则为1;
所述根据所述排序后的MK个请求中相邻两个请求的随机因子,确定所述第K个文件的随机性TK,通过以下公式得到:其中,RF为排序后的MK个请求中相邻两个请求的随机因子,MK个请求中相邻请求的总数目为Mk-1,i为Mk-1个相邻请求中每个相邻请求的序号;
根据所述N个文件中每个文件的随机性,确定所述请求集合的随机性;其中,S为请求集合的随机性;
根据所述请求集合的随机性和当前数据流向,确定将所述请求集合定位到机械硬盘HDD或固态硬盘SSD中的一个,其中,所述当前数据流向指的是当前数据正在被写入HDD或SDD中的一个,所述将所述请求集合定位到HDD或SDD中的一个,指的是将所述请求集合中每个请求对应的数据写入HDD或SDD中的一个;
其中,N为文件的总数目,N为正整数,K为文件的序号数,1≤K≤N,K为正整数,MK为第K个文件包括的请求数目,MK为大于1的正整数。
2.根据权利要求1所述的随机访问识别方法,其特征在于,采用自平衡二叉查找树AVL结构管理缓存在SSD中的数据,每个AVL树的节点对应一个请求,每个节点的内容包括:请求的原始偏移地址信息、请求在SSD缓冲区的偏移地址信息以及请求的大小信息,所述AVL树的节点按照请求的原始偏移地址进行排序;
缓冲请求的同时,根据请求所在的文件查找对应的AVL树,插入对应的节点并更新AVL树;刷新数据的过程中,中序遍历对应的AVL树,根据节点对应的请求在SSD缓冲区的偏移地址信息和请求大小信息从SSD中读取相应的数据,根据请求的原始偏移地址信息和请求大小信息将相应的数据写入到HDD。
3.根据权利要求1所述的随机访问识别方法,其特征在于,所述根据所述请求集合的随机性和当前数据流向,确定将所述请求集合定位到HDD或SSD中的一个,包括:
若当前数据正在被写入HDD中,且所述请求集合的随机性大于预设第一阈值,则将所述请求集合定位到SSD中,否则定位到HDD中;
若当前数据正在被写入SSD中,且所述请求集合的随机性小于预设第二阈值,则将所述请求集合定位到HDD中,否则定位到SSD中;
所述第二阈值小于所述第一阈值。
4.根据权利要求1所述的随机访问识别方法,其特征在于,所述SSD划分为两个块SSD1、SSD2;
若SSD1被写满,则将所述请求集合定位到SSD2,同时将SSD1的数据刷新到HDD,在SSD1的数据刷新结束之后,新的数据被写入SSD1;
若SSD2被写满,则将所述请求集合定位到SSD1,同时将SSD2的数据刷新到HDD,在SSD2的数据刷新结束之后,新的数据被写入SSD2。
5.一种随机访问识别系统,其特征在于,包括:
确定模块,用于确定N个文件的请求组成的请求集合;第K个文件包括MK个请求,每个请求对应其原始偏移地址信息和请求大小信息;
随机性计算模块,用于根据第K个文件包括MK个请求中每个请求的原始偏移地址信息和请求大小信息确定第K个文件的随机性TK;将所述MK个请求按照原始偏移地址进行从小到大排序;根据每个请求的原始偏移地址信息和请求大小信息确定排序后的MK个请求中相邻两个请求的随机因子;根据所述排序后的MK个请求中相邻两个请求的随机因子,确定所述第K个文件的随机性TK;若排序后的MK个请求的相邻两个请求中,前一个请求的原始偏移地址与后一个请求的原始偏移地址之差等于前一个请求的请求大小,则将所述相邻两个请求的随机因子为0,否则为1;所述根据所述排序后的MK个请求中相邻两个请求的随机因子,确定所述第K个文件的随机性TK,通过以下公式得到:其中,RF为排序后的MK个请求中相邻两个请求的随机因子,MK个请求中相邻请求的总数目为Mk-1,i为Mk-1个相邻请求中每个相邻请求的序号;
所述随机性计算模块,还用于根据每个文件的随机性,确定所述请求集合的随机性;其中,S为请求集合的随机性;
定位模块,用于根据所述请求集合的随机性和当前数据流向,确定将所述请求集合定位到机械硬盘HDD或固态硬盘SSD中的一个,其中,所述当前数据流向指的是当前数据正在被写入HDD或SDD中的一个;
其中,N为文件的总数目,N为正整数,K为文件的序号数,1≤K≤N,K为正整数,MK为第K个文件包括的请求数目,MK为大于1的正整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710281734.5A CN107193487B (zh) | 2017-04-26 | 2017-04-26 | 一种随机访问识别方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710281734.5A CN107193487B (zh) | 2017-04-26 | 2017-04-26 | 一种随机访问识别方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107193487A CN107193487A (zh) | 2017-09-22 |
CN107193487B true CN107193487B (zh) | 2019-11-12 |
Family
ID=59873350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710281734.5A Active CN107193487B (zh) | 2017-04-26 | 2017-04-26 | 一种随机访问识别方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107193487B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209350B (zh) * | 2019-05-10 | 2020-07-10 | 华中科技大学 | 一种混合存储架构hpc系统中应用i/o请求的动态调度方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102364474A (zh) * | 2011-11-17 | 2012-02-29 | 中国科学院计算技术研究所 | 用于机群文件系统的元数据存储系统和管理方法 |
CN104813286A (zh) * | 2012-12-20 | 2015-07-29 | 英特尔公司 | 用于代码区的连续自动调整的方法、装置、系统 |
CN105224240A (zh) * | 2014-05-30 | 2016-01-06 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法、装置及存储设备 |
-
2017
- 2017-04-26 CN CN201710281734.5A patent/CN107193487B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102364474A (zh) * | 2011-11-17 | 2012-02-29 | 中国科学院计算技术研究所 | 用于机群文件系统的元数据存储系统和管理方法 |
CN104813286A (zh) * | 2012-12-20 | 2015-07-29 | 英特尔公司 | 用于代码区的连续自动调整的方法、装置、系统 |
CN105224240A (zh) * | 2014-05-30 | 2016-01-06 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法、装置及存储设备 |
Non-Patent Citations (1)
Title |
---|
《SSDUP: An Efficient SSD Write Buffer Using Pipeline》;Ming Li等;《2016 IEEE International Conference on Cluster Computing》;20161208;第166-167页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107193487A (zh) | 2017-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086523B2 (en) | Automatic tiering of storage using dynamic grouping | |
CN103186350B (zh) | 混合存储系统及热点数据块的迁移方法 | |
Levandoski et al. | Identifying hot and cold data in main-memory databases | |
US9959054B1 (en) | Log cleaning and tiering in a log-based data storage system | |
CN104115133B (zh) | 用于复合非易失性存储设备的数据迁移的方法、系统和设备 | |
US8595463B2 (en) | Memory architecture with policy based data storage | |
CN105302744B (zh) | 高速缓存器的无效数据区 | |
US20150088805A1 (en) | Automatic caching of scan and random access data in computing systems | |
US7281105B1 (en) | Method and apparatus for selecting data storage devices for participating in logical volume exchange process based on aggregated workload statistics | |
CN106933511B (zh) | 考虑负载均衡与磁盘效率的空间数据存储组织方法及系统 | |
WO2012169102A1 (ja) | データベース性能予測装置及びデータベース予測方法 | |
US20100293156A1 (en) | Database processing method and database processing system | |
CN109710184A (zh) | 瓦记录磁盘感知的分层式混合存储方法及系统 | |
CN110297787A (zh) | I/o设备访问内存的方法、装置及设备 | |
US8683120B2 (en) | Method and apparatus to allocate area to virtual volume | |
Bhimani et al. | FIOS: Feature based I/O stream identification for improving endurance of multi-stream SSDs | |
Ghodsnia et al. | Parallel I/O aware query optimization | |
US11995057B2 (en) | Efficient database management system and method for use therewith | |
Fevgas et al. | LB-Grid: An SSD efficient grid file | |
CN107193487B (zh) | 一种随机访问识别方法及系统 | |
JP6394231B2 (ja) | データ配置制御プログラム、データ配置制御装置およびデータ配置制御方法 | |
US10339052B2 (en) | Massive access request for out-of-core textures by a parallel processor with limited memory | |
Wu et al. | A data management method for databases using hybrid storage systems | |
Lv et al. | Zonedstore: A concurrent zns-aware cache system for cloud data storage | |
Paulson et al. | Page Replacement Algorithms–Challenges and Trends |
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 |