-
Notifications
You must be signed in to change notification settings - Fork 0
Progress Report 2018.12.02
TimHe edited this page Feb 10, 2019
·
1 revision
1.尝试复现mariadb 性能bug4个,成功1个,失败3个。失败原因有‘环境搭建失败,求助开发者对方表示旧版不提供技术支持,因此无法继续’、‘复现需要花费大量时间(构建巨大文件),report中已有足够的我需要的性能值,因此未复现’、‘本机硬件条件不合适’。
2.尝试用机器学习异常检测方法对性能bug的性能图像进行检测:(代码matlab+python 200行)
机器学习算法:one-class SVM 训练集:正常性能图像86590%=779个 测试集A:正常性能图像86510%=86个 测试集B:完全随机构建出来的性能图像86个(完全随机意味着性能图在各个位置都是凹凸不平,而且变化十分巨大,我的假设是:这样的性能图像不可能是正常情况下的性能图像,所以用工具检测之后不能将他们分类为‘正常’) 测试集C:我复现的突变点类型性能bug的图像1个(这一个是真是的、突变最剧烈、我认为最明显的bug图像,如果这个失败那意味着还需要改进)
工具分类错误数量: 在训练集中:21/779 在测试集A中:9/86(工具错误地认为9个图像代表具有bug) 在测试集B中:0/86(工具全部正确地讲86个不正常性能图像分类为‘异常’) 在测试集C中:1/1(失败)
在测试集B上的成功并不奇怪,但是在测试集C上的失败意味着我的工具还需要修改。失败原因分析:我人工看了训练集中的779个正常的图像,发现其中有好几个和测试集C中的bug图像很像,这就导致了在训练的时候bug图像被认为成了是正样本。很像的原因有以下几个:
- 构建正常图像时,采样点太少了,导致构建出来的图像存在较大误差。
- 构建正常图像时,使用了一些不合适的配置:比如并发度很高时buffer十分小。正常人使用软件不会这么配置
- 正常图像的坐标轴和bug图像不同,举例来说,就是正常图像是通过改变并发度+buffer大小得到的,而bug图像是通过改变table大小和insert_bulk大小得到的。
下周我针对上面三个问题进行改进。尽管初步效果不行,但是我对这个方法还是比较有信心。