新闻动态
当前位置:首页 > 新闻动态
实践:KeyarchOS基于Intel第六代处理器的性能优化实践
2025-03-21

本文在浪潮信息云峦服务器操作系统KeyarchOS(简称KOS)环境下,对Intel第六代处理器的性能进行了应用验证。随着云计算、大数据、人工智能等技术的快速发展,数据呈现出爆发式增长趋势,同时驱动着算力持续提升,然而,传统DRAM并未实现同步扩展以满足应用需求,应用对内存容量和带宽不断提高的需求,推动着内存扩展技术不断发展,在此背景下,CXL成为解决内存扩展瓶颈的最有前景的技术;与DRAM内存相比,扩展内存面临高延迟、低带宽的技术挑战,为了解决这些挑战,分层内存技术应运而生。

背景

随着人工智能与大数据等技术的快速发展,用户对服务器性能的需求日益提升。服务器性能的提升不仅需要CPU等关键硬件的不断创新,同时也离不开操作系统层面的优化。本文将介绍KOS在Intel第六代处理器上进行的性能优化实践。

简介

英特尔®至强® 6能效核处理器架构中,L2缓存是在一组核心之间共享的,而不是专属于某个核心。这种设计有助于提升缓存利用率和系统的整体性能。但这种设计可能会造成L2缓存过载,即多个核心同时访问一个L2缓存的情况。

英特尔® 至强® 6 处理器采用了多核架构,多核架构可以将计算任务分配到多个独立的核心上,能够显著提高系统的并行处理能力和多任务处理能力,同时提高性能。但多核架构下,不同核心访问同一缓存行中的数据时可能会导致不必要的锁争用,从而影响性能,这种影响性能的现象也称为伪共享(False sharing)。

优化实践

针对以上两点,KOS基于英特尔第六代处理器进行了CPU调度以及伪共享两方面的优化。首先对于CPU调度优化:

如图1所示,由于英特尔® 至强® 6 能效核处理器的四个Core组成一个集群共享L2缓存,在优化前进行任务分配时,可能会把任务集中调度在一个集群中执行,这样会造成每个Core对L2缓存的争用,影响性能。通过优化集群调度器,新增相关宏定义来标识哪些Core属于同一个集群等方式,在任务分配时会优先考虑CPU的拓扑结构,将任务分散在每个集群中,实现负载均衡,从而避免了对L2缓存的争用。

1.png

图1:多核集群调度优化示意图

伪共享过于抽象?请看实例,如图2,当第一个Core修改缓存行中(左上)的X变量时,L3缓存也随之失效,因需要保证缓存一致性,第二个Core中缓存行(右上)也需要重新从内存中加载,一定程度上降低了系统性能。

造成以上缓存一致性的原因是由于全局计数器是一个所有CPU都能访问的共享变量,多个CPU尝试同时更新这个计数器时,就需要某种形式的同步机制(如锁)来确保数据的一致性。通过新增两个本地接口percpu_counter_add_local和percpu_counter_sub_local,可以让每个CPU独立的在自己本地(CPU的私有区域)对计数器进行操作,而不需要立即与全局计数器同步,从而避免了争用,有利于提升性能。

2.png

图2:伪共享现象示意图

优化前后性能对比

对于CPU调度优化,通过SPEC CPU基准测试验证优化前后的性能,在任务副本数分别是4、16、32、64时SPEC CPU的BASE值最高提升了23%,PEAK值最高提升了29%。

3.png

图3:调度优化前后 SPEC CPU 测试性能对比

此外,在Nginx服务中验证了CPU调度优化效果,使用WRK工具进行HTTPs基准测试,通过优化KOS和CPU配置,Nginx服务器在线程数为32时,HTTP每秒传输数据量提升了8.13%。

4.png

图4:调度优化前后在不同线程下的 Nginx 服务器性能对比

对于伪共享的优化,通过Stress-ng和unixbench测试,验证了其性能和稳定性。stress-ng场景下,测试项Semaphores和System V Message Passing的执行结果表明,KOS在高负载条件下,对信号量的处理能力提升2.29倍,消息队列处理性能提升2.75倍。Unixbench场景下,测试项Pipe-based Context Switching的执行结果表明,KOS在处理进程上下文切换时的性能相比优化前提升了12.21倍。

5.png

图5:伪共享优化前后stress-ng和Unixbench 场景下的性能对比

总结

经上述对比测试的执行结果表明,KOS针对英特尔®至强® 6处理器进行的两方面的性能优化有助于提高系统的性能,增强多核处理器在高并发环境下的处理能力。

关注我们

Copyright © 2024 浪潮信息 鲁ICP备13028953号-12

售前咨询

售后服务

回到顶部

回到顶部

售前咨询
售后服务