LWN:改进内存管理相关的文档!

Ceres Solver:从入门到使用 Ceres Solver是谷歌开源的C++非线性优化库,能够解决有约束或无约束条件下的非线性最小二乘问题。2010年之后大量的运用在谷歌的产品开发中,尤其在谷歌开源的cartographer中被大量的使用。 ceres可以在Linux,Windows,macOS,Andrioid,IOS系统进行安装使用,详情可查看下方的官网链接。 Ceres Solver 官网:http://ceres-solver.org/ 阅读详情

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

Improving memory-management documentation

By Jonathan Corbet
May 10, 2022
LSFMM
DeepL assisted translation
https://lwn.net/Articles/894374/

如同内核的大部分内容一样,内存管理子系统的文档是不太够的,而且大部分现存文档也不完全是符合最新情况的。在 2022 年的 Linux 存储、文件系统、内存管理和 BPF 峰会(LSFMM)上,Mike Rapoport 主持了一个关于内存管理的文档的会议,以及如何改进它。这成功地重新激发了人们对文档的兴趣,但只有时间才能证明这些兴趣会带来什么实际的改进。

Rapoport 首先指出,几年前,他对内存管理相关文档的现状进行了仔细的检查。他发现的情况可以被总结为 "Mel's book and some text files"。这本书是 Mel Gorman 的 Understanding the Linux Virtual Memory Manager,它让人们想起了许多古老的 Unix 书籍:基本概念在很大程度上都是仍然适用的,但细节都已经过时了,也就是有问题的。有许多重要的内存管理功能如 transparent huge page 根本就没有提到。

024c7fdf3462550afec79952ea7956e8.png

关于内核 documentation 目录中的文本文件,Rapoport 努力将它们转换为 restructured 格式的文本,并将它们整合到内核的文档系统中,在这个过程中进行了一些非常需要的重新组织。他增加了更多一些内部 API 的覆盖,但仍有很多需要改进的地方。因此,他问道,怎样才能改进文档,并鼓励人们编写更多的文档?

他继续说,有一个主意是让 reviewer 在 review 内存管理 patch 时,要注意 review 相关的文档。他一直在朝这个方向努力,但还没有看到其他 reviewer 效仿。Matthew Wilcox 插了一句说,maple tree patch 都有很好的文档。Rapoport 同意,但他说这并不能改变内存管理社区还有很多 "部落知识(tribal wisdom)" 尚未以书面形式存在的事实。

另一位开发者指出,文档可以在两个不同的地方找到:在代码中,以及在内核的文档目录(Documentation/)下。他说,后者的文档并不尽如人意。有一些部分是用清晰的叙述文件(narrative)写的,但它混杂在 "噪音和写得不好的内容" 中。渲染生成的文档,将代码中的 kerneldoc 注释提取到了独立的文件中,这会把所有的东西混杂在一起,会让人难以使用。Andrew Morton 说,Documentation/ 适合存放面向用户的文档材料,但是其他情况下,应该在 code 里面来寻找文档。

作为 Documentation 目录的维护者,我这时候觉得有必要插一句了。我必须得对 Morton 的论调表示反对,我不赞同他说的独立文档只对最终用户有好处。有很多信息是跟开发者相关的,但这些信息并不适合在 kerneldoc 注释中出现,而且很难采用 kerneldoc 注释方式在代码中讲述一个连贯的故事。认为代码中的注释会比专门的文档能得到更好的维护的想法,最起码来说也是与现实不相符的。

在文档的组织方面,确实可以把介绍性的(introductory)以及上下文(contextual)信息放到 kerneldoc 注释中,并从这些注释中产生一个跟代码一致性很好的手册,但还是必须要为此做出额外努力了,而且最终结果只能在 build 系统完成文档生成之后才会出现在文档中,并不是存放在代码中。DRM 文档是一个很好的例子,这足以说明当开发者投入精力时,可以做什么。

确实文档组织工作一直是个问题;当我成为文档维护者时,内核的文档目录是一个看起来很随意的各种独立文件的集合。多年来,从事文档工作的开发人员一直在努力对这些材料进行更好地组织整理,关注重点是文档的读者是谁。因此,就出现了核心 API 手册、用户空间 API 指南、维护者手册以及其他一些手册。这虽然只是先创造了一堆文件较小的、无良好组织起来的、经常是过时的材料,但这是一个开始。可惜人们很少有时间去尝试改进这些手册,或者把每个手册变成一个连贯的文件,而不是像现在这样的所有关联文件的集合。

Wilcox 提到 Neil Brown 的 readahead 文档则刚好是个例子,代表了另一类问题。新增的文档 "90%是正确的";Wilcox 应该是 review 过的,但没有被 copy 过,因为找不到是什么时候了。他认为 Brown 在做这些工作时没有使用代码中已经存在的文档,这让人感到沮丧。

一个反复出现的话题是,没有足够的人有时间和专业知识来做文档工作;应该鼓励开发者们去游说他们的雇主来支持这项工作。Michal Hocko 说,你不能随便找 "任意一个技术作家" 来写内存管理的文档;要写出有用的文档,会需要很多知识,所以需要有经验的人去写。Brown 的方法很好,因为他是使用这个接口的专家级用户,可以通过这些经验来审视和撰写。同时,Hocko 说,他在寻找文档时一般避免翻阅代码,而是查找 LWN 的档案。

我同意 Hocko 的观点,但不得不补充说,写文档是获得所需专业知识的一个好方法。我所知道的很多东西都是在从事 Linux 设备驱动工作时学到的;可以说,我在开始那个项目时并没有相关能力资格。

Davidlohr Bueso 声称,内核中最好的文件,也是其他人应该效仿的文件,是知名度很高的 memory-barriers.txt。它是由具有高水平的专业知识的开发人员所编写的,内容清晰,并得到了积极的维护;即使是新手也能从中得到一些收获。Johannes Weiner 说,memory-barriers.txt 的优点之一是,该文件从一开始就有一个很好的结构;这使得其他人来补充内容时就相对容易了。内存管理子系统需要有人来创建一个类似的文档结构。

Dan Williams 问道,内存管理文档的近期重点应该是什么,Rapoport 是否有计划要处理哪几个具体的 API 了?Rapoport 回答说,他的目标是使文档总体上更好,以便其他人能够理解 Linux 内存管理的工作方式。Williams 说这是 "一个很好的 mission statement",但他更想看到的是一个有可操作的任务。Rapoport 建议以 speculative page fault 或 multi-generational LRU(这两个都还尚未合入 mainline)来开始。

Kent Overstreet 说,开发人员在代码 review 期间经常不会提出文档,而且子系统中没有一个人对文档应该是什么样子有一个总体一致的概念。Liam Howlett 说,作为一个新上手进行内存管理的开发人员,他遇到了许多他不理解的功能。当他修改代码时,他试图改进其文档。他特别提到了 find_vma(),这个函数的行为与它的名字或文档并不相符。

David Hildenbrand 问道,一般来说,内存管理需要什么文件。Rapoport 回答说,他希望首先在 admin guide 里面能看到更多的材料,最好是关于系统工作方式的一个总体概述。改进 kerneldoc 的注释在他的清单上则排在较后的位置,但这却也是比较容易做到的任务。会议围绕是更需要内部文档还是更需要面向用户的文档进行了一些讨论。有人建议,也许开发者对一些内部 API 进行的说明有些过多了,导致用户在他们其实不应该使用这些功能的时候使用了它们。

在会议结束时,Wilcox 建议,好的做法是,首先以 Gorman 的书为指导,创建一个新的内存管理文档,并自告奋勇来做这个工作。那本书的结构很明显得到了读者们的认可,那么从这个结构开始就可以解决文档组织结构的问题,并使开发人员容易改进。可以按照这个思路来创建一个 ReStructured Text 文件,并将现有的文档放入其中适当的地方。大家普遍认为这是一件好事。毫无疑问,有一个愿意采取起始步骤的开发者的存在,对这件事就是有巨大帮助的。此后,Wilcox 发布了新的文档结构的初始版本来供大家 review。

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

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

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

4a23f6b939c80431c959e8ba6cb1935d.png

基于YOLOv11的无人机目标检测系统:实现drone、bird、aircraft多类别识别 采用改进的YOLOv11网络结构,平衡检测精度和速度融合VisDrone和UAVDT数据集,增强模型泛化能力设计多尺度特征融合模块,提升小目标检测性能开发直观的UI界面,便于实际部署和应用。 阅读详情

相关推荐

matlab/simulink saw谐振器仿真,基于Matlab的SAW模态耦合模型的仿真研究

第32卷 第 4 期Vol. 32 No. 4重 庆 理 工 大 学 学 报 (自然科学)Journal of Chongqing University of Technology( Natural Science)2 0 1 8年 4 月Apr. 2018doi : 10.3969/j . issn. 1674-8425(z). 2018.04.002本文引用格式 :李志鹏,马龙祥,孟旭,等•基...

weixin_36192634的博客 1385

LWN:分层内存的主动回收及其他!

关注了就能看到更多这么棒的文章哦~Proactive reclaim for tiered memory and moreBy Jonathan CorbetMay 13, 2022LSFMMDeepL assisted translationhttps://lwn.net/Articles/894849/Linux 中的内存回收(memory reclaim)基本上是采...

Linux News搬运工 592

【两方演化博弈代码复现】:双方演化博弈的原理、概率博弈仿真、相位图、单个参数灵敏度演化

演化博弈论是研究个体在特定环境中如何通过策略选择与其他个体进行互动的学科。这一理论在生物学、经济学和社会科学等多个领域都有广泛应用。本文将深入探讨双方演化博弈的原理及其过程,并解读一段 MATLAB 代码,展示如何模拟这一过程。

当回首往事的时候,不会因虚度年华而悔恨,也不会因碌碌无为而羞愧。 6198

[转]LWN:回收未用的页表页的多种方法

Ways to reclaim unused page-table pages By Jonathan Corbet May 9, 2022 LSFMM DeepL assisted translation https://lwn.net/Articles/893726/ 内存管理子系统最重要的工作之一就是回收未使用(或很少使用)的内存,能够更好地利用内存。但是,如果涉及到内存管理的核心数据结构之一——页表(page table)的时候,这个子系统往往无法处理好。在 2022 年的 Linux 存储、文件系

m0_51717456的博客 267

StarWind V2V Converter v9 虚拟磁盘转换工具使用教程 (转)

StarWind V2V Converter v9.0.1.268 是一款免费的虚拟磁盘转换工具,支持不同管理程序间的虚拟机镜像格式转换,包括VMDK、VHD/VHDX、IMG和QCOW2等格式。该工具具有窗口修复模式、零拷贝转换和管理程序切换等特色功能,能够轻松实现物理机到虚拟机的转换,并兼容主流管理程序如Hyper-V、ESXi等。使用教程详细介绍了从本地文件选择到格式转换的完整操作流程,转换过程简单高效且不影响原虚拟磁盘数据。

hsh的专栏 1478

【WorkBuddy专栏25】如何选择大模型——积分消耗、用途场景、选型决策全指南

【WorkBuddy专栏25】如何选择大模型——积分消耗、用途场景、选型决策全指南

AI人人懂 931

LWN:多代LRU方案的未来!

关注了就能看到更多这么棒的文章哦~Multi-generational LRU: the next generationBy Jonathan CorbetMay 24, 2021Deep...

Linux News搬运工 1242

恶劣天气下的分割鲁棒性:雨雪雾干扰消除

恶劣天气下的分割鲁棒性:雨雪雾干扰消除​ ,人工智能,计算机视觉,大模型,AI,本文围绕恶劣天气下语义分割鲁棒性及雨雪雾干扰消除展开,分析了雨雪雾对图像和分割任务的影响,介绍了基于图像增强、深度学习等现有解决方法,以及针对不同干扰的具体方案,还探讨了提高分割鲁棒性的策略、实验评估情况,指出当前面临复杂天气、数据缺乏、实时性等挑战,并展望了端到端模型、无监督学习等未来发展趋势,为该领域研究提供了全面参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 17万+

LWN:LSFMM 远程参会的体验!

关注了就能看到更多这么棒的文章哦~Remote participation at LSFMMBy Jake EdgeJune 15, 2022LSFMMDeepL assisted translationhttps://lwn.net/Articles/897915/和近期进行的许多其他会议一样,2022 年的 Linux 存储、文件系统、内存管理和 BPF 峰会(LSF...

Linux News搬运工 427

Arcgis使用NDVI值遥感反演叶面积指数(LAI)

经验模型反演操作不难,主要是要多看文献,了解公式。本文中的公式我也不清楚是哪个作物的NDVI和LAI的关系(别人提供的),继续看文献整理吧。后续会在下面罗列更新一下主要公式。

所有专家都曾始于新手 8429

YOLOv11涨点改进 | 全网独家创新,注意力改进篇 | TGRS 2025 | 引入APCM自适应像素级协同机制,动态增强目标区域、抑制背景噪声,助力YOLOv11做红外小目标检测有效涨点

本文提出了一种基于APCM模块改进的YOLOv11网络模型,通过像素级局部-全局协同建模增强目标特征并抑制背景噪声。APCM模块采用轻量化设计,无需复杂参数,能有效提升小目标检测性能。文章详细介绍了APCM的原理、优势及其在红外小目标检测中的应用,包括模块结构、核心代码实现和YAML配置文件修改方法。实验结果表明,该方法在NUAA-SIRST和IRSTD-1K数据集上优于现有技术,显著提高了复杂场景下的检测精度与鲁棒性。

Ai缝合怪、助力小伙伴高效发论文 116

LWN:关于内存管理部分开发流程的变动!

关注了就能看到更多这么棒的文章哦~The state of memory-management developmentBy Jonathan CorbetMay 10, 2022LSFMMDeepL assisted translationhttps://lwn.net/Articles/894378/2022 年的 Linux 存储、文件系统、内存管理和 BPF 峰会(...

Linux News搬运工 355

【WRF-Urban】使用 NUDAPT 数据集与 BEP/BEP_BEM 方案的 WRF 配置指南

【WRF-Urban】使用 NUDAPT 数据集与 BEP/BEP_BEM 方案的 WRF 配置指南

WW、forever的博客 1964

LWN:内存管理的文档工作以及开发流程!

关注了就能看到更多这么棒的文章哦~Memory-management documentation and development processBy Jonathan CorbetJune 2, 2023LSFMM+BPFDeepL assisted translationhttps://lwn.net/Articles/932398/随着 2023 年 Linux 存储、文件系统、内存管理和 B...

Linux News搬运工 1163

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LWN: FreeBSD已经26周年啦!

点击上方蓝色字关注我们~FreeBSD turns 26June 21, 2019This article was contributed bySean KernerF...

Linux News搬运工 548

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

LWN:实现maple tree!

关注了就能看到更多这么棒的文章哦~Introducing maple treesFebruary 12, 2021This article was contributed by Marta...

Linux News搬运工 4048

LWN:使用BPF来选择OOM kill的对象!

关注了就能看到更多这么棒的文章哦~Out-of-memory victim selection with BPFBy Jonathan CorbetAugust 17, 2023ChatGPT assisted translationhttps://lwn.net/Articles/941614/默认配置下的 Linux 内核允许进程分配的内存比系统实际可提供的内存更多。这个策略可以更好地利用物理...

Linux News搬运工 1047

LWN:6.17 合并窗口的后半部分!

网络*:Qualcomm IPQ5018 内部 PHY、Airoha AN7583 MDIO 总线控制器、Broadcom 50/100/200/400/800 千兆以太网卡、Microchip Azurite DPLL/PTP/SyncE 设备以及 Realtek 8851BU 和 8852BU USB 无线网络 (Wi-Fi 6) 适配器。供电设备 (PSE) 实现增加了对可配置预算评估策略的支持,这些策略“被 PSE 控制器用于在功率预算超出等情况下决定首先关闭哪些端口”。详情请参阅 此合并消息。

Linux News搬运工 1800

LWN:新的 DMA-mapping API!

DMA users 将不再需要使用 SG lists ,而是能够直接管理他们自己的 I/O virtual address (IOVA) space (I/O 虚拟地址,简称 IOVA),这由 I/O memory-management unit (IOMMU) (I/O 内存管理单元,简称 IOMMU) 提供。的,这很好,但使用 DMA 需要 scatter-gather (SG) lists (分散收集列表,简称 SG list),因此在这两种 formats (格式) 之间存在大量的转换。

Linux News搬运工 953

LWN:5.18合并窗口第一部分!

关注了就能看到更多这么棒的文章哦~5.18 Merge window, part 1By Jonathan CorbetMarch 25, 2022DeepL assisted translationhttps://lwn.net/Articles/888736/截至目前,在 5.18 开发周期中已有 4127 个 non-merging changeset 进入了 ma...

Linux News搬运工 502

如何学习 Linux 内核内存管理

LSF/MM 是一年一度的 Linux 存储、文件系统和内存管理峰会,这是一个仅限受邀者参加的活动,人们通常会讨论下一年的计划和项目。通常在阅读代码时,如果有不明白的地方,我会使用 “git blame”。特别是在mm 部分,开发人员习惯于写详细的提交日志(附带测试用例/程序),以便自己和其他人将来可以参考。Linux内核内存管理部分是Linux内核中第二复杂的部分,但也非常有趣。

rayylee 774

LWN: Top-tier memory management!

关注了就能看到更多这么棒的文章哦~Top-tier memory managementMay 28, 2021This article was contributed by Marta R...

Linux News搬运工 666

找不到任何设备驱动程序.请确保安装介质_LWN 215996: 设备资源管理

LWN中文翻译项目简介:LWN.net是一份著名的计算机在线刊物,专注于报道有关自由软件,特别是有关 Linux 和其他 Unix-like 相关操作系统的新闻和技术动态。泰晓科技LWN 中文翻译项目针对 LWN.net 的内核相关文章进行中文翻译,欢迎大家踊跃参与,翻译或者校对皆可,详情请阅读该项目主页位置:http://tinylab.org/lwn/。版权声明:本文最先发表...

weixin_39754831的博客 2019

LWN:6.4合并窗口的第二部分!

关注了就能看到更多这么棒的文章哦~The rest of the 6.4 merge windowBy Jonathan CorbetMay 8, 2023DeepL assisted translationhttps://lwn.net/Articles/930481/Linus Torvalds 于 5 月 7 日发布了 6.4-rc1,并关闭了合并窗口。到那时,13,044 个非合并变更集已...

Linux News搬运工 1384

LWN: 6.1 合并窗口第一部分!

关注了就能看到更多这么棒的文章哦~The first half of the 6.1 merge windowBy Jonathan CorbetOctober 7, 2022DeepL assisted translationhttps://lwn.net/Articles/910312/6.1 合并窗口正在顺利进行中:自从窗口打开以来,已经有 5,752 个 non-merge changes...

Linux News搬运工 368

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

关注了就能看到更多这么棒的文章哦~Code tagging and memory-allocation profilingBy Jonathan CorbetMay 31, 2023LSFMM+BPFDeepL assisted translationhttps://lwn.net/Articles/932402/去年由 Suren Baghdasaryan 和 Kent Overstreet 提...

Linux News搬运工 1269

LWN:6.2合并窗口的第二部分!

关注了就能看到更多这么棒的文章哦~The rest of the 6.2 merge windowBy Jonathan CorbetDecember 27, 2022DeepL assisted translationhttps://lwn.net/Articles/918146/今年,世界收到了从 Linus Torvalds 来的一份特殊的圣诞礼物:6.2-rc1 kernel prepat...

Linux News搬运工 569
上一篇: LWN:RCU近期的改动!
下一篇: LWN:The netfslib helper library
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值