CN100428209C - 一种自适应的外部存储设备io性能优化方法 - Google Patents

一种自适应的外部存储设备io性能优化方法 Download PDF

Info

Publication number
CN100428209C
CN100428209C CNB2006101655881A CN200610165588A CN100428209C CN 100428209 C CN100428209 C CN 100428209C CN B2006101655881 A CNB2006101655881 A CN B2006101655881A CN 200610165588 A CN200610165588 A CN 200610165588A CN 100428209 C CN100428209 C CN 100428209C
Authority
CN
China
Prior art keywords
request
driver
read
reference address
data
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
CNB2006101655881A
Other languages
English (en)
Other versions
CN101000589A (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.)
Easyway Co ltd
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CNB2006101655881A priority Critical patent/CN100428209C/zh
Publication of CN101000589A publication Critical patent/CN101000589A/zh
Application granted granted Critical
Publication of CN100428209C publication Critical patent/CN100428209C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种自适应的外部存储设备IO性能优化方法,其特征在于以下步骤:给到达外部存储设备驱动程序的IO请求分配优先级并将其插入IO请求处理队列;使用IO访问地址增量统计方法获得IO访问地址增量的统计数据并预处理;使用该统计数据计算预读数据的访问地址;计算预读数据量大小,从预读数据的访问地址开始从外部存储设备读取预读数据量的大小的数据到数据缓存。本发明既优化了外部存储设备驱动程序对IO请求的响应顺序,又能够根据IO负载的具体特征动态地调整IO性能的优化策略,因而既能显著的减小IO请求的平均响应时间,又具有很好的自适应性和通用性。

Description

一种自适应的外部存储设备IO性能优化方法
技术领域
本发明属于计算机系统性能优化领域,具体属于数据存储子系统性能优化领域,特别是针对一种自适应的数据存储设备IO性能优化方法。
背景技术
随着计算机科学技术的迅速发展,计算机系统在社会生产和社会生活的各个领域都得到了日益广泛的应用,计算机系统的应用已经对社会生产力的提高和人民生活质量的提高起了不可替代的重要作用。目前和人们的生产生活密切相关的典型的计算机系统有数据库系统、文件服务器系统和web服务器系统等。这些计算机系统服务质量的高低与它们的性能高低直接相关,高性能的计算机系统将带来高质量的服务,反之亦然。所以要进一步发挥计算机系统在社会生产和社会生活中的重要作用,就需要不断的改进计算机系统的性能。
计算机系统的性能主要由处理子系统的性能和IO子系统的性能两部分决定。处理子系统就是中央处理单元(CPU),CPU发展迅速,其处理速度始终保持着高速增长,因而能够满足不断提高的应用需求。按照位于计算机系统的位置不同,IO子系统划分为系统内部IO子系统和外部存储系统。系统内部IO子系统包括实现系统互连的系统总线、各级缓存、计算机内部存储设备(简称内存或者主存)和IO总线等,系统内部的IO子系统在不断的更新换代中保持了IO速度的高增长,能够满足不断提升的计算机系统应用需求。外部存储系统包括外部存储设备、外部存储设备适配器(也称为存储卡,例如SCSI卡和主机总线适配器)和相关互连网络等,外部存储系统虽然也在不断的更新换代,但是它的性能,尤其是IO请求的响应时间的改进比较缓慢,在过去的20年,CPU的处理速度提升了成千上万倍,而外部存储系统的IO请求的处理速度只提高了约10倍,外部存储系统的IO性能(注意:外部存储系统的IO性能通常也被称为外部存储设备的IO性能,所以在本发明的描述过程中这两种称谓是指同一个事物,在背景技术中采用前一种称谓,在其他部分采用更加通俗和常用的第二种称谓。)已经不能满足日益提高的应用需求,并且成为进一步提升计算机系统整体性能的瓶颈,外部存储系统的IO性能能否有大的改进对于计算机系统在社会生产和社会生活中的进一步推广应用至关重要。为此,众多科学技术人员进行了外部存储系统的IO性能优化方面的研究,提出了一些有成效的优化方法。
然而现有的外部存储系统的IO性能优化方法主要存在两方面的不足:
第一点:先到先处理的原则导致较长的IO请求的平均响应时间。外部存储系统对IO请求的响应采用先到先处理的原则,只要IO请求是前一个到达的就会被优先处理,而没有考虑该请求的具体情况。如果IO请求的数量比较大,在IO请求队列中等待多个请求需要处理时,这种先到先处理的原则很可能带来比较大的平均响应时间。例如,当前IO请求队列中有按照先到先处理的原则进行排队的10个IO请求,第1个请求的数据量是1GB,而后面9个请求的尺寸都小于1MB,此时第1个请求先处理,因为它的数据量大,所以响应时间会很长,而其余9个请求虽然已经从上层的应用系统发出并且进入处理队列,但是需要在队列中等待很长的时间才能得到处理,IO请求的响应时间等于请求等待时间和请求处理时间,虽然后续9个IO请求的请求处理时间由于数据量小而比较小,但是等待时间很长导致了响应时间很长。在这种情况下,所有的10个IO请求的响应时间都很长,带来的结果就是外部存储系统整体的IO响应速度慢,每个IO请求的平均响应时间长,IO性能低下。
第二点:目前的IO性能的优化方法缺乏通用性和自适应性。目前的IO性能优化的思路是在设备驱动层或存储设备硬件层为某一类应用系统量身定做一个固定的优化方法,这种固定的优化方法只适应于该应用系统的IO负载,如果上层应用系统改变了,那上层应用系统带来的IO负载的特征也就会改变,而原有的设备驱动层和存储设备硬件层不会改变,此时原有的优化方法就无法适应新的应用和新的IO负载。在这种情况下,原有的优化方法不仅不能发挥IO性能优化的作用,往往还会成为外部存储系统IO性能得以发挥的障碍,甚至严重的限制了计算机系统对外部存储设备的IO性能。例如,如果计算机系统上的原有应用系统是视频服务器,那么IO负载的主要特征是数据的顺序读,针对这个特征设备驱动采用了顺序预读策略,即按存储地址顺序递增提前读取外部存储设备上的数据以备后来使用,这个优化方法对于视频服务器而言是恰如其分,但是如果上层应用系统变为web服务器,其负载的主要特征是随机的小量读取,此时,没有发生变化的设备驱动中的顺序预读策略和这种负载特征不匹配,不能实现IO性能优化的作用,反而这种优化策略的实现需要的处理器开销和IO子系统的开销降低了计算机系统的整体性能。
根据以上描述的现有的外部存储系统的IO性能优化方法的不足,新的外部存储系统的IO性能优化方法需要克服简单的先到先处理的IO请求调度策略的缺点,同时能够对多种不同负载应具有自适应性,能够根据负载特征的变化动态的调整优化策略,使得优化方法具有广泛的通用性。本发明所提出的方法能够很好地满足上述要求。
发明内容
本发明为了提高计算机系统中应用程序发出的IO请求的平均响应速度,提出了一种自适应的外部存储设备IO性能优化方法。这种方法优化了外部存储设备驱动程序对IO请求的响应顺序,并根据负载特征的变化动态地调整IO性能的优化策略,因而既能够显著的降低IO请求的平均响应时间,又具有很好的自适应性和通用性。
图1是本发明所述计算机系统的结构示意图,即本发明所述方法实现于如图1所示的计算机系统中,更加具体地说,本发明所述方法实现于如图1所示的操作系统内的外部存储设备驱动程序中。如图1所示,计算机系统的结构包括三层:应用程序层、操作系统层和硬件层。最上层的应用程序层由若干种应用程序构成,直接面向计算机用户提供服务,在图1中只是示意性的给出应用程序的例子,本发明的适用范围不受此限制;中间的操作系统层负责管理和维护底层硬件,并为上层应用程序提供运行环境,操作系统层包括很多复杂的组成部分,图1中只是示意性的给出和本发明有关的系统调用模块和外部存储设备驱动程序(外部存储设备驱动程序简称驱动程序),其他组成部分省略;底层的硬件层由多种计算机硬件电路和外部硬件设备构成,是计算机上层应用程序的发出的操作最终实现的层次,硬件层包括很多复杂的硬件组成部分,图1中只是示意性的给出和本发明有关的外部存储设备控制器和外部存储设备,其他组成部分省略。
图2是本发明所述计算机系统处理IO请求的一般流程的示意图。如图2所示,IO请求处理流程包括三个步骤:第一步,应用程序层的某个应用程序通过系统调用向外部存储设备驱动程序发出IO请求;第二步,IO请求到达驱动程序,驱动程序按照一定规则将到达的IO请求插入IO请求处理队列;第三步,驱动程序按照一定规则从IO请求处理队列中取出下一个处理的IO请求,根据该请求是读请求还是写请求以及其他相关信息,完成该IO请求所需的操作。至此,IO请求处理流程结束。
本发明提出了一种自适应的外部存储设备IO性能优化方法,这是实现于外部存储设备驱动程序内部的一种优化方法。本发明所述方法由外部存储设备驱动程序内部执行的两个优化策略构成,这两个优化策略是IO请求处理队列的优化排队策略和负载自适应预读策略。IO请求处理队列的优化排队策略适用于所有IO请求,每当外部存储设备驱动程序接收到一个IO请求后都会执行一次这个策略,因而可以表述为到达驱动程序的一个IO请求触发IO请求处理队列的优化排队策略的一次执行;负载自适应预读策略只适用于IO读请求,每当外部存储设备驱动程序处理一个IO读请求时,如果该IO请求的处理需要驱动程序向外部存储设备控制器发送若干条IO读命令来获取数据,则驱动程序在发送完最后一条IO读命令后会执行一次这个策略,因而可以表述为某一条IO读命令触发下一次负载自适应预读策略的一次执行。
图3是应用了本发明所述方法之前,外部存储设备驱动程序处理一个IO请求的流程示意图。如图3所示,第一步,IO请求到达驱动程序;第二步,驱动程序按照先入先出的原则将IO请求插到IO请求处理队列尾部;第三步,驱动程序取出IO请求处理队列排头的请求;第四步,驱动程序判断该请求是读请求还是写请求,如果是读请求转入第五步,否则转入第八步;第五步,驱动程序判断该读请求所需数据是否已经在驱动程序维护的数据缓存中,如果是转入第六步,否则转入第七步;第六步,驱动程序将所需数据从数据缓存返回给发出该IO读请求的应用程序;第七步,驱动程序向外部存储设备控制程序发送IO读命令,将所需数据读入数据缓存,再将所需数据从数据缓存返回给发出该IO读请求的应用程序;第八步,如果写请求是同步写请求,就将数据直接写入外部存储设备,如果是异步写请求,先将数据写入驱动程序维护的数据缓存中,等系统空闲时再写入外部存储设备。至此,应用了本发明所述方法之前,外部存储设备驱动程序处理一个IO请求的流程结束。
图4是应用了本发明所述方法后,外部存储设备驱动程序处理IO请求的示意图。如图4所示,第一步,IO请求到达驱动程序;第二步,驱动程序执行IO请求处理队列的优化排队策略;第三步,驱动程序取出优先级最高IO请求进行处理,如果优先级最高的IO请求有多个,任取其中一个;第四步,驱动程序判断该请求是读请求还是写请求,如果是读请求转入第五步,否则转入第八步;第五步,驱动程序判断该读请求所需数据是否已经在驱动程序维护的数据缓存中,如果是,转入第六步,否则转入第七步;第六步,驱动程序将所需数据从数据缓存返回给发出该IO读请求的应用程序;第七步,驱动程序向外部存储设备控制器发送若干个IO读命令将所需数据读入数据缓存,然后将这些数据从数据缓存返回给发出该IO读请求的应用程序,最后发送的一条IO读命令触发一次负载自适应预读策略的执行。至此应用了本发明所述方法后,外部存储设备驱动程序处理一次IO请求的流程结束。
本发明所述方法的IO请求处理队列的优化排队策略包含一个步骤,本发明所述方法的负载自适应预读策略包括四个步骤,所以本发明所述方法共有五个步骤。为了以下表述的方便,将IO请求处理队列的优化排队策略包含的一个步骤称为本发明所述方法的第一步,将负载自适应预读策略包括的四个步骤称为本发明所述方法的第二步到第五步。本发明所述方法的五个步骤是外部存储设备驱动程序在处理IO请求过程中采用的优化处理流程,是IO请求处理队列的优化排队策略和负载自适应预读策略的具体执行过程。
本发明所述方法的五个步骤,包括:
第一步:当IO处理队列的优化排队策略被触发时执行本步骤。依据基于时间分片的优先级策略为到达驱动程序的IO请求设定优先级,将设定优先级的IO请求插入到驱动程序的IO请求处理队列。至此,IO请求处理队列的优化排队策略执行完毕。
第二步:当负载自适应预读策略被触发时执行本步骤。使用IO访问地址增量统计方法获得IO访问地址增量的统计数据。转入第三步:
第三步:对IO访问地址增量的统计数据进行预处理,得到合理的IO访问地址增量的统计数据。转入第四步:
第四步:使用合理的IO访问地址增量的统计数据计算预读数据地址与当前IO访问地址之间的增量,最终得到预读数据的访问地址。转入第五步:
第五步:计算预读数据量的大小,并从上一步得到的预读数据的访问地址开始从外部存储设备读取预读数据量的大小的数据到数据缓存。至此,负载自适应预读策略的一次执行完毕。
所述的基于时间分片的优先级策略既要为了降低IO请求的平均响应时间,将实际处理时间较长的IO请求设置为较低的优先级,将实际处理时间较短的IO请求设置为较高的优先级,又要防止先到达的实际处理时间较长的IO请求被后到达实际处理时间较短的IO请求一味的推后处理,甚至到无限期延期的地步。针对以上要求,基于时间分片的优先级策略包括以下步骤:设定一个计数变量,记为C,计算机系统启动时C=0,每过一定的时间间隔TD,计数变量C增加1,时间间隔TD的大小随着不同的计算机系统的具体情况而不同,根据计算机系统的硬件条件来确定;预先约定IO请求的优先级使用实数来表示,数字越大代表的优先级别越高;从计算机系统启动开始,第i个到达驱动程序的IO请求的优先级记为P[i],数据量记为S[i]比特,将P[i]设置为(1/S[i])-C,也就是将P[i]设置为S[i]的倒数减去C得到的差。基于时间片的优先级策略使得在同一个时间间隔内到达驱动程序的IO请求,请求数据量大的优先级低,请求数据量小的优先级高;同时,在前一个时间间隔内到达驱动程序的IO请求的优先级高于在后一个时间间隔内到达驱动程序的任何IO请求的优先级,因而能够有效的满足本段开头提到的要求。
所述的IO请求由到达驱动程序并且已经设定优先级的IO请求构成,IO请求处理队列的形成和生长方法有两种:
第一种方法首先考虑IO请求的到达驱动程序的顺序,其次考虑IO请求的优先级。先到达驱动程序的IO请求排在队列前面,后到达该驱动程序的IO请求排在后面。同时到达驱动程序的IO请求,优先级高的排在队列前面,优先级低的排在后面。相同优先级并且同时到达驱动程序的IO请求,相对顺序任意。在这种情况下,驱动程序从IO请求处理队列中选择下一个处理的IO请求时,需要遍历整个队列找到优先级最高的IO请求。
第二种方法首先考虑IO请求的优先级,其次考虑IO请求到达驱动程序的顺序。先到达驱动程序的IO请求排在队列前面,后到达该驱动程序的IO请求排在后面。同时到达驱动程序的IO请求,优先级高的排在队列前面,优先级低的排在后面。相同优先级并且同时到达驱动程序的IO请求,相对顺序任意。在这种情况下,驱动程序从IO请求处理队列中选择下一个处理的IO请求时,只需要读取IO请求处理队列中排头的那个IO请求。
所述的IO访问地址增量统计方法用于:计算触发负载自适应预读策略的IO读命令中的访问地址的增量;将计算得到的IO访问地址增量以及相关有用信息记录下来以备负载自适应预读策略后续步骤使用;删除负载自适应预读策略后续步骤不需要的IO访问地址增量的纪录信息。IO访问地址增量统计方法具体包括一个预先规定和两个步骤:
预先规定:从计算机系统启动开始,第j次触发负载自适应预读策略的IO读命令的访问地址记为A[j],称A[j]为第j个访问地址。第j个访问地址和第j-1个访问地址之间的增量记为D[j],D[j]=A[j]-A[j-1],其中A[0]=0,D[j]称为第j个访问地址增量。第j个触发负载自适应预读策略的IO读命令的发送时间记为T[j],称为第j个IO时刻。
首先,当负载自适应预读策略被第j次触发时,记录第j个访问地址A[j]和第j个IO时刻T[j],计算并记录第j个访问地址增量D[j]。图5是A[j]、T[j]和D[j]的记录格式的示意图。如图5所示,每一个记录项由A[j]、T[j]、D[j]和下一个记录项的地址四部分构成,所有的记录项构成一个记录链表;
最后,设当前时间,即计算机系统时钟的时间,记为T,遍历整个记录链表,将T[j]<T-TD的记录项从记录链表中删除,因为在本发明所述方法中,T[j]<T-TD的记录项不再有用,为了节约内存使用量将无用的记录项删除。
所述的预处理是对记录链表中的数据进行的预先分析和处理。预处理包括如下三个步骤:
首先,设DL=max{D[j]}-min{D[j]},如果DL小于某一常数阈值DT,则不对记录链表做任何处理,常数阈值DT与计算机系统的硬件系统相关,根据硬件系统的具体情况来确定;
然后,如果DL大于常数阈值DT,计算记录链表中所有D[j]的标准差SD(标准差的计算在一般的概率统计教材中可以见到详细说明,在本发明中不做说明),如果标准差SD小于某一常数阈值ST,则不对记录链表做任何处理,常数阈值ST与计算机系统的硬件系统相关,根据硬件系统的具体情况来确定;
最后,如果标准差SD大于常数阈值ST,将记录链表中所有记录项的D[j]的均值记为ave{D[j]},标记记录链表中D[j]与ave{D[j]}之间的距离大于ST的记录项。如果所有的记录项都被标记,则去除T[j]距离当前时间最近的N个记录项的标记,常数阈值N与计算机系统的硬件系统相关,根据硬件系统的具体情况来确定。删除记录链表中被标记的记录项。
所述的合理的IO访问地址增量的统计数据就是经过上述预处理后,得到的记录链表的所有记录项数据。
所述预读数据地址是指将数据预先从外部存储设备读入驱动程序维护的数据缓存时,驱动程序向外部设备控制器的发送的IO读命令的IO访问地址,记为PA。
所述的当前IO访问地址是指触发负载自适应预读策略本次执行的IO读命令的访问地址,也是当前记录链表中,T[j]值最大的记录项的D[j]。
所述的预读数据地址与当前IO访问地址之间的增量简称为预读地址增量,等于当前记录链表中所有记录项的D[j]的均值ave{D[j]}。预读数据地址PA等于当前IO访问地址与预读地址增量的和。
所述的预读数据量是指从预读数据地址读取的数据量大小,记为PS。根据自适应的原则,预读数据量的大小随IO负载的变化动态的变化,同时依据IO负载的时间局部性、空间局部性和自相似性,预读数据量等于驱动程序最近处理的M个IO请求的请求数据量的均值的K倍与常数阈值MS的最小值,M、K和MS与计算机系统的硬件系统相关,根据硬件系统的具体情况来确定。预读数据量PS确定以后,驱动程序在系统较为空闲时执行预读动作,从预读数据地址PA开始,将数据量等于PS的数据从外部存储设备读入驱动程序维护的数据缓存。
本发明所述方法的优点主要在于:
1.原理简单,易于实现。
2.纯软件实现,成本低廉。
3.只需要在外部存储设备驱动程序内部做改动,具有良好的可移植性和软硬件兼容性。
4.显著降低了应用程序IO请求的平均响应时间。
5.能够动态提取不断变化的IO负载特征。
6.能够根据IO负载特征的变化动态调整优化策略。
7.具有对计算机系统上层应用的自适应性和通用性。
8.具有对IO负载的自适应性和通用性。
附图说明
图1是本发明所述计算机系统的结构示意图。
图2是本发明所述计算机系统处理IO请求的一般流程的示意图。
图3是应用了本专利所述方法之前,外部存储设备驱动程序处理一次IO请求的流程示意图。
图4是应用了本专利所述方法后,外部存储设备驱动程序处理IO请求的示意图。
图5是A[j]、T[j]和D[j]的记录格式的示意图。
图6是实施例计算机系统示意图。
图7是实施例计算机系统采用本发明所述方法后的IO请求处理流程的示意图;
图8是实施例计算机系统的SCSI磁盘阵列驱动程序采用本发明所述方法优化IO请求处理的流程示意图。
具体实施方式
本发明提出的一种自适应的外部存储设备IO性能优化方法是一种以减少计算机系统应用程序的IO请求平均响应时间为目的,在外部存储设备驱动程序内部实现的IO性能优化方法,换句话说,本发明所述方法通过在原有的外部存储设备驱动程序内部合适的位置插入本方法的实现步骤来实现,而不对任何原有部分进行改变。下面将对本发明所述方法的一个具体的实施例进行说明。
图6是实施例计算机系统示意图。如图6所示,整个计算机系统分为三层,最上层是应用程序层,包括一个oracle 9i的数据库管理系统和一个tomcat5.0 Web服务器;中间层是操作系统层,由Windows2003 Server构成,Windows2003 Server内部包括和本发明相关的系统调用和外部存储设备驱动程序,其中,外部存储设备驱动程序是SCSI磁盘阵列驱动程序;最底层是硬件层,硬件层由众多计算机硬件部件构成,其中图6给出了和本发明相关的外部存储设备控制器和外部存储设备,其中,外部存储设备控制器是SCSI磁盘阵列控制器,外部存储设备是型号为14xSeagate140GSCSI Disks的SCSI磁盘阵列。
图7是实施例计算机系统采用本发明所述方法后的IO请求处理流程示意图。如图7所示,IO请求处理流程包括三个步骤:第一步,应用程序层的Oracle9i数据库管理系统通过系统调用向SCSI磁盘阵列驱动程序发出IO请求;第二步,该IO请求到达SCSI磁盘阵列驱动程序,驱动程序采用IO请求处理队列的优化排队策略为该请求分配优先级,并将该请求插入IO请求处理队列;第三步,驱动程序按照IO请求处理队列的优化排队策略的原则从IO请求处理队列中取出下一个处理的IO请求,根据该请求是读请求还是写请求以及其他相关信息,完成该IO请求所需的操作,在该请求是读请求的情况下,如果该读请求所需的操作包括向SCSI磁盘阵列控制器发送IO读命令,则在最后一条IO读命令发送后触发一次负载自适应预读策略的执行。至此,IO请求处理流程结束。
实施例计算机系统的SCSI磁盘阵列驱动程序在应用了本发明所述方法之前,处理一次IO请求的流程示意图与图3一致。
实施例计算机系统的SCSI磁盘阵列驱动程序在应用了本发明所述方法之后,处理一次IO请求的流程示意图与图5一致。
图8是实施例计算机系统的SCSI磁盘阵列驱动程序采用本发明所述方法优化IO请求处理的流程示意图。图8也是实施例计算机系统的SCSI磁盘阵列驱动程序执行本发明所述方法的IO请求处理队列的优化排队策略和负载自适应预读策略的具体流程。如图8所示,SCSI磁盘阵列驱动程序优化IO请求处理的流程含有五个步骤,包括:
第一步:当IO处理队列的优化排队策略被触发时执行本步骤。从实施例计算机系统启动开始,设定一个计数变量,记为C,实施例计算机系统启动时C=0,每过一定的时间间隔TD=1秒,计数变量C增加1,时间间隔TD=1秒是根据实施例计算机系统具体情况确定,本领域技术人员熟悉时间间隔TD的确定;IO请求的优先级使用实数来表示,数字越大代表的优先级别越高;从计算机系统启动开始,第i个到达驱动程序的IO请求的优先级记为P[i],数据量记为S[i]比特,将P[i]设置为(1/S[i])-C,也就是将P[i]设置为S[i]的倒数减去C得到的差;然后将带有优先级P[i]的第i个IO请求插入IO请求处理队列,SCSI磁盘阵列驱动程序选择下一个处理的IO请求时,遍历整个处理队列,找出优先级最高的,如果优先级最高的有多个,则任意选择一个进行处理。实施例IO处理队列的优化排队策略的一次执行结束。
第二步:当负载自适应预读策略被触发时执行本步骤。记录本次触发负载自适应预读策略的IO读命令的逻辑块地址A[j](逻辑块地址是一种具体的IO访问地址,是本实施例的IO访问地址)和IO读命令的发送时间T[j],计算并记录逻辑块地址增量D[j],使用A[j]、T[j]、D[j]和上一个记录项的地址组成一个记录项,将这个纪录项插入记录链表。转入第三步:
第三步:对记录链表中的逻辑块地址增量的统计数据进行预处理,得到合理的逻辑块地址增量的统计数据,具体包括如下三步:
首先,使用用记录链表中的逻辑块地址数据,计算DL=max{D[j]}-min{D[j]},如果DL小于常数阈值DT=2000,则不对记录链表做任何处理。常数阈值DT=2000是根据实施例计算机系统具体情况确定,本领域技术人员熟悉常数阈值DT的确定;
然后,如果DL大于常数阈值DT=2000,计算记录链表中所有D[j]的标准差SD(标准差的计算在一般的概率统计教材中可以见到详细说明,在本发明中不做说明),如果标准差SD小于某一常数阈值ST=1500,则不对记录链表做任何处理。常数阈值ST=1500是根据实施例计算机系统具体情况确定,本领域技术人员熟悉常数阈值ST的确定;
最后,如果标准差SD大于常数阈值ST=1500,将记录链表中所有记录项的D[j]的均值记为ave{D[j]},标记记录链表中D[j]与ave{D[j]}之间的距离大于ST=1500的记录项。如果所有的记录项都被标记,则去除T[j]距离当前时间最近的N=10个记录项的标记。删除记录链表中被标记的记录项。常数N=10是根据实施例计算机系统具体情况确定,本领域技术人员熟悉常数N的确定。
转入第四步:
第四步:首先计算预读地址增量,预读地址增量等于当前记录链表中所有记录项的逻辑块地址D[j]的均值ave{D[j]}。然后计算预读数据地址PA,PA等于触发当前执行的负载自适应预读策略的IO读命令的逻辑块地址与预读地址增量的和。转入第五步:
第五步:计算预读数据量PS,PS等于驱动程序最近处理的M=3~5个IO请求的请求数据量的均值的K=2倍与常数阈值MS=16MB的最小值,M=3~5、K=2和MS=16MB是根据实施例计算机系统具体情况确定,本领域技术人员熟悉M、K和MS的确定。预读数据量PS确定以后,驱动程序在系统较为空闲时执行预读动作,从预读数据地址PA开始,将数据量等于PS的数据从外部存储设备读入驱动程序维护的数据缓存。实施例负载自适应预读策略的一次执行结束。
上述五个步骤是实施例计算机系统中的SCSI磁盘阵列驱动程序应用了本发明所述方法后,在处理IO请求时采用的优化策略的流程,其中第一步是IO处理队列的优化排队策略的具体执行过程,第二步到第五步是负载自适应预读策略的具体执行过程。

Claims (1)

1.一种自适应的外部存储设备IO性能的优化方法,其特征在于,该方法是在计算机操作系统层的外部存储设备驱动程序内部依次按以下步骤实现:
步骤(1).IO请求到达所述驱动程序,该驱动程序按照以下步骤执行IO请求处理队列的优化排队策略,为到达该驱动程序的IO请求设定优先级,并把设定了优先级的IO请求插入到驱动程序的IO请求处理队列中:
步骤(1.1).设定一个计数变量C,计算机系统启动时C=0,每过固定的时间间隔TD,计数变量C加1;
步骤(1.2).设定:用实数表示优先级,从计算机系统启动开始,第i个到达驱动程序的IO请求的优先级记为P[i],数据量记为S[i]比特,则:
P[i]=(1/S[i])-C,P[i]值越大,优先级越高;
步骤(1.3).IO请求处理队列按照以下方法生长:先到达该驱动程序的IO请求排到队列前面,后到达该驱动程序的IO请求排在后面,同时到达该驱动程序的IO请求,优先级高的排在队列前面,优先级低的排在后面,相同优先级并且同时到达驱动程序的IO请求,相对顺序任意;
步骤(1.4).驱动程序按照以下两种方法中的一种从IO请求处理队列选择下一个需要处理的IO请求:
A:遍历整个IO请求处理队列,找到一个优先级最高的IO请求作为下一个要处理的IO请求;
B:读取IO请求处理队列中排头的IO请求作为下一个要处理的IO请求;
步骤(2).当IO读请求需要驱动程序向外部存储设备发送若干条IO读命令来获取数据时,该驱动程序在执行最后一条IO读命令后触发下一次负载自适应预读策略的执行以适应不同负载特征的需要,该负载自适应预读策略按照以下步骤执行:
步骤(2.1).使用IO访问地址增量统计方法获得IO访问地址增量的统计数据,其步骤如下:
步骤(2.1.1).从计算机系统启动开始,第j次触发负载自适应预读策略的IO读命令的访问地址记为A[j],称A[j]为第j个访问地址;第j个访问地址和第j-1个访问地址之间的增量记为D[j],D[j]=A[j]-A[j-1],其中A[0]=0,D[j]称为第j个访问地址增量;第j个触发负载自适应预读策略的IO读命令的发送时间记为T[j],称为第j个IO时刻;
步骤(2.1.2).当负载自适应预读策略被第j次触发时,记录第j个访问地址A[j]和第j个IO时刻T[j],计算并记录第j个访问地址增量D[j];由A[j]、T[j]、D[j]和下一个记录项的地址四部分构成一个记录项,所有的所述记录项构成一个记录链表;
步骤(2.1.3).设当前时间,即计算机系统时钟的时间,记为T,遍历整个记录链表,将T[j]<T-TD的记录项从记录链表中删除;
步骤(2.2).对步骤(2.1)得到的IO访问地址增量的统计数据进行预处理,得到合理的IO访问地址增量的统计数据,其步骤如下:
步骤(2.2.1).设DL=max{D[j]}-min{D[j]},如果DL小于某一常数阈值DT,则不对记录链表做任何处理,否则,进入步骤(2.2.2):
步骤(2.2.2).若DL>DT,计算记录链表中所有D[j]的标准差SD,若标准差SD小于某一常数阈值ST,则不对记录链表做任何处理,否则,进入步骤(2.2.3):
步骤(2.2.3).若标准差SD大于常数阈值ST,将记录链表中所有记录项的D[j]的均值记为ave{D[j]},标记记录链表中D[j]与ave{D[j]}之间的距离大于ST的记录项;若所有的记录项都被标记,则去除T[j]距离当前时间最近的N个记录项的标记,然后删除记录链表中被标记的记录项;
步骤(2.3).使用步骤(2.2)得到的合理的IO访问地址增量的统计数据计算预读数据地址PA,所述预读数据地址PA等于当前IO访问地址与预读地址增量之和;所述预读数据地址是指将数据预先从外部存储设备读入驱动程序维护的数据缓存时,驱动程序向外部设备控制器发送的IO读命令的IO访问地址;
所述当前IO访问地址是指触发负载自适应预读策略本次执行的IO读命令的访问地址,也是当前记录链表中,T[j]值最大的记录项的D[j];
所述预读地址增量是所述的预读数据地址与当前IO访问地址之间的增量,定义为当前记录链表中所有记录项的D[j]的均值ave{D[j]};
步骤(2.4).计算预读数据量的大小,并从步骤(2.3)得到的预读数据地址PA开始从外部存储设备读取预读数据量大小的数据到数据缓存;
所述预读数据量等于驱动程序最近处理的M个IO请求的请求数据量的均值的K倍与常数阈值MS之间的最小值,M、K和MS是设定值;
步骤(2.5).该驱动程序在系统较为空闲时执行预读动作,从步骤(2.3)得到的预读数据地址PA开始从外部存储设备读入步骤(2.4)中所述预读数据量大小的数据到驱动程序维护的数据缓存。
CNB2006101655881A 2006-12-22 2006-12-22 一种自适应的外部存储设备io性能优化方法 Expired - Fee Related CN100428209C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101655881A CN100428209C (zh) 2006-12-22 2006-12-22 一种自适应的外部存储设备io性能优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101655881A CN100428209C (zh) 2006-12-22 2006-12-22 一种自适应的外部存储设备io性能优化方法

Publications (2)

Publication Number Publication Date
CN101000589A CN101000589A (zh) 2007-07-18
CN100428209C true CN100428209C (zh) 2008-10-22

Family

ID=38692568

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101655881A Expired - Fee Related CN100428209C (zh) 2006-12-22 2006-12-22 一种自适应的外部存储设备io性能优化方法

Country Status (1)

Country Link
CN (1) CN100428209C (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101043445B (zh) * 2007-03-06 2011-02-23 哈尔滨工程大学 网络存储系统中的io调度方法
CN101795379A (zh) * 2010-03-12 2010-08-04 广东星海数字家庭产业技术研究院有限公司 一种数字家庭视频存储实现方法及系统
CN105207794B (zh) * 2014-06-05 2019-11-05 南京中兴软件有限责任公司 统计计数设备及其实现方法、具有统计计数设备的系统
CN105487987B (zh) * 2015-11-20 2018-09-11 深圳市迪菲特科技股份有限公司 一种处理并发顺序读io的方法及装置
CN107153620B (zh) * 2016-03-03 2021-02-02 海信视像科技股份有限公司 一种数据处理方法及装置
KR102649324B1 (ko) * 2016-05-19 2024-03-20 삼성전자주식회사 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법
CN107340978B (zh) * 2017-07-18 2020-05-26 苏州浪潮智能科技有限公司 一种存储预读方法、装置及存储系统
CN109471671B (zh) * 2017-09-06 2023-03-24 武汉斗鱼网络科技有限公司 一种程序冷启动方法和系统
CN110019313B (zh) * 2017-12-30 2021-09-28 中国移动通信集团四川有限公司 资源优化方法、装置、设备及介质
CN109240751B (zh) * 2018-09-04 2021-12-21 广东小天才科技有限公司 一种电子设备的外围模组兼容方法及电子设备
CN109445688B (zh) * 2018-09-29 2022-04-15 上海百功半导体有限公司 一种存储控制方法、存储控制器、存储设备及存储系统
CN109408239A (zh) * 2018-10-31 2019-03-01 长沙新弘软件有限公司 一种基于队列的异步io处理方法
CN114489471B (zh) * 2021-08-10 2023-04-14 荣耀终端有限公司 一种输入输出处理方法和电子设备
CN113821457B (zh) * 2021-10-11 2023-06-30 芯河半导体科技(无锡)有限公司 一种高性能读写链表缓存的装置及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040006671A1 (en) * 2002-07-05 2004-01-08 Handgen Erin Antony Method and system for optimizing pre-fetch memory transactions
CN1154049C (zh) * 1998-12-31 2004-06-16 英特尔公司 双端口管道两级高速缓冲存储器系统
CN1795441A (zh) * 2003-05-27 2006-06-28 英特尔公司 改进多中央处理器系统对存储器存取的性能的方法及设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1154049C (zh) * 1998-12-31 2004-06-16 英特尔公司 双端口管道两级高速缓冲存储器系统
US20040006671A1 (en) * 2002-07-05 2004-01-08 Handgen Erin Antony Method and system for optimizing pre-fetch memory transactions
CN1795441A (zh) * 2003-05-27 2006-06-28 英特尔公司 改进多中央处理器系统对存储器存取的性能的方法及设备

Also Published As

Publication number Publication date
CN101000589A (zh) 2007-07-18

Similar Documents

Publication Publication Date Title
CN100428209C (zh) 一种自适应的外部存储设备io性能优化方法
CN100428170C (zh) 基于贝叶斯决策的负载感知的io性能优化方法
US10838626B2 (en) Methods, apparatuses, and computer program products for controlling write requests in storage system
US8429096B1 (en) Resource isolation through reinforcement learning
US8429097B1 (en) Resource isolation using reinforcement learning and domain-specific constraints
US20030140207A1 (en) Hierarchical storage apparatus and control apparatus thereof
US20070283091A1 (en) Method, computer and computer system for monitoring performance
CN103795781B (zh) 一种基于文件预测的分布式缓存方法
US20090254594A1 (en) Techniques to enhance database performance
CN110287010B (zh) 一种面向Spark时间窗口数据分析的缓存数据预取方法
JP2004302751A (ja) 計算機システムの性能管理方法、および、記憶装置の性能を管理する計算機システム
CN101150485A (zh) 一种零拷贝缓冲区队列网络数据发送的管理方法
US8250390B2 (en) Power estimating method and computer system
CN109240946A (zh) 数据的多级缓存方法及终端设备
CN102857560B (zh) 一种面向多业务应用的云存储数据分布方法
CN101150486A (zh) 一种零拷贝缓冲区队列网络数据接收的管理方法
CN104462432A (zh) 自适应的分布式计算方法
CN112835698A (zh) 一种基于异构集群的请求分类处理的动态负载均衡方法
CN109918450A (zh) 基于分析类场景下的分布式并行数据库及存储方法
CN107728938B (zh) 一种低能耗集群环境下基于频度关联的冷数据放置策略
CN107301270A (zh) Ddr存储系统访存延时的解析建模方法
CN110175206A (zh) 用于多数据库分离的智能分析业务方法、系统及介质
CN101251789A (zh) 廉价磁盘冗余阵列raid5卷快速扩容方法
CN116089477A (zh) 分布式训练方法及系统
CN106227739B (zh) 一种实现基于多任务的数据请求方法

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
ASS Succession or assignment of patent right

Owner name: EASYWAY TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: TSINGHUA UNIVERSITY

Effective date: 20121225

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100084 HAIDIAN, BEIJING TO: 100083 HAIDIAN, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20121225

Address after: 100083 Beijing city Haidian District Wangzhuang Road No. 1, Tsinghua Tongfang Technology Plaza, A block 18 layer

Patentee after: Easyway Co.,Ltd.

Address before: 100084 Beijing box office,,, Tsinghua University

Patentee before: Tsinghua University

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: 20081022