发明名称 一种自适应的外部存储设备IO性能优化方法
摘要 本发明提供一种自适应的外部存储设备IO性能优化方法,其特征在于以下步骤:给到达外部存储设备驱动程序的IO请求分配优先级并将其插入IO请求处理队列;使用IO访问地址增量统计方法获得IO访问地址增量的统计数据并预处理;使用该统计数据计算预读数据的访问地址;计算预读数据量大小,从预读数据的访问地址开始从外部存储设备读取预读数据量的大小的数据到数据缓存。本发明既优化了外部存储设备驱动程序对IO请求的响应顺序,又能够根据IO负载的具体特征动态地调整IO性能的优化策略,因而既能显著的减小IO请求的平均响应时间,又具有很好的自适应性和通用性。
申请公布号 CN101000589A 申请公布日期 2007.07.18
申请号 CN200610165588.1 申请日期 2006.12.22
申请人 清华大学 发明人 严琪;邢春晓;李越;李益民;李超;胡庆成
分类号 G06F13/10(2006.01);G06F13/18(2006.01) 主分类号 G06F13/10(2006.01)
代理机构 代理人
主权项 1.一种自适应的外部存储设备IO性能的优化方法,其特征在于,该方法是在计算机操作系统层的外部存储设备驱动程序内部依次按以下步骤实现:步骤(1).IO请求到达所述驱动程序,该驱动程序按照以下步骤执行IO请求处理队列的优化排队策略,为到达该驱动程序的IO请求设定优先级,并把设定了优先级的IO请求插入到驱动程序的IO请求处理队列中:步骤(1.1).设定一个计数变量C,计算机系统启动时C=0,每过固定的时间间隔TD,计数变量C加1;步骤(1.2).没定:用实数表示优先级,从计算机系统启动开始,第i个到达驱动程序的IO请求的优先级记为P[i],第i个到达驱动程序的IO请求的请求数据量记为S[i]比特,则:P[i]=(1/S[i])-C,P[i]值越大,优先级越高;所述的IO请求由到达驱动程序并且已经设定优先记得IO请求构成;步骤(1.3).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]。图4是A[j]、T[j]和D[j]的记录格式的示意图。如图5所示,每一个记录项由A[j]、T[j]、D[j]和下一个记录项的地址四部分构成,所有的记录项构成一个记录链表;步骤(2.1.3).设当前时间(当前时间是指计算机系统时钟的时间)记为T,遍历整个记录链表,将T[j]<T-TD的记录项从记录链表中删除,对不在时间间隔的TD不予考虑;步骤(2.2).对步骤(2.1)的道德IO访问地址增量的统计数据进行预处理,得到合理的IO访问地址增量的统计数据,其步骤如下:步骤(2.2.1).设DL=max{D[j]}-min{D[j]},如果DL小于某一常数阈值DT,则不对记录链表做任何处理,否则,进入下一个步骤:步骤(2.2.2).若DL>DT,计算记录链表中所有D[j]的标准差SD,若标准差SD小于某一常数阈值ST,则不对记录链表做任何处理,否则,进入下一个步骤:步骤(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,所述预读数据地址是指将数据预先从外部存储设备读入驱动程序维护的数据缓存时,驱动程序向外部设备控制器的发送的IO读命令的IO访问地址:所述预读地址PA等于当前IO访问地址与预读地址增量之和,其中,当前IO访问地址是指触发负载自适应预读策略本次执行的IO读命令的访问地址,也是当前记录链表中,T[j]值最大的记录项的D[j];其中,预读地址增量是所述的预读数据地址与当前IO访问地址之间的增量,定义为当前记录链表中所有记录项的D[j]的均值ave{D[j]};步骤(2.4).计算预读数据量的大小,并从步骤(2.3)得到的预读数据的访问地址开始从外部存储设备读取预读数据量大小的数据到数据缓存;所述预读数据量等于驱动程序最近处理的M个IO请求的请求数据量的均值的K倍与常数阈值MS之间的最小值,M、K和MS是设定值;步骤(2.5).该驱动程序在系统较为空闲时执行预读动作,从步骤(2.3)得到的预读地址开始把数据量等于步骤(2.4)所述的数据大小从外部存储设备读入驱动程序维护的数据缓存。
地址 100084北京市100084信箱82分箱清华大学专利办公室
您可能感兴趣的专利