关键词:
操作系统
机器学习框架
性能优化
页缓存预取
摘要:
本论文旨在探索机器学习在计算机系统领域的应用,以机器学习的方式优化操作系统内部的启发式算法。当前,操作系统开发者相对保守,通常采用基于历史工作负载和人类直觉设置的启发式算法,然而这种方式无法灵活适应不断变化的复杂工作负载。因此,本文希望引入机器学习方法支持操作系统,使其内部的启发式算法更具适应性。本文涵盖了三个创新点。
首先,实现了一个运行于内核态的机器学习框架,用于在操作系统内核中实现机器学习任务,本文会详细介绍本框架的运行模式、模块划分和部分实现细节,随后还将本框架的推理性能与常见的AI框架Pytorch进行对比,对比结果表明:尽管随着模型规模的增大,本框架的推理速度急剧减慢并远落后于成熟的框架,但在轻量的神经网络模型上,本框架可以获得最高的推理速度,在10*10*10*5的网络模型上,推理时延仅为9us,甚至优于Pytorch的CPU推理时延(32us)。实验还表明,与GPU相比,在小规模网络上,采用CPU进行模型推理反而会更有优势。
其次,基于Tree Shap和贝叶斯优化,设计了一种参数选择和优化算法,用于解决多系统参数场景下的参数调优问题。本文将操作系统的性能优化任务视为黑盒优化问题,采取了贝叶斯优化的思路,进而具体分析了传统贝叶斯算法应用在本文场景下的缺陷:维度灾难、搜索效率慢、存在离散型特征的问题,随后引出了利用Tree Shap加权降维的方法和基于随机森林的局部贝叶斯优化方法来解决,并在进程调度器参数调优场景验证了该方案的可行性。为了检验算法本身的有效性,本章节还对主流的几种黑盒优化方法进行了横向对比,结果表明本章节的优化方法可以获得最高的搜索效率,相对于随机搜索是其效率的35倍。
最后,具体针对Linux内核文件子系统中的页缓存预取问题,结合前两个创新点设计了一种基于动态工作负载的预取算法优化方法,并在文件级别的微观负载和现实场景下的真实负载上进行验证。结果表明,在大多数场景下取得了一定的优化效果,微观负载上来看随机读和随机更新负载的性能有1.7倍的提升,顺序读和随机读写有着略微的提升,在真实场景下Mail-Server有着近3.1倍的吞吐量提升,File-Server有着1.2倍的吞吐提升,Web-Server负载下无效果并进行了原因分析。