LWN:优化只有一个用户的内存!

《数据结构》02-线性结构1 两个有序链表序列的合并 题目 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next;... 阅读详情

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

Optimizing single-owner memory

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

内核里的内存管理子系统的主要优化目标是要能最大程度地共享资源。但是,正如 Pasha Tatashin 在 2023 年 Linux 存储、文件系统、内存管理和 BPF 峰会的内存管理会议上所指出的,很多内存都只有一个 owner,永远不会被共享。他向抱有怀疑的人们介绍了一些优化内存管理的想法。

Tatashin 一开始介绍说,他试图解决的问题是谷歌所特有的,但他认为其他人也可能遇到这种情况。他所说的内存就是从来不共享的匿名内存(anonymous memory)。一个进程可能分配了大量的内存,然后从来不进行 fork 调用,或者它可能使用了 madvise()来告诉内核不要与任何子进程共享一定范围的内存。在谷歌,90%的内存都是不共享的,因为谷歌非常倾向于使用线程而不是独立的进程。

他说,对于这种工作场景来说,内核的内存管理并没有很高效。系统物理内存的大约 1.6%被用于 page structure,用来管理这些内存。谷歌的服务器群里包含了 PB 级别的内存,这也是它最昂贵的组成部分,所以这 1.6%的开销是相当重要的。他说,page structure 的存在是为了管理所有各种类型的内存,对于单用户匿名内存来说它并不是必需的。

消除内存共享的可能性,可以带来一些好处。之前他总是不得不调试一些内存被错误地共享的问题,这往往是由于驱动程序的错误造成的。没有共享的话这些错误就不会出现了。由于单一 owner 的内存总是可迁移的(migratable),因此总是可以拼成 1GB 的 huge page,这也有助于性能。

Tatashin 描述了一个有两个组成部分的单一 owner 内存驱动程序。用内存池管理 1GB 的内存块(chunk),这些内存块可以来自多个来源,包括 hugetlbfs、设备 DAX 或 CXL 内存池;这些内存都不需要跟 page struct 关联起来。内存池将努力把可移动的内存分配和不能移动的内存分配区分开。另一块是驱动程序本身,它用较小的 chunk 来管理这部分内存,并使其可供进程使用。它实现了一种新型的虚拟内存区域(VMA),被标记为 page-frame-number(PFN)映射的,这样内核不会想要为它找到对应的 page structure。这个驱动可以支持大多数面向内存的调用,如 madvise()。

然后,用户空间进程可以打开/dev/som 来分配 single-owner 的内存供其使用。不过,Tatashin 在实现上遇到了一些问题,包括 PFN 映射的 VMA 在内核中并不是所有地方都支持的。尤其是,get_user_pages()系列函数无法配合它们,这使得在许多情况下无法使用 single-owner 内存。

他说,页面老化(page aging)也变得更加难管理了,因为在没有 page structure 的情况下就没有 LRU list 信息了。一个解决方案是针对此目的创建一个新的、更小的 page structure 类似结构;到目前为止,他一直在抵制这个方向,但没有更好的解决方案。这种内存不支持 swap,也不支持 NUMA 布局或 hardware poisoning 等。

Tatashin 说,他意识到实现 folio 以及 page descriptor 的工作最终将面临和解决许多类似的问题。但是,他说,那部分工作预计仍然需要几年的时间才能完成,他希望能更快地得到一个解决方案。Matthew Wilcox 插话说,如果 Tatashin 帮忙的话,folio 的工作会更快完成,并说 single-owner 内存的工作正试图消除内存管理子系统,但最终会变成对它进行重新实现。他说,这项工作最终可能会像 hugetlbfs 一样,包含了许多重复的内存管理功能。他很怀疑最终会有真正的收获。

随着会议的结束,小组中的其他人也表达了类似的感受。对这个特殊用途的分配器来说,会面临无穷无尽的功能添加,所以它将一直在增长。John Hubbard 表达了会议室里的共识,他建议 Tatashin 还是要努力来让内存管理核心代码更适配他的需要。

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

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

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

format,png

conda upgrade出现Solving environment:failed CondaValueError Malformed version string invalid chars解决方案 本文主要介绍了conda install出现Solving environment:failed、CondaValueError: Malformed version string invalid character(s),希望能对使用conda的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 步骤一 2.2 步骤二 阅读详情

相关推荐

AD9026芯片开发实战:从Example Code到API调用的关键步骤解析

本文详细解析了AD9026芯片开发的核心流程,重点阐述了如何从官方提供的Example Code入手,逐步理解硬件平台发现、HAL层初始化、配置加载、芯片复位、固件启动、JESD链路建立等关键API调用序列。通过剖析示例工程的结构与核心文件,为开发者在自定义硬件平台上移植和调试AD9026驱动提供了清晰的实战指南。

java5的博客 787

LWN:用DAMON来优化memory-management!

关注了就能看到更多这么棒的文章哦~Memory-management optimization with DAMONByJonathan CorbetFebruary 20, 2020...

Linux News搬运工 1028

C语言 100道经典编程题适用于专升本,专接本【详细分析版】_c语言专升本题目

/法2//left指向起始 right指向数组末尾= 0){left++;//如果*left是奇数就循环接着向后指,直到指向偶数就退出//(left

2401_84978503的博客 695

LWN: 利用 DAMON 进行内存主动回收!

关注了就能看到更多这么棒的文章哦~Using DAMON for proactive reclaimBy Jonathan CorbetJuly 23, 2021DeepL assiste...

Linux News搬运工 1412

君正T31x metartc集成测试

metartc为国内杨大侠部分开源的一款用于嵌入式领域webrtc库,它与谷歌官方webrtc相比,编译到君正平台的可执行文件仅有5M即可实现webrtc的通信。1. 目前实现的是基于开源版v5.0-b0版本做的简单修改,官方的好几个版本都多少缺点东西,我这里给整理了一下。目前是局域网连接的webrtc,后续尝试走stun和turn试一下NAT穿越的效果。

fsmpeg的博客 3157

EEG/ERP新手必看:5本神经科学入门书籍推荐(附高清PDF下载)

本文为EEG/ERP研究新手推荐5本神经科学入门书籍,涵盖认知神经科学、数据分析、ERP技术等核心内容。特别推荐《认知神经科学—关于心智的生物学》和《事件相关电位基础》,这些书籍不仅提供理论框架,还包含实用案例和MATLAB代码,帮助研究者快速掌握脑电研究技术。附高清PDF下载,适合实验室小组学习。

weixin_29210727的博客 444

LWN: NUMA对各种内存类型的分配策略!

关注了就能看到更多这么棒的文章哦~NUMA policy and memory typesBy Jonathan CorbetJuly 16, 2021DeepL assisted tra...

Linux News搬运工 1444

避坑指南:QCustomPlot鼠标事件冲突解决方案(左键拖动vs右键框选)

本文深入解析QCustomPlot在QT框架下的高级交互实现,重点解决左键拖动与右键框选的冲突问题。通过自定义事件处理和QRubberBand技术,提供了一套完整的无冲突交互方案,帮助开发者优化数据可视化应用的用户体验。

moss5的博客 660

LWN:对NUMA更加优化的qspinlock!

关注了就能看到更多这么棒的文章哦~NUMA-aware qspinlocksBy Jonathan CorbetApril 12, 2021DeepL assisted translati...

Linux News搬运工 1446

AIDC供电系统与算电协同

AIDC供电系统的技术革新为算电协同提供了基础保障,而算电协同则是解决AIDC高能耗问题、推动数字经济可持续发展的关键路径

数据中心全生命周期价值管理 2566

电力现货市场出清机制与节点电价计算实战解析

本文深入解析了电力现货市场的出清机制,特别是节点边际电价的计算原理与实战应用。通过一个基于Matlab和IEEE30节点系统的完整案例,详细演示了如何利用最优潮流模型求解市场出清价格,并提取节点电价,揭示了电网阻塞如何影响实时电价的形成。

weixin_29061425的博客 949

LWN:新增ioctl来检测内存被写入过!

关注了就能看到更多这么棒的文章哦~An ioctl() call to detect memory writesBy Jonathan CorbetAugust 10, 2023ChatGPT assisted translationhttps://lwn.net/Articles/940704/kernel 需要知道一个进程的内存是何时被写入的,这个用处很多,其中之一就是可以用来确定哪些页面(p...

Linux News搬运工 1213

STM32G431的 FDCAN使用5M加速时,出现奇葩问题,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1636

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

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

Linux News搬运工 688

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LWN:优化内存中经常需要访问的匿名页!

关注了就能看到更多这么棒的文章哦~Working-set protection for anonymous pagesByJonathan CorbetMarch 19, 2020原...

Linux News搬运工 737

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LWN:用BOLT进行内核优化!

关注了就能看到更多这么棒的文章哦~Kernel optimization with BOLTBy Jake EdgeOctober 25, 2024LPCGemini-1.5-flash translationhttps://lwn.net/Articles/993828/2024 年 Linux Plumbers Conference的toolchains track中的两场演讲探讨了不同...

Linux News搬运工 2342

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LWN:利用page folio来明确内存操作!

关注了就能看到更多这么棒的文章哦~Clarifying memory management with page foliosBy Jonathan CorbetMarch 18, 2021...

Linux News搬运工 2790

LWN:内存分层下的加权交错分配!

关注了就能看到更多这么棒的文章哦~Weighted interleaving for memory tieringBy Jonathan CorbetOctober 25, 2023ChatGPT translationhttps://lwn.net/Articles/948037/kernel里过去这些年一直都可以控制如何在有多个NUMA node的系统里进行内存分配。最近NUMA node已经...

Linux News搬运工 1041

LWN:CXL 如何管理以及分层!

关注了就能看到更多这么棒的文章哦~CXL 1: Management and tieringBy Jonathan CorbetMay 13, 2022LSFMMDeepL assisted translationhttps://lwn.net/Articles/894598/Compute Express Link(CXL)是一项新出现的内存技术,显然是 Linux 内...

Linux News搬运工 2523

LWN回顾: Android内存管理

Android memory managementByJonathan Corbet,May 1, 2019,LSFMMAndroid系统的设计核心目标就是要能够让用户体验到丝滑一...

Linux News搬运工 310

LWN:folio的最新情况!

关注了就能看到更多这么棒的文章哦~A memory-folio updateBy Jonathan CorbetMay 4, 2022LSFMMDeepL assisted translationhttps://lwn.net/Articles/893512/folio 项目还不到两年,但它已经导致了对内核的内存管理以及文件系统层的重大改变。虽然已经做了很多工作,但仍有不...

Linux News搬运工 1448

LWN:多代LRU方案的未来!

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

Linux News搬运工 1242

LWN:近期在讨论的一些内存管理相关patch!

关注了就能看到更多这么棒的文章哦~Some upcoming memory-management patchesBy Jonathan CorbetNovember 12, 2021Dee...

Linux News搬运工 404

LWN:正式建立内存策略zone!

关注了就能看到更多这么棒的文章哦~Formalizing policy zones for memoryBy Jonathan CorbetMarch 5, 2024Kimi Chat (https://kimi.moonshot.cn/) translationhttps://lwn.net/Articles/964239/内核的内存管理子系统是建立在“区域”(zones)概念之上的,这些区域最...

Linux News搬运工 346

LWN:最近在关注的kernel改动!

关注了就能看到更多这么棒的文章哦~Kernel topics on the radarBy Jonathan CorbetAugust 2, 2021DeepL assisted tran...

Linux News搬运工 523

LWN:为用户空间的加锁情况延长时间片!

关注了就能看到更多这么棒的文章哦~Extending time slices for user-space locksBy Daroc AldenFebruary 19, 2025Gemini-1.5-flash translationhttps://lwn.net/Articles/1009509/Steven Rostedt 最近发布了一个补丁集,该补丁集可以通过让调度器更多地了解何时可以安全...

Linux News搬运工 960
上一篇: LWN:减少vmap 锁冲突!
下一篇: LWN:对EROFS的介绍!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值