发明名称 基于贝叶斯决策的负载感知的IO性能优化方法
摘要 本发明提供了一种基于贝叶斯决策的负载感知的IO性能优化方法。本发明所述方法首先使用贝叶斯理论挖掘出IO访问流中频繁序列之间的相关性,然后利用这种相关性指导数据预读和缓存替换,最终实现IO性能优化的目的。这种方法能够动态的感知IO负载特征的变化,并且自适应的调整IO性能优化策略,是一种适应多种应用环境的通用的IO性能优化方法。
申请公布号 CN101008907A 申请公布日期 2007.08.01
申请号 CN200710063064.6 申请日期 2007.01.26
申请人 清华大学 发明人 严琪;李越;李益民;李超;胡庆成;张小虎;邢春晓
分类号 G06F9/50(2006.01);G06F12/08(2006.01) 主分类号 G06F9/50(2006.01)
代理机构 代理人
主权项 1.一种基于贝叶斯决策的负载感知的IO性能优化方法,其特征在于,包括:在计算机系统的存储设备驱动程序中执行以下十个步骤;第一步:在数据统计的时间间隔TD内,记录IO访问流中的IO访问地址,TD的取值与计算机系统的硬件条件有关,由外部存储设备驱动程序的研发人员和计算机系统的管理员来确定,此领域的技术人员熟悉TD具体数值的确定,将TD间隔内记录的所有IO访问地址按照时间先后顺序组成一个地址序列,称为IO地址序列,将IO地址序列中第j个IO访问地址记作A[j];第二步:使用数据挖掘的方法,从第一步得到的IO访问序列中挖掘出出现次数超过常数阈值FT的频繁序列,并且这些频繁序列所跨越的时间长度要小于时间阈值GT,FT和GT的取值与计算机系统的硬件条件有关,由外部存储设备驱动程序的研发人员和计算机系统的管理员来确定,此领域的技术人员熟悉FT和GT具体数值的确定;第三步:找出第一步得到的IO地址序列中所有的没有被任何一个第二步得到的频繁序列包含的IO访问地址,将这些地址按照时间先后顺序看作一个只出现一次的频繁序列;第四步:计算第二步和第三步得到的每一个频繁序列的出现概率,设第i个频繁序列是F[i],设第一步得到的IO地址序列中F[i]出现的次数与F[i]元素数的乘积为M[i],则F[i]的出现概率P(F[i])的计算公式如下:<math> <mrow> <mi>P</mi> <mrow> <mo>(</mo> <mi>F</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>M</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> </mrow> <mrow> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <mi>M</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> </math> 第五步:对所有第四步得到的频繁序列F[i]和第一步得到的IO访问地址A[j],计算在决策时间间隔JT内,F[i]出现的条件下,A[j]出现的概率P(A[j]|F[i]),JT的取值与计算机系统的硬件条件有关,由外部存储设备驱动程序的研发人员和计算机系统的管理员来确定,此领域的技术人员熟悉JT具体数值的确定,P(A[j]|F[i])等于第一部得到的IO地址序列中A[j]和F[i]在JT间隔内都出现的次数与IO地址序列中F[i]出现的次数的商;第六步:对所有第四步得到的频繁序列F[i]和第一步得到的IO访问地址A[j],预测在第五步得到的决策间隔JT内,在IO访问地址A[j]出现的条件下,频繁序列F[i]出现的概率P(F[i]|A[j]),P(F[i]|A[j])的计算公式如下:<math> <mrow> <mi>P</mi> <mrow> <mo>(</mo> <mi>F</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> <mo>|</mo> <mi>A</mi> <mo>[</mo> <mi>j</mi> <mo>]</mo> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>P</mi> <mrow> <mo>(</mo> <mi>A</mi> <mo>[</mo> <mi>j</mi> <mo>]</mo> <mo>|</mo> <mi>F</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> <mo>)</mo> </mrow> <mo>*</mo> <mi>P</mi> <mrow> <mo>(</mo> <mi>F</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> <mo>)</mo> </mrow> </mrow> <mrow> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <mi>P</mi> <mrow> <mo>(</mo> <mi>A</mi> <mo>[</mo> <mi>j</mi> <mo>]</mo> <mo>|</mo> <mi>F</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> <mo>)</mo> <mo>*</mo> <mi>P</mi> <mrow> <mo>(</mo> <mi>F</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> <mo>)</mo> </mrow> </mrow> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow> </math> 第七步:设i和k是两个互不相等的正整数,对所有第四步得到的频繁序列F[i]和F[k],预测在第五步得到的决策间隔JT内,在频繁序列F[i]出现的条件下,频繁序列F[k]出现的概率P(F[k]|F[i]),P(F[k]|F[i])的计算公式如下:<math> <mrow> <mi>P</mi> <mrow> <mo>(</mo> <mi>F</mi> <mo>[</mo> <mi>k</mi> <mo>]</mo> <mo>|</mo> <mi>F</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> <mo>)</mo> </mrow> <mo>=</mo> <munder> <mi>&Sigma;</mi> <mrow> <mi>A</mi> <mo>[</mo> <mi>j</mi> <mo>]</mo> <mo>&Element;</mo> <mi>F</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> </mrow> </munder> <mi>P</mi> <mrow> <mo>(</mo> <mi>F</mi> <mo>[</mo> <mi>k</mi> <mo>]</mo> <mo>|</mo> <mi>A</mi> <mo>[</mo> <mi>j</mi> <mo>]</mo> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow> </math> 第八步:确定第一步得到的IO地址序列中按照时间顺序最后出现的N个频繁序列,将这N个频繁序列按照出现时间的先后顺序排列,记其中的第i个频繁序列为FL[i],对每一个FL[i]确定第七步得到的P(F[k]|FL[i])数值最大的M个频繁序列,一共确定了N*M个频繁序列,N和M的取值与计算机系统的硬件条件有关,由外部存储设备驱动程序的研发人员和计算机系统的管理员来确定,此领域的技术人员熟悉N和M具体数值的确定;第九步:确定第八步得到的N*M个频繁序列所包含的IO访问地址,将这些IO访问地址所对应的数据从外部存储设备预读到系统内存,如果系统内存短缺,则新预读数据按照最近一次被使用的数据将被保留的原则替换原有缓存数据;第十步:将第一步得到的统计间隔TD向后推移,使得TD的终止时刻位于计算机系统时钟的当前时刻,在驱动程序处理完下一个IO请求后转到第一步。
地址 100084北京市100084信箱82分箱清华大学专利办公室