Update README.md
ARM处理器(譬如鲲鹏920)相较于常见的x86处理器,其CPU拓扑结构与NUMA层级相对复杂。在程序启动和运行过程中,需要在调度和内存管理上充分做到NUMA亲和,才能发挥处理器的最大性能。 举例来说,鲲鹏920处理器一个CPU上有2个DIE,每个DIE上有若干个物理core,构成一个NUMA域。在每个NUMA域当中,若干个物理core又进一步组成一个cluster,进一步增强cache亲和性。此外,不同NUMA域之间访问时延也不同。再考虑到多CPU系统,会进一步加剧这种复杂性。 当前较新的Linux内核(6.12+)支持用户态调度(sched_ext),在openEuler 24.03 SP1+上也实现了类似的功能。通过用户态调度机制,允许用户在用户空间动态加载自定义的调度策略,结合NUMA亲和的内存管理(分配、迁移、缓存等),可以对运行的应用实现最佳NUMA亲和的调度与内存管理,提升应用性能。
基于较新的Linux内核(6.12+)或者openEuler 24.03 LTS SP1系统(6.6内核,已实现类似sched_ext的可编程调度机制)和某一款ARM处理器平台作为执行与验收环境 对典型多进程/多线程业务场景,如MySQL,PostgreSQL,Nginx,Redis(6.x+),Spark,Hadoop等,进行性能优化。不对应用进行修改,只能对OS系统进行优化(如果确实涉及到对GCC、JDK等编译器/运行时的合理配置,可酌情适当进行调整) 通过上游Linux内核提供的sched_ext接口或者openEuler提供的可编程调度接口实现用户态自定义调度器,实现业务亲和的自适应调度调优能力 改进系统自带的numa balance工具或者实现新的numa调优工具,结合上述用户态调度机制实现对应用的性能优化 可根据需要对内存管理库进行调优。譬如在glibc自带的内存管理库(ptmalloc)或者tcmalloc、jemalloc上进行改进,进一步提升内存分配、释放、缓存等管理能力 用例要包含物理机、裸机容器,虚机容器场景,要支持测试自动化执行。 需要提供完整的测试报告,包含测试用例、测试方法、调优前后数据对比和等内容
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
赛题题目:基于ARM处理器实现最佳NUMA亲和应用调优
赛题说明:
ARM处理器(譬如鲲鹏920)相较于常见的x86处理器,其CPU拓扑结构与NUMA层级相对复杂。在程序启动和运行过程中,需要在调度和内存管理上充分做到NUMA亲和,才能发挥处理器的最大性能。 举例来说,鲲鹏920处理器一个CPU上有2个DIE,每个DIE上有若干个物理core,构成一个NUMA域。在每个NUMA域当中,若干个物理core又进一步组成一个cluster,进一步增强cache亲和性。此外,不同NUMA域之间访问时延也不同。再考虑到多CPU系统,会进一步加剧这种复杂性。 当前较新的Linux内核(6.12+)支持用户态调度(sched_ext),在openEuler 24.03 SP1+上也实现了类似的功能。通过用户态调度机制,允许用户在用户空间动态加载自定义的调度策略,结合NUMA亲和的内存管理(分配、迁移、缓存等),可以对运行的应用实现最佳NUMA亲和的调度与内存管理,提升应用性能。
赛题要求:
基于较新的Linux内核(6.12+)或者openEuler 24.03 LTS SP1系统(6.6内核,已实现类似sched_ext的可编程调度机制)和某一款ARM处理器平台作为执行与验收环境 对典型多进程/多线程业务场景,如MySQL,PostgreSQL,Nginx,Redis(6.x+),Spark,Hadoop等,进行性能优化。不对应用进行修改,只能对OS系统进行优化(如果确实涉及到对GCC、JDK等编译器/运行时的合理配置,可酌情适当进行调整) 通过上游Linux内核提供的sched_ext接口或者openEuler提供的可编程调度接口实现用户态自定义调度器,实现业务亲和的自适应调度调优能力 改进系统自带的numa balance工具或者实现新的numa调优工具,结合上述用户态调度机制实现对应用的性能优化 可根据需要对内存管理库进行调优。譬如在glibc自带的内存管理库(ptmalloc)或者tcmalloc、jemalloc上进行改进,进一步提升内存分配、释放、缓存等管理能力 用例要包含物理机、裸机容器,虚机容器场景,要支持测试自动化执行。 需要提供完整的测试报告,包含测试用例、测试方法、调优前后数据对比和等内容
评分标准:
赛题联系人:
参考资料:
参赛资源支持:
赛题交流讨论链接: