本文在浪潮信息服务器操作系统云峦KeyarchOS环境下,使用Intel DSA技术在加速虚拟机启动场景下进行了验证。
随着云计算、大数据、人工智能等技术的快速发展,数据呈现出爆发式增长趋势,同时驱动着算力持续提升,然而,传统DRAM并未实现同步扩展以满足应用需求,应用对内存容量和带宽不断提高的需求,推动着内存扩展技术不断发展,在此背景下,CXL成为解决内存扩展瓶颈的最有前景的技术;与DRAM内存相比,扩展内存面临高延迟、低带宽的技术挑战,为了解决这些挑战,分层内存技术应运而生。
一.背景
虚拟机在使用透传设备,尤其是为虚拟机配置大内存时,启动时间会变慢。这是因为虚拟机在启动时,需要将虚拟地址和物理地址之间的关系全部固定下来,在这期间会触发“page fault”,并对每个内存页进行清零操作,当虚拟机分配几百G,甚至上TB的内存时,就会有比较明显的启动延迟,可能由十几秒延迟到数分钟。
为了解决内存页清零耗时较长的问题,KeyarchOS基于Intel DSA的”Memory Fill”能力,实现了内存页的预清零。相比于其他的内存页预清零方案,基于DSA的内存预清零方案可以将相关负载从CPU卸载到DSA中,有效提升应用程序和平台的性能。
DSA是第四代英特尔®至强®可扩展处理器中的一项高性能数据移动和转换加速器技术。它提供了高性能数据移动、数据转换能力,可用于优化高性能存储、网络、持久内存和各种数据处理应用常见的流数据移动和转换操作,目标是为数据移动和转换操作提供更高的整体系统性能,同时释放CPU周期的资源以用于更高级别的功能。
除了基本的数据搬运,Intel DSA还支持内存转换:
1)数据移动: 生成和测试 CRC 校验或数据完整性字段(DIF),用来支持存储和网络应用。
2)内存转换: 内存比较和增量生成/合并,用来支持虚拟机迁移等。
下图给出了基于DSA实现内存预清零的架构。该方案通过在每个Node节点上创建内核线程周期性的对空闲内存进行清零操作,使得在虚拟机启动发生“page fault”时可以跳过耗时较长的清零操作。
内存预清零根据配置的order(该order可以配置,默认为9),遍历每个order上的freelists空闲内存,通过DSA加速,对每个空闲页进行清零操作,并在page的flag上设置清零flag。最后在应用程序申请的内存触发缺页异常并需要对内存进行清零时,会首先判断该页是否已经设置了清零 flag,如果已设置则跳过耗时较长的清零操作。该操作的优点是释放了CPU,减少了CPU的占用。
测试使用KeyarchOS操作系统,分别测试了在开启内存预清零和未开启内存预清零条件下虚拟机的启动时间,同时测试了在虚拟机配置不同大小RAM场景下两者之间的启动时间差异。
测试数据如图所示,测试结果表明在虚拟机在使用透传设备场景中,当虚拟机配置超过64g的内存时,使用DSA之后,虚拟机启动时间有明显提升,提升约3-4倍。
图:不同条件下的虚拟机启动时间
KeyarchOS利用Intel DSA的”Memory Fill”能力,实现了内存页的预清零方案,可以显著加速使用透传设备的虚拟机启动速度。
售前咨询
售后服务
回到顶部