Apache Gluten内存泄漏排查:使用Valgrind定位原生代码问题的方法
Apache Gluten内存泄漏排查使用Valgrind定位原生代码问题的方法【免费下载链接】glutenGluten is a middle layer responsible for offloading JVM-based SQL engines execution to native engines.项目地址: https://gitcode.com/GitHub_Trending/glu/glutenApache Gluten作为将JVM-based SQL引擎执行卸载到原生引擎的中间层其内存管理对系统稳定性至关重要。原生代码内存泄漏可能导致Spark Executor因内存超限被杀死本文将介绍如何使用Valgrind工具快速定位Gluten项目中的C内存泄漏问题。内存泄漏的常见表现与危害在Gluten中内存泄漏通常表现为Spark Executor进程异常退出并提示内存超限长时间运行任务后OffHeap内存持续增长间歇性OOM错误且难以复现特别是当原生内存不受Gluten管理时传统Java内存分析工具无法捕获泄漏点此时需要Valgrind等原生代码调试工具介入。Valgrind工具准备与环境配置安装Valgrind在Ubuntu/Debian系统中通过apt直接安装apt install valgrind对于CentOS/RHEL系统yum install valgrind编译调试版本的Gluten为获得准确的内存泄漏追踪信息需要编译包含调试符号的Gluten原生代码# 编译Velox后端并启用测试和调试模式 gluten_home/dev/builddeps-veloxbe.sh --build_testsON --build_benchmarksON --build_typeDebug使用Valgrind检测内存泄漏的步骤编写针对性的单元测试根据docs/developers/NewToGluten.md建议创建GoogleTest测试用例来隔离可能存在泄漏的代码路径。例如创建exec_backend_test测试可执行文件专注测试 shuffle 或计算逻辑。执行Valgrind内存检查使用Valgrind的memcheck工具运行测试valgrind --leak-checkyes ./exec_backend_test关键参数说明--leak-checkyes启用内存泄漏检测--show-reachableyes显示可达内存块潜在泄漏--track-originsyes追踪未初始化值的来源分析Valgrind输出结果Valgrind会生成详细的内存泄漏报告包括泄漏内存总量和块数每个泄漏点的调用栈内存分配位置和大小典型的泄漏报告类似12345 LEAK SUMMARY: 12345 definitely lost: 1,024 bytes in 4 blocks 12345 indirectly lost: 4,096 bytes in 16 blocks 12345 possibly lost: 0 bytes in 0 blocks 12345 still reachable: 8,192 bytes in 32 blocks 12345 suppressed: 0 bytes in 0 blocks结合内存分析工具定位问题使用gperftools生成内存使用热力图Gluten项目推荐使用gperftools辅助内存分析通过以下命令生成内存使用GIF图pprof --show_bytes --gif --lib_prefix/path/to/gluten_lib_prefix /usr/bin/java /path/to/gluten_heap_perf_XXX result.gif图1使用gperftools生成的内存分配热力图可直观展示内存使用热点分析内存分配文本报告通过文本模式查看详细内存分配统计pprof --text --lib_prefix/path/to/gluten_lib_prefix /usr/bin/java /path/to/gluten_heap_perf_XXX图2内存分配统计报告显示各函数内存分配占比常见内存泄漏场景与解决方案场景1Arrow内存分配器泄漏当看到类似以下日志时WARN ArrowBufferAllocators$ArrowBufferAllocatorManager: Detected leaked Arrow allocator [Default], size: 191...可启用Arrow内存调试-Darrow.memory.debug.allocatortrue场景2C对象未正确释放通过Valgrind定位到具体泄漏函数后检查是否所有new分配的对象都有对应的delete智能指针使用是否正确如std::unique_ptr/std::shared_ptr资源获取即初始化(RAII)模式是否被遵守场景3JNI层内存管理不当检查JNI接口实现jobject引用是否正确释放原生内存是否通过NewGlobalRef/DeleteGlobalRef管理避免在JNI回调中分配长期内存验证修复效果修复后应重新编译调试版本再次运行Valgrind检查确认泄漏已解决执行端到端测试确保功能正常使用jemalloc生成内存快照进行对比jeprof --text --lib_prefix/path/to/gluten_lib_prefix /usr/bin/java /path/to/gluten_heap_perf_XXX总结使用Valgrind配合gperftools和jemalloc能有效定位Gluten项目中的原生代码内存泄漏问题。关键步骤包括编译调试版本代码编写针对性测试用例分析Valgrind泄漏报告结合内存分析工具可视化问题验证修复效果通过这套方法论可以显著提升Gluten的内存管理质量避免因内存泄漏导致的生产环境故障。完整的内存调试文档可参考docs/developers/ProfileMemoryOfGlutenWithVelox.md。【免费下载链接】glutenGluten is a middle layer responsible for offloading JVM-based SQL engines execution to native engines.项目地址: https://gitcode.com/GitHub_Trending/glu/gluten创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

recon-skills实战:10个必学的Web漏洞检测技术(CORS/XSS/SQLi全涵盖)

recon-skills实战:10个必学的Web漏洞检测技术(CORS/XSS/SQLi全涵盖)

recon-skills实战:10个必学的Web漏洞检测技术(CORS/XSS/SQLi全涵盖) 【免费下载链接】recon-skills Recon & pentest skill pack. CORS, XSS, SQLi, SSRF, RCE, WordPress, MCP, cloud, subdomain takeover, and more. Field-tested. MIT…

2026/7/27 17:46:34阅读更多 →
ChatLab与外部AI协作:让Claude/Codex直接查询你的聊天记录

ChatLab与外部AI协作:让Claude/Codex直接查询你的聊天记录

ChatLab与外部AI协作:让Claude/Codex直接查询你的聊天记录 【免费下载链接】ChatLab Local-first chat history analyzer with AI. | 本地优先的 AI 聊天记录分析工具 项目地址: https://gitcode.com/ChatLab/ChatLab ChatLab是一款本地优先的AI聊天记录分析…

2026/7/27 17:44:34阅读更多 →
我用「一句话需求」让AI帮我写了个完整游戏——AiPy实战全记录

我用「一句话需求」让AI帮我写了个完整游戏——AiPy实战全记录

一、从「我不会编程」到「我做出了游戏」 如果你问我,2025年最让我震撼的技术产品是什么,我的答案不是某个大模型的新版本,而是一个叫AiPy的工具。 事情要从两周前说起。作为一个产品经理,我脑子里经常冒出各种小游戏的点子——一…

2026/7/27 17:44:33阅读更多 →
JAVA毕设项目:基于Web的数字化二手物品交易归档管理系统 简易化线上二手交易服务平台设计 (源码+文档,讲解、调试运行,定制等)

JAVA毕设项目:基于Web的数字化二手物品交易归档管理系统 简易化线上二手交易服务平台设计 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 19:00:42阅读更多 →
SSM毕设项目: 基于SSM的精益研究课题全过程管理系统企业精细化管理课题运维分析系统设计 (源码+文档,讲解、调试运行,定制等)

SSM毕设项目: 基于SSM的精益研究课题全过程管理系统企业精细化管理课题运维分析系统设计 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 19:00:42阅读更多 →
【Bug已解决】RuntimeError: shape mismatch during KV cache init with EP + DP on MoE model 解决方案

【Bug已解决】RuntimeError: shape mismatch during KV cache init with EP + DP on MoE model 解决方案

【Bug已解决】RuntimeError: shape mismatch during KV cache init with EP DP on MoE model 解决方案 一、现象长什么样 在一个启用「专家并行(EP) 数据并行(DP)」的 MoE 模型上初始化 KV 缓存时,引擎启动阶段抛出 R…

2026/7/27 19:00:42阅读更多 →
Rust的错误处理

Rust的错误处理

概述 Rust 偷师 Haskell&#xff0c;构建了对标Maybe的Option 类型和对标Either 的Result 类型Option 和 Result Option 是一个 enum&#xff0c;其定义如下 pub enum Option<T> {None,Some(T) }它可以承载有值 / 无值这种最简单的错误类型 Result 是一个更加复杂的 enum…

2026/7/27 19:00:42阅读更多 →
RUST 静态生命周期和动态生命周期

RUST 静态生命周期和动态生命周期

图例分配在堆和栈上的内存有其各自的作用域&#xff0c;它们的生命周期是动态的 全局变量、静态变量、字符串字母量、代码等内容&#xff0c;在编译时&#xff0c;会被编译到可执行文件中的 BSS/Data/RoData/Text 段&#xff0c;然后在加载时&#xff0c;装入内存 因而&#xf…

2026/7/27 19:00:42阅读更多 →
计算机毕业设计之基于SpringBoot的高校运动会管理系统的设计与实现

计算机毕业设计之基于SpringBoot的高校运动会管理系统的设计与实现

本研究致力于构建一种基于springboot的高校运动会管理系统&#xff0c;在开发本系统之前。本人通过学校老师、同学、图书馆的大量走访&#xff0c;通过了解相关的开发语言&#xff0c;以及对介绍了系统的分析与设计过程中&#xff0c;且仔细的概括了系统在开发后进行多次运行与…

2026/7/27 18:58:42阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

&#x1f539; 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具&#xff0c;凭借本地离线运行、可视化图形操作和任务自动化三大核心特性&#xff0c;赢得了众多用户的青睐。与普通在线对话AI工具不同&#xff0c;它属于能够直接操控本机软硬件的智能数字员工…

2026/7/27 1:14:34阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接&#xff0c;是用激光束对阀座壳体&#xff08;通常为不锈钢或铝合金&#xff09;进行密封焊接&#xff0c;使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/27 1:14:52阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX&#xff1a;三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/27 1:14:56阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述&#xff1a;从寄存器手册到实战指南 如果你手头有一份类似德州仪器&#xff08;TI&#xff09;TMS320x240xA系列DSP的SPI模块技术手册&#xff0c;看着里面密密麻麻的寄存器位定义、时序图和公式&#xff0c;是不是感觉头大&#xff1f;这份资料虽然权威&#xff0…

2026/7/27 0:00:24阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2026/7/27 0:00:24阅读更多 →
2007-2023年各市区县生态文明建设示范区DID

2007-2023年各市区县生态文明建设示范区DID

数据简介 自改革开放以来&#xff0c;我国依赖高投入、高资源消耗和高污染等传统发展模式实现了经济短期内的快速增长&#xff0c; 然而这也导致了严重的生态环境危机。因此&#xff0c;国家有力于推动企业高质量经济发展&#xff0c;协同生态保护的方针&#xff0c;从而从201…

2026/7/27 0:00:24阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/27 16:57:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →