1.一种基于贝叶斯网络定位hdfs关键低效函数的性能分析方法,其特征在于,包括以下步骤:
步骤(1):hdfs源码插桩,在分布式文件系统hdfs的dfsinputstream,blockreaderlocallegacy,blockreaderremote2,blockreaderlocal,blockreaderremote,blocksender,blockreceiver,fsnamesystem,dfsclient,distributedfilesystem类下面的特定目标函数中进行函数级插桩,得到hdfs被插桩函数的函数入口和出口的时间戳、函数读写的数据量作为插桩得到的数据;
步骤(2):利用改进的htrace对插桩得到的数据进行采样,得到每个插桩函数次数相等的数据;
步骤(3):对所有插桩函数进行低效概率的计算,得到每一个插桩函数的低效概率;
步骤(4):步骤(1)至步骤(3)作为一次过程,重复50-100次,将一次作为一条数据,用50-100条数据构建函数低效概率数据集;
步骤(5):基于低效函数数据集,采用结构学习的方法构建贝叶斯网络,结构学习的方法为贝叶斯评分策略和爬山搜索法;
步骤(6)在结构学习方法的基础上进行参数学习,得到局部的条件概率分布函数,参数学习的具体算法为贝叶斯方法;
步骤(7):遍历每个插桩函数,对每个插桩函数进行敏感性分析,得到关键低效函数。
2.根据权利要求1所述的基于贝叶斯网络定位hdfs关键低效函数的性能分析方法,其特征在于:所述步骤(1)中的hdfs源码插桩,为扩展htrace采集的trace信息,获取hdfs中名称节点、数据节点、客户端节点之间所有的通信trace信息,同时采集插桩函数的参数信息,插桩函数见插桩目标函数为:dfsinputstream类的构造函数,openinfo,fetchblockat,readwithstrategy,actualgetfromonedatanode,blockreaderlocallegacy/blockreaderremote2/blockreaderlocal/blockreaderremote类的构造函数,readfully,readall,blocksender类的sendpackage(transferto),blocksender#sendpacket(readlocal),blocksender\#sendpacket(writetosocket),dosendblock,blockreceiver类的flushorsync,receivepacket,receiveblock,fsnamesystem类的getblocklocations,renameto,delete,getfileinfo,dfsclient/distributedfilesystem类的getblocklocations,rename,delete,getfileblocklocations,create。
3.根据权利要求1所述的基于贝叶斯网络定位hdfs关键低效函数的性能分析方法,其特征在于:所述步骤(2)中,采用改进的htrace(cloudera开源出来的一个分布式系统跟踪框架)进行采样,采样方法为令牌桶算法,参数设置为令牌桶大小为1000,时间间隔为180ms。
4.根据权利要求1所述的基于贝叶斯网络定位hdfs关键低效函数的性能分析方法,其特征在于:所述步骤(3)中,在hdfs的性能检测当中,所述的低效函数概率计算公式如下:
其中,plow(f)为函数f对应的低效概率;flow(f)为函数f的低效执行的次数,其具体的计算方法为,在插桩得到的函数f的所有执行时间或单位数据读写时间
5.根据权利要求1所述的基于贝叶斯网络定位hdfs关键低效函数的性能分析方法,其特征在于:所述步骤(3)中,每个插桩函数的低效概率计算方法如下所示:将步骤(1)将函数出口的时间戳与入口的时间戳相减,得到函数的执行时间,进行统计计算,对于hdfs系统中涉及i/o的函数,计算的指标为单位数据读写时间,计算方法如下:
其中,
对每一个函数f,计算
6.根据权利要求1所述的基于贝叶斯网络定位hdfs关键低效函数的性能分析方法,其特征在于:步骤(7)具体包括以下步骤:
(7-1)对遍历到的任意函数f,判断该函数低效概率是否大于预设阈值thresholdlow,所述预设阈值thresholdlow根据用户的配置设定;如果大于阈值,则标记该函数为低效函数,执行(7-2),否则标记该函数不是低效函数,继续判断其他函数;
(7-2)将得到的所有低效函数的低效概率置为100%,利用贝叶斯网络学习到的条件概率分布关系,计算其他非低效函数节点的后验概率,如果这个后验概率超过给定阈值thresholdlow,则认为此非低效函数由非低效变为低效,统计在将所有低效函数的低效概率置为100%之后,由非低效转变为低效的非低效函数个数为npre,并继续执行(7-3);
(7-3)遍历所有低效函数,对任一低效函数f,将其低效概率置为0%,其他低效函数概率继续保持100%,以此为前提,计算所有非低效函数节点的后验概率,如果这个后验概率超过给定阈值,则认为此非低效函数由非低效变为低效,记由非低效转变为低效的函数的个数为
(7-4)遍历所有低效函数,计算所有低效函数运行时间占程序总运行时间的比重即计算函数实际运行时间的方法,判断这个比重是否大于预设阈值thresholdweight,所述预设阈值thresholdweight根据用户的配置设定,如果小于阀值,该函数不值得优化;如果大于,则该函数为值得优化的关键低效函数。
7.根据权利要求8所述的基于贝叶斯网络定位hdfs关键低效函数的性能分析方法,其特征在于:所述步骤(7-4)中,对于函数运行时间占程序总运行时间的比重的方法为以下三种任意之一:
第一种方式:
其中,
第二种方式:
其中,
第三种方式:
其中,