带你读《2022龙蜥社区全景白皮书》——5.3.4 跨处理器节点内存访问优化

简介: 带你读《2022龙蜥社区全景白皮书》——5.3.4 跨处理器节点内存访问优化

5.3.3 数据库/JAVA等高性能场景中的内存优化


背景概述


在处理器内存缓存层级结构中,iTLB miss性能指标对访存优化至关重要,并且在ARM平台上优化效果更为明显。 在数据库/JAVA 等高性能场景中,iTLB miss可以成为影响性能的主要因素,我们通过实验观察到iTLB miss引入的CPU停顿时间最高 占任务运行时间的~13%。优化iTLB miss的手段很多,主要分为两类。一类是优化代码段布局,例如hfsort/gold linker、BOLT、 PGO,缺点是不通用;一类是使用大页映射代码段,例如静态大页 (hugetlbfs)、共享内存大页 (shmem),缺点是调试信息缺失, 需要额外运维等。


通用透明的方案需要基于文件透明大页来实现。社区Linux内核从5.4合入READ_ONLY_THP_FOR_FS特性,支持普通二进制文件的代码段部分映射文件透明大页;并通过写文件时清空文件缓存来规避写文件透明大页的问题。但仍有如下两个缺点。

- 应用程序需要主动通过madvise系统调用来使能代码段映射文件透明大页;

- 共享库、PIC/PIE(位置无关二进制文件)代码段的映射地址通常不能2M对齐,导致不能映射文件透明大页。



技术方案:透明代码大页(Hugetext)

我们给出透明代码大页的方案(Hugetext),提出四点优化和改进。如图5.3.3-1所示。

1. 检测可执行文件加载/映射,分配地址2M对齐,自动使能普通二进制、共享库、PIC/PIE(位置无关二进制文件)的代码段映射文件透明大页;

2. 检测匿名可执行代码 (例如JAVA code cache),提供开关自动映射匿名透明大页;

3. 相比普通透明大页,内核khugepaged线程优先整理可执行文件透明大页,达到加速效果;

4. 对于大小不足2M的代码段,通过补齐映射地址空间,增加文件透明大页的覆盖率。


image.png


应用场景及性能收益


本地测试中,某ARM平台上数据库类业务(例如MySQL),Hugetext可以提升性能5-12%;某ARM平台上JAVA类业务(例如Spring),Hugetext可以提升性能4-13%。

真实业务场景中,例如某ARM平台上MySQL/PostgreSQL业务,Hugetext可以带来6+%的端到端性能提升。

Hugetext特性也在Linux内核社区和Glibc社区回馈了开源补丁,增强了稳定性,修正了代码段地址映射问题。



相关文章
|
2月前
|
机器学习/深度学习 算法 PyTorch
125_训练加速:FlashAttention集成 - 推导注意力优化的独特内存节省
2025年,大型语言模型的训练面临着前所未有的挑战。随着模型参数量和序列长度的不断增加,传统注意力机制的内存瓶颈问题日益突出。FlashAttention作为一种突破性的注意力算法,通过创新的内存访问模式和计算优化,显著提升了训练效率和内存利用。
|
2月前
|
存储 机器学习/深度学习 PyTorch
119_LLM训练的高效内存管理与优化技术:从ZeRO到Flash Attention
大型语言模型(LLM)的训练面临着前所未有的计算和内存挑战。随着模型规模达到数百亿甚至数千亿参数,高效的内存管理成为训练成功的关键因素之一。2025年,LLM训练的内存优化技术已经取得了显著进展,从ZeRO优化器到Flash Attention等创新技术,为训练超大规模模型提供了可能。
|
3月前
|
Ubuntu Java 物联网
Java原生结合MQTTX,完成心跳对话
简介:本文带你用Java结合MQTT协议与EMQX服务器,在Ubuntu上实现两个程序的“隔空传话”。通过搭建消息代理、编写发送/接收代码,让Java应用实现实时通信,附完整源码与调试技巧,轻松掌握物联网通信核心技能。✨
284 2
|
4月前
|
边缘计算 算法 Java
Java 绿色计算与性能优化:从内存管理到能耗降低的全方位优化策略与实践技巧
本文探讨了Java绿色计算与性能优化的技术方案和应用实例。文章从JVM调优(包括垃圾回收器选择、内存管理和并发优化)、代码优化(数据结构选择、对象创建和I/O操作优化)等方面提出优化策略,并结合电商平台、社交平台和智能工厂的实际案例,展示了通过Java新特性提升性能、降低能耗的显著效果。最终指出,综合运用这些优化方法不仅能提高系统性能,还能实现绿色计算目标,为企业节省成本并符合环保要求。
178 0
|
5月前
|
存储 人工智能 API
AI代理性能提升实战:LangChain+LangGraph内存管理与上下文优化完整指南
在AI代理系统开发中,上下文工程成为提升系统性能的关键技术。本文探讨了从提示工程到上下文工程的转变,强调其通过为AI系统提供背景信息和工具支持,显著提升智能化程度和实用价值。文章系统分析了上下文工程的理论基础、核心策略(如写入、选择、压缩和隔离),并结合LangChain和LangGraph工具,展示了如何实现上下文工程技术以优化AI代理性能。通过Scratchpad机制、内存管理、RAG系统集成、多代理架构及沙盒环境等技术手段,开发者可以更高效地构建高性能、可扩展的AI系统。
595 0
AI代理性能提升实战:LangChain+LangGraph内存管理与上下文优化完整指南
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
196 1
|
2月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
218 1
|
3月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
169 0
|
3月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
276 16