自主学习丨大创项目:基于性能分析的云原生软件故障检测
bb贝博艾弗森官方网站重视学生实践能力、创新思维及团队精神的培养,鼓励推动学生参与创新创业项目,推进学院拔尖创新人才的培养工作,推进“五个融合”。在2022年大学生创新创业训练计划项目(以下简称大创项目)结题答辩中,有三个项目组被评定为优秀。学院公众号特推出大创项目优秀小组系列推送,希望bb贝博艾弗森官方网站全体学生以此为榜样,积极参与科研训练实践。
01队伍介绍
项目名称:
基于性能分析的云原生软件故障检测

▲该项目小组结题答辩现场
队伍名称:self-motivated
队员介绍:
单诗雯,bb贝博艾弗森官方网站2020级本科生,对操作系统、日志生成、机器学习等方面比较感兴趣。
李阳姿,bb贝博艾弗森官方网站2020级本科生,兴趣爱好有点广泛,挺喜欢学习和敲代码,比较关注操作系统和智能软件工程等研究方向。
韩宝欣,bb贝博艾弗森官方网站2020级本科生,对云计算、云原生系统、无服务计算方向比较感兴趣。
陈智翔,bb贝博艾弗森官方网站2020级本科生,对操作系统、软件工程和人工智能方向比较感兴趣。
练芷璐,bb贝博艾弗森官方网站2020级本科生,对人工智能、云服务、自然语言处理方向比较感兴趣。
队伍口号:肝到最后一刻!
02项目背景
近年来,云服务行业发展迅速(如下图)。随着用户的增加,需要存储的数据也呈爆发式增长。这对设备内存的要求较高,而过去基于云服务内存的研究和工作在开销和效率方面都存在着不足

与此同时,人工智能产业也飞速发展。越来越多领域如漏洞检测、实时翻译等和AI技术结合获得了不错的效果。
我们项目组的成员都对操作系统和云服务的方向比较感兴趣,在专业课中,我们也学习了人工智能的相关知识。我们认识到,系统、高效地监测并预测内存使用情况是一个尚未成熟、需要不断探索的领域,我们希望利用所学的知识在这一方面进行创新。
03项目简介
本项目主要利用linux操作系统内核技术来监视、收集运行于操作系统上层的目标程序的运行状况并据此整合成对应的数据集,随后利用该训练集,通过人工智能算法构建、训练机器学习模型来预测目标程序未来的运行时状态。具体项目细节于下方叙述。
本项目采用eBPF内核监测技术,非侵入式地收集目标软件运行时的异常情况,并结合机器学习模型实现对目标软件的实时故障检测。
在数据收集方面,我们利用kprobe跟踪机制,从操作系统中获取目标软件的缺页异常情况。每当进入处理缺页异常的系统调用之前,进程会先下陷到预置的eBPF程序中进行数据收集。内核态数据被eBPF程序发送到环形缓冲区,用户态程序调用helper function对缓冲区进行轮询。每当缓冲区出现数据时,用户态的回调函数将自动被调用,并将数据写入文件保存。同时,我们采用开源工具收集目标软件工作集变化情况,作为训练模型的标签数据。

▲数据收集过程
在模型训练方面,我们首先进行数据预处理,剔除部分不稳定的异常数据后将剩余数据归一化。我们把数据划分为训练集、测试集和验证集,并采用LightGBM算法框架来训练模型。该框架基于GBDT(梯度提升决策树)有着高效率的并行计算、更快的速度、更低的内存消耗、更高的准确度。同时,我们采用NNI——一种微软提供的自动机器学习工具包,来对多个参数进行调优,从而找到每个超参数的最优区间和次优区间。

▲模型
最终,我们结合eBPF技术和机器学习模型,对目标软件的工作集进行实时预测,从而实现故障检测。我们的模型平均RMSE为0.0744,时间开销仅为开源工具的1/65,实现了一个高效、高准确性、非侵入式的软件实时故障检测方法。

▲模型效果图(红色是预测值,蓝色是真实值)
04项目过程和成果
项目过程

项目成果
2022年5月,我们小组于2022 ICSS 国际会议上发表一篇名为《eBPF-based Working Set Size Estimation in Memory Managemen》的论文。
05成员感想
大创项目是我们入门科研的一个很好的锻炼机会。在完成项目的过程中,我们对文献阅读的基本方法有所了解,掌握了一些常见工具和模型的使用,学会了通过自行阅读文档、翻阅问答网站等方法来解决遇到的问题。此外,我们也初次尝试了项目材料文书写作、参加学术会议和结项答辩等需要表达和展示的环节,收获颇丰。
——陈智翔
参加大创这一年来,我们感受到了科研的魅力,也在苏老师的指导下体会到了发论文的乐趣。虽然过程难免有些辛苦,但结果总归是让人欣喜的。我在阅读英文论文时,面对很多陌生的专业词汇总是倍感绝望;和组员一起进行相关实验时,查不到相关资料以及debug不出结果更是让人抓狂。然而最终收到论文成功发布的邮件时,我们还是感到了前所未有的惊喜。在整个过程中,小组成员的相互配合和组长的协调也十分重要。我们组内配合默契,组长统筹安排合理,使得我们这一年来的工作进行得十分顺畅。总之,参加此次大创于我而言收获颇丰,因此我在下一年里继续报了名。
——韩宝欣
06导师介绍和寄语
导师介绍
苏玉鑫

苏玉鑫,助理教授,硕士生导师,中国计算机学会服务计算专委会执行委员。2021年7月入选bb贝博艾弗森官方网站百人计划,加入bb贝博艾弗森官方网站。主要研究方向为人工智能与系统软件的融合,具体包括分布式系统、云计算、云原生系统、机器学习、数据挖掘、计算机视觉、云系统可靠性与智能运维(AIOps)等。近年来在国际会议和期刊共发表20余篇论文,其中17篇发表于ASE、ICSE、ISSTA、FAST、CVPR、SIGIR、AAAI、IJCAI、CSUR、TKDE等软件工程、操作系统、分布式系统、计算机视觉、人工智能、数据挖掘等领域CCF A类顶级会议与期刊。
导师寄语
项目组成员关注的基础软件可靠性问题,是当前学科建设的重点研究方向,选题具有前瞻性与现实意义。成员通过广泛地阅读相关文献,积累背景知识以及了解掌握学术前沿现状,创新地提出一种通过操作系统内核,以非侵入式的方式监测应用程序内存使用状态的方法,进而科学地建立了缺页异常数量以及未来内存工作集大小之间的关系。从实验效果来看,该项目组的成果从有效性、性能开销等方面都相对优于学术界已有的工作,具有较强的先进性。并且可以直接应用于现有云原生系统中,进一步实现程序异常检测功能,具有较强的现实意义。