LWN:代码标记以及内存分配追踪!

Linux内存管理(126):Memory allocation profiling 原理简介 Memory allocation profiling 是 Linux 6.12 中的重要功能。帮助开发者和系统管理员理解内存的使用情况,在MAP 中每一次的内存分配都可以精确地追溯到具体的代码行,可以轻松地识别分配的源头。无论是内核代码还是需要加载的模块代码。 阅读详情

关注了就能看到更多这么棒的文章哦~

Code tagging and memory-allocation profiling

By Jonathan Corbet
May 31, 2023
LSFMM+BPF
DeepL assisted translation
https://lwn.net/Articles/932402/

去年由 Suren Baghdasaryan 和 Kent Overstreet 提出的代码标记机制(code-tagging mechanism)一直是有密集(有时火药味还很浓)的讨论。在 2023 年的 Linux 存储、文件系统、内存管理和 BPF 峰会上,这些讨论也出现在了内存管理的部分,其开发者(Baghdasaryan 亲自参加,Overstreet 远程参加)试图说服与会者,这个方案的优势足够超过损失。

4f3472dd4ca700bc2dc3c787ab1966ef.png

Baghdasaryan 首先说,code tagging 的使用场景是在进行内存分配分析,对所有内核分配进行统计,从而监测使用情况并发现内存泄漏。他说,在这个领域,任何解决方案都必须要有足够低的性能开销,这样才能在生产系统中使用。它还必须能提供足够多的有用信息;两个目标都要实现可能很困难。所提出的方案包含了两个级别,也就是能提供一个低开销的高级别的信息,并在需要时也能得到具体某些调用位置的详细信息。

提出的实施方案里使用了 code tagging,原理上是将一个 struct 注入到特定的代码位置,从而能识别该位置。可以在这些 tag 上附加一些应用相关字段,可以用于内存分配的分析、缺页跟踪(fault tracking)、延迟记录分析等。有一个专门的宏,用来把 struct 放到一个单独的可执行 section,但也需要一些 inline 代码来把结构和调用关联起来。

他说,这种机制的性能开销,在 slab 分配场景下有 36% 的额外开销,对于 page 分配则是 26%。这看起来很高,但他认为,开发者应该要想到,相关位置的代码都经过是高度优化的。启用内存控制组(memory control groups)所增加的开销就是进行 allocation profiling 所引入开销的十倍了。相关的内存空间开销取决于系统中的 CPU 数量;在一个有大约 10000 个内存分配位置的八核安卓设备上,内存开销大约是 0.3%。

从 Baghdasaryan 问在场的开发者是否会使用这个工具开始,原先准备的讨论内容就已经结束了。

Steve Rostedt 说,有人问他是否有可能用静态调用(static call)来更有效地实现 tagging 工作,因为 static call 可以在运行时的时候加上 patch。他说,目前提出的代码标记功能,是需要在一些宏的外面再包上宏,而且必须要给每个需要分析的接口都明确添加。它要将代码注入到每个调用点,这会导致定位方面和性能方面表现都更差。他建议可以用 objtool 创建一个替代方案,因为 objtool 可以找到一个感兴趣的函数的所有调用位置,并在一个单独的部分为每个函数都创建一个跳转点(trampoline)。该 trampoline 将记录好感兴趣的数据,然后调用目标函数。在正常操作中是不会使用这个 trampoline 的;为了打开 monitor 功能,可以在运行时对调用位置打上 patch,以便跳到 trampoline 位置。

Overstreet 回答说,这个解决方案比起用 magic macro 来说更加难弄(magic)一些;Rostedt 回答说,现在 ftrace 和其他一些功能都是这样工作的,已经经过了很好的测试,可以期待它能正常工作。

Overstreet 说,在源代码中放置标注(annotation)是很有价值的;它允许程序员选择哪些功能被标注出来,并成为文档。code tag 还可以用于 fault injection,例如可以编写一个测试,来覆盖每个调用点的错误处理代码。Rostedt 回答说,所有这些也可以在 trampoline 中完成;甚至可以有一个 BPF hook,这样更加灵活。

John Hubbard 说,36%的开销很高了;最好能让人有办法可以去掉这个开销。他说,他更喜欢像 bpftrace 这样的工具所采取的方法,也就是在运行时附加 probe 探针。Overstreet 说,我们不能在运行时启用 counter 且指望它们有任何意义;Baghdasaryan 补充说,如果在启动时不启用 counter 的话,系统会看到在启用监控前分配的内存出现了释放事件,于是可能搞不清楚了。Rostedt 说,这个问题可以通过在启用 monitor 的情况下来启动系统,然后在收集到所需数据后关闭它,就能解决了。

Overstreet 抱怨说,trampoline 的方案,会导致在开启后带来更大的开销;Rostedt 不同意,他指出,trampoline 将以直接跳转(direct jump)的方式进入,所以不会增加额外的函数调用。随后,双方就细节问题进行了长时间的、有时还是很激烈的讨论,在编者看来这并不值得在此复述了。

Michal Hocko 在讨论结束时指出,这些细节并不是当前的重要问题;开发者需要考虑任何一个工具机制的整体设计,并决定哪种机制最好用。Overstreet 这时说,他想在 struct page 上增加一些 counter,从而收集更多的数据,这个说法对他的方案没有带来任何好处,小组也直接拒绝了这个想法。

会议结束时,似乎没有人对会议的进展感到满意。看起来这注定是一场要持续一段时间的对话。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

format,png

DuCut_1794120730156_604.mp4 立即下载

相关推荐

【教育信息化】基于Java+Vue的微证书可信验证系统设计:职业技能成果数字化管理与防伪溯源 项目介绍 基于java+vue的职业技能微证书颁发与可信验证系统设计与实现(含模型描述及部分示例代码)

内容概要:本文介绍了一个基于Java和Vue的职业技能微证书颁发与可信验证系统的设计与实现,旨在解决传统职业证书管理中存在的信息分散、验证困难、易篡改、互认难等问题。系统通过构建统一的微证书业务管理体系,采用SHA-256摘要算法和RSA数字签名技术保障证书内容完整性与签发主体可信性,并结合二维码实现便捷的社会化验证。平台涵盖证书全生命周期管理,支持学习成果积累、能力画像构建及跨机构成果互认,具备完整的前后端分离架构与安全机制,适用于教育、培训与企业人力资源场景。; 适合人群:具备Java与Vue开发基础的软件工程师、高校计算机相关专业学生、职业教育信息化研究人员以及企业HR技术平台开发者。; 使用场景及目标:①实现职业技能微证书的数字化签发与防伪验证;②构建学习者个人能力档案,支持岗位匹配与人才评价;③推动教育机构、行业协会与企业间的技能成果互认与数据共享;④作为毕业设计或企业级认证平台的技术参考原型。; 阅读建议:此资源包含系统模型描述与核心代码示例,建议结合Spring Boot、MyBatis-Plus、JWT、Redis等技术栈进行实践,重点关注证书摘要生成、数字签名验证、权限控制与数据安全设计,并可通过提供的数据生成代码模拟真实业务场景进行测试。

LWN:对内核内存分配进行profiling!

关注了就能看到更多这么棒的文章哦~Memory-allocation profiling for the kernelBy Jonathan CorbetMay 21, 2024LSFMM+BPFGemini-1.5-flash translationhttps://lwn.net/Articles/974380/优化内核的内存使用变得容易很多的前提是,开发者要能对内存的使用情况有准确的了解。然而...

Linux News搬运工 688

结合混合A全局规划与MPC-iLQR执行器噪声和模型不匹配(MATLAB)的差动驱动机器人导航。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

LWN:合入bcachefs!

关注了就能看到更多这么棒的文章哦~Merging bcachefsBy Jake EdgeJune 16, 2023LSFMM+BPFDeepL assisted translationhttps://lwn.net/Articles/934692/bcachefs 文件系统及其推送到 upstream 的过程是 bcachefs 的创建者 Kent Overstreet 在 2023 年 Lin...

Linux News搬运工 1534

中国技术大败局TBL-20261107-238深度解剖报告V2.2 决策迭代版【汽车热管理】基于车速的空调内外循环控制装置:公知技术组合型伪创新专利失效分析

中国技术大败局TBL-20261107-238深度解剖报告V2.2 决策迭代版内容概要:本报告对奇瑞汽车股份有限公司申请的“一种汽车空调内外循环的控制装置及其控制方法”(专利号CN201010100392.0)进行了深度技术解剖与专利失效分析。该专利旨在通过车速信号自动切换空调内外循环,实现低速内循环防尾气、高速外循环引入新风的功能。然而,其技术方案被判定为“控制逻辑型伪创新”,核心逻辑“车速信号→阈值比较→内外循环切换”属于公知技术的常规组合,未提出新的空气质量预测模型、多源信息融合算法或预料不到的技术效果,因而不具备创造性,最终被驳回。报告指出,该专利与奇瑞多项同类专利(如184、186、207、228、231、237号)共同构成“公知信号/逻辑→公知执行器”的系统性低质量专利布局,反映出企业在技术创新路径上的重复性投入与创造性缺失。; 适合人群:企业知识产权负责人(IPR)、研发总监/CTO、投资尽调人员、专利代理机构从业者及技术研发团队。; 使用场景及目标:①识别“公知技术常规组合”类专利的创造性风险,避免无效研发投入;②指导高价值专利撰写,强调多源信息融合、动态优化模型与实证数据支撑;③为投资机构提供技术资产估值与风险甄别依据,区分低壁垒“信号替换”与高壁垒“算法创新”。; 阅读建议:此报告适用于研发与知识产权战略复盘,建议结合模块七“行业启示”与模块八“产业链坐标定位”进行系统性反思,重点关注“判距差”指标与“死海区”定位,推动企业从“功能实现”转向“模型创新”的研发范式升级。

北师大版英语词汇助手练习版-win10-不适用win7

最适合白板下的英语词汇PK工具 【百度网盘APP】北师大版英语词汇助手win10,11版本 3MB 链接:https://pan.baidu.com/s/1VO6vXt-ICCh-kAPstX8LcA  提取码:chen 【百度网盘】北师大版英语词汇助手 win 7,8,10,11可通用 60MB 链接:https://pan.baidu.com/s/15z5YN5GvvAZERqhitQcu1g  提取码:chen

python内存泄漏_诊断和修复Python中的内存泄漏

python内存泄漏Fugue uses Python extensively throughout the Conductor and in our support tools, due to its ease-of-use, extensive package library, and powerful language tools. One thing we’ve learned from ...

cumei1658的博客 1875

改进差分进化算法及其求解柔性作业车间调度问题(Python代码实现)

内容概要:本文系统探讨了改进差分进化算法在求解柔性作业车间调度问题中的应用,并结合Python代码实现,展示了该算法相较于传统方法在全局搜索能力和收敛速度方面的优势。研究不仅聚焦于算法本身的改进策略,如变异、交叉和选择操作的优化,还深入分析了其在复杂制造环境中应对多目标、多约束调度问题的有效性。文中通过标准测试实例验证了算法性能,并与其他智能优化算法进行了对比分析,体现了其在实际工程应用中的潜力。此外,文档还关联了多无人机路径规划、电力系统状态估计、微电网优化、图像与信号处理等多个前沿技术领域,展现了智能优化算法在跨学科工程仿真与决策支持中的广泛适用性。; 适合人群:具备一定编程基础和工程背景,从事智能制造、自动化、工业工程、电气工程、控制科学与工程、计算机科学及相关领域的科研人员、高校研究生及企业研发技术人员。; 使用场景及目标:①为科研工作者提供可复现的智能优化算法代码框架,支持柔性作业车间调度、多无人机协同路径规划、电力系统优化等复杂工程问题的建模仿真;②辅助完成学术论文复现、课程设计、毕业设计或科研项目开发;③推动智能算法在生产调度、能源管理、交通规划等实际场景中的落地应用。; 阅读建议:建议读者结合文中提供的算法原理与代码实现,动手调试并验证不同参数设置对优化结果的影响,同时可参考荔枝科研社提供的完整资源包进行扩展学习与实践,以加深对算法机制与工程应用的理解。

Linus一句话拒绝合并请求!资深维护者被封禁后诉苦:技术争议本就正常!

整理 | 屠敏出品 | 优快云(ID:优快云news)上周,随着 Linus Torvalds 的正式决策,Linux 6.13 版本合并了从内核中删除 ReiserFS 文件系统的补丁,将移除 32.8k 行代码,由此宣告 ReiserFS 正式退出历史舞台。没想到,一个文件系统刚终结,Linux 内核中的另一大文件系统 bcachefs 又出了“乱子”,bcachefs 首席开发者 Ken...

优快云资讯 1万+

复现基于改进秃鹰算法的微电网群经济优化调度研究(Matlab代码实现)

内容概要:本文聚焦于“基于改进秃鹰算法的微电网群经济优化调度”研究,提出一种改进的秃鹰优化算法(IBOA)以解决传统智能优化算法在求解过程中易陷入局部最优、收敛速度慢等问题。通过引入自适应权重、动态搜索机制及种群多样性保持策略,显著增强了算法的全局搜索能力和收敛精度。研究构建了包含光伏发电、风力发电、储能系统、可控负荷及电网交互的微电网群多主体协同调度模型,以系统综合运行成本最小化为目标函数,综合考虑功率平衡、设备出力能力、储能荷电状态、爬坡速率等多种实际约束条件。利用Matlab平台进行仿真验证,并与标准BOA、PSO、GA等经典智能算法进行对比,结果表明所提算法在降低系统运行成本、提高可再生能源消纳率及优化调度效率方面具有明显优势。; 适合人群:适用于具备电力系统基础、优化理论知识及Matlab编程能力的高校研究生、科研人员及从事微电网、综合能源系统优化调度相关工作的工程技术人员。; 使用场景及目标:①用于微电网群或多微网系统的经济调度建模与仿真;②开展新型智能优化算法的设计、改进与性能评估;③支撑含高比例可再生能源的配电系统优化运行决策; 阅读建议:建议结合提供的Matlab代码深入理解算法实现细节与调度模型构建过程,重点分析改进策略对优化性能的影响,并可通过替换场景参数或引入其他算法进行横向对比实验,进一步掌握智能优化在能源系统中的应用方法。【复现】基于改进秃鹰算法的微电网群经济优化调度研究(Matlab代码实现)

改进-基于新扩展移相角下的双有源桥DAB变换器仿真(EPS调制、软开关、最小应力优化)(Simulink仿真实现)

内容概要:本文系统阐述了基于新扩展移相角的双有源桥(DAB)DC-DC变换器的先进仿真研究,聚焦于EPS调制策略、软开关技术实现及最小应力优化控制目标的协同设计。通过Matlab/Simulink平台构建双闭环控制系统模型,深入剖析变换器在高频隔离、双向功率传输场景下的动态响应特性与效率优化机制。该仿真方案复现了顶级EI期刊研究成果,具备高学术参考价值,并集成于一套完整的电力电子与新能源系统仿真资源体系中,涵盖微电网、PWM整流器、LLC谐振变换器、储能管理等多个关键技术方向,配套完整的仿真代码、设计文档与理论资料,支持深度学习与二次开发; 适合人群:面向电力电子、电气工程及其自动化、新能源科学与工程等领域的研究生、科研人员以及从事高性能DC-DC变换器研发的工程师,要求具备扎实的电路理论基础、电力电子拓扑分析能力及一定的Matlab/Simulink仿真实践经验; 使用场景及目标:①深入掌握DAB变换器的核心工作原理及其在EPS调制与软开关协同下的最优控制策略;②支撑高水平科研论文的复现、改进与创新性研究;③服务于硕士课题、博士研究或企业级新能源变换器产品的前期验证与算法开发; 阅读建议:建议结合文中提供的Simulink模型与引用的权威文献进行系统学习,重点理解控制架构设计、参数整定方法与优化算法实现路径,同时可横向对比其他电力电子变换器案例,拓展系统级工程思维与科研创新能力。

深入理解Linux网络技术内幕 P1-P2

细品

西门吹雪 539

2025-E题国一-简易自行瞄准装置:基于嘉立创地猛星/天猛星与K230的视觉巡线云台系统设计

本文详细介绍了2025年全国大学生电子设计竞赛E题一等奖作品——基于嘉立创地猛星/天猛星与K230的视觉巡线云台系统设计。该系统通过地猛星主控实现小车巡线,天猛星主控驱动云台,结合K230开发板的视觉识别能力,构建了一套完整的视觉巡线云台系统,实现了自动巡线与精准瞄准功能。文章深入剖析了硬件选型、双闭环PID控制算法、视觉识别与目标跟踪等核心技术,并分享了系统调试与避坑经验。

weixin_42596011的博客 674

LWN:改进page-fault的可扩展性!

关注了就能看到更多这么棒的文章哦~Improving page-fault scalabilityBy Jonathan CorbetMay 29, 2023LSFMM+BPFDeepL assisted translationhttps://lwn.net/Articles/932298/某些话题总是每年都要回到开发会议上来讨论一次,通常是因为开发人员仍在努力针对某个特定的问题寻找一个可行的解决...

Linux News搬运工 1164

论文浅读之PIP-Net: Patch-Based Intuitive Prototypes for Interpretable Image Classification

这篇文章的主要贡献包括:1 提出了一种新型的可解释图像分类模型PIP-Net,它基于原型部分学习可解释的原型,实现内置解释性。2 PIP-Net采用自监督学习的新正则化方法,学习原型之间的相似性,使得 latent 空间中的相似性能更好地与人类视觉感知相一致,从而减小了所谓的语义差距。3 PIP-Net可解释为一个稀疏的打分表,它可以检测图像是否属于任何类,或是否属于多个类。它也可以对OOD数据进行分类并说“我没有看到过这个”。

qq_49370210的博客 1791

从配置字到实际运动:手把手教你用EtherCAT调试伺服电机的控制模式(以倍福TwinCAT3为例)

本文详细介绍了如何使用EtherCAT调试伺服电机的控制模式,以倍福TwinCAT3为例。从环境搭建、模式配置到状态机切换,提供了完整的操作指南和典型故障排查方法,帮助工程师快速解决‘配置字写入了但电机不转’等常见问题,提升工业自动化现场的调试效率。

weixin_42783709的博客 420

LWN:采用 per-VMA锁进行并发page-fault处理!

并发page-fault处理

m0_51717456的博客 783

嵌入式下载故障排查:ST-LINK与GD32 Programmer典型问题解决

嵌入式固件烧录是MCU开发的关键环节,其本质依赖于调试器(如ST-LINK、GD-Link)与目标芯片间的协议通信、驱动加载及硬件接口协同。原理上,SWD/JTAG协议需在正确时序、电平与供电条件下完成设备枚举、ID读取与Flash编程;技术价值在于保障量产烧录稳定性与调试可重复性;典型应用场景涵盖STM32/GD32教学开发、工业控制板量产调试及Windows 11新系统适配。本文聚焦ST-LINK-V2在Keil MDK中的下载失败和GD32 All In One Programmer的DLL加载异常两

weixin_35006125的博客 153

推荐使用:Tagging - 简易标签库

推荐使用:Tagging - 简易标签库 TaggingA TextView that provides easy to use tagging feature for Mention or Hashtag项目地址:https://gitcode.com/gh_mirrors/ta/Tagging 在 iOS 开发中,实现类似于“@提及”或“#话题”功能时,经常会遇到一些挑战。不过,有了名为 T...

gitblog_00099的博客 343

手把手教你学Simulink——机器人力控场景实例:基于Simulink的永磁同步电机重力补偿力矩控制仿真

本文介绍了基于Simulink的机器人重力补偿力矩控制仿真方法。针对机器人悬停时电机发热、抖动等问题,提出通过前馈补偿重力转矩的解决方案。文章详细阐述了从机器人动力学建模、重力补偿计算、PMSM转矩控制到系统集成的完整实现流程,并以2-DOF机械臂为例验证了补偿效果。结果表明,重力补偿能显著降低电机电流和拖拽力,提高系统柔顺性。文中还提供了高级功能扩展方向,如参数辨识、摩擦补偿等,为实际工程应用提供了参考框架。

MHD0815的博客 154

YOLOv8【第十章:多任务扩展深度篇·第1节】YOLOv8-Seg 实例分割:Mask原型生成与系数预测原理解析!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 1808

阿里内核月报2014年4月

Ideas for supporting shingled magnetic recording (SMR) 在2014年LSF&MM峰会上,Dave Chinner和Ted Ts'o一起主持了一个跨越2天而占用2个时间段的会议。 这个会议的主题是,是文件系统还是块设备层才是支持SMR设备的正确接口。最后,它的讨论范围 有点超出这个主题。 Zon...

weixin_33766805的博客 577

“华为杯”研究生数学建模竞赛2020年-【华为杯】D题:无人机集群协同对抗(附获奖论文和MATLAB代码实现)

1.问题重述摘 要:本文针对非线性约束条件下红蓝双方无人机集群协同对抗的最优规划问题,结合贪婪队形、非线性规划、内点法、蒙特卡洛方法和全联立正交配置有限元法,构建了无人机集群协同对抗推演模型。,构建了。我们综合考虑了,和。首先分析红方在集群约束下的贪婪队形和拦截策略,然后我们基于内点法联合MATLAB和AMPL编程求解蓝方突防的非线性规划解,最后基于蒙特卡洛法对整个蓝方突防过程进行推演,得到突防概率图。通过推演,我们提出了两块的区域作为所求区域,并对蓝方的最优突防策略进行分析。

getusushu的博客 1550

[转]Linux块设备加速缓存bcache和dm-cache:使用SSD来加速服务器

dm-cache 与 bcache在 LSFMM 2013 峰会上,Mike Snitzer, Kent Overstreet, Alasdair Kergon, 和 Darrick Wong 共同主持了一个讨论,内容是关于两个彼此独立的块设备层缓存方案 —— dm-cache 和 bcache。 Snitzer 首先介绍了 3.9 kernel 引入的 dm-cache。这个方案使用率内核中的

heiyeluren的blog(黑夜路人的开源世界) 1万+

戴尔PowerEdge R740服务器安装Debian系统后无法显示磁盘阵列

【代码】戴尔PowerEdge R740服务器安装Debian系统后无法显示磁盘阵列。

路~可以走过 1897

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: LWN:利用SFrame提供更可靠的用户空间调用栈记录!
下一篇: LWN:改进page-fault的可扩展性!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值