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

WSL2跟踪 - 19013: Memory Reclaim内存回收 https://devblogs.microsoft.com/commandline/memory-reclaim-in-the-windows-subsystem-for-linux-2/ 阅读详情

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

Proactive reclaim for tiered memory and more

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

Linux 中的内存回收(memory reclaim)基本上是采用一种很被动的策略:内核试图去寻找哪些内存是它可以重新利用的,从而来应对 free memory 太少的情况。开发人员经常想知道是否能够采用主动回收机制从而带来更好的性能,至少对某些 workload 来说应该是有好处的,而且 tiered-memory 系统的最佳使用方式也需要更主动地回收内存。在 2022 年的 Linux 存储、文件系统、内存管理和 BPF 峰会(LSFMM)上,Davidlohr Bueso 主持了关于这个主题的简短会议。

Bueso 先提出建议来增加一个 per-node 的开关来控制打开或者关闭主动回收。管理员可以写一个数字进去来表示应该回收的内存数量,内核会尽量试图满足这个需求。他说也有可能可以扩展由 multi-generational LRU patch 添加的 debugfs 开关,而不是添加一个新的开关。不过,Michal Hocko 反对后一种想法,他说他不希望把 debugfs 中的内容变成一个必须维护的 API。

e402899713e51157fe203f369c3c037f.png

Hocko 说,相反,这类开关都应该放在 sysfs 中。对于如何控制,有两个想法:可以是一个单一的开关,接受一个 mask 来指示哪些节点需要回收,或者像 Bueso 所描述的那样采用 per-node 的开关。Hocko 更喜欢 per-node 的开关方案,因为它为管理员提供了更好的控制。Johannes Weiner 说,他已经尝试在 cgroup 的 memory controller 里添加类似的开关,可以接受的参数是从相应的 group 中回收的 page 数量。他说,该控制器在 cgroup 内包含的进程中会轮流进行回收,这可能已经足够了。他建议在 tiered-memory system 上来对这种机制进行测试,看看工作得如何。

Bueso 问道,这种接口在未来是否也依然是可靠的?不是每个系统都会以这种方式来使用 cgroup,系统全局层面的控制可能会有不同的处理方式。Weiner 说,用户希望在全局和 cgroup 内部的设置中都有所有的功能,所以在这方面应该不会有任何分歧。

另一位与会者指出了 proactive reclaim 的其他几个用例。如果需要复制的 page 比较少的话,虚拟机的迁移动作会更迅速,所以管理员希望能够在迁移开始前先强制虚拟机来回收尽可能多的内存。虚拟机可以向 hypervisor 报告有哪些 page 已经被释放了,而这些 page 就可以不用被复制到 host 上了。一个类似的用例是 suspend-to-disk,如果可以让大量的空闲 page 不再需要写入持久性存储器,那么 suspend-to-disk 的动作就会更快速。

Bueso 把话题转向了主动回收机制的测试方面;他说,现在有很多想法,但没有多少数据可以展示这些方案的实际工作效果。例如,他喜欢 hot-page selection 算法,这是 tiered-memory 工作的一部分,但只有一个基准测试结果展示了性能变化。他说,使用这么少的 benchmark 来作为这类工作的验证标准,这让他很担心。

他继续说到,他希望有一种更容易的方法可以看出某个 patchset 对各种 workload 的影响。为此,他一直在研究 MMTests,试图了解这个 workload 里面什么时候会开始将 page 从 DRAM 中推到更慢的那层内存中。他说,这有助于了解 tiering 算法是否真的有效果。但他希望找到一种方法来增加测试,能够更好地利用内存管理子系统的相关机制,而不是完全依靠消耗大量的 RAM。

当会议结束时,他还说希望有一种方法可以将内核对各种 memory tier 的了解信息都输出到用户空间。大家似乎一致认为这个功能应该新增一个 sysfs 文件来完成。

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

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

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

20673e8a3168d45125480b49a25d7321.png

tiered_memory_linux tiered_memory_linux 0.引言 该存储库包含A位配置驱动程序和分层内存仿真代码。 1.如何构建和安装 弄干净 fakeroot make-kpkg --initrd --revision = 1.0.custom kernel_image -j12 须藤dpkg -i ../linux-image-4.15.18+_1.0.custom_amd64.deb 2.关于驱动程序代码 3。 立即下载

相关推荐

VS2022错误列表高效处理:从复制到Excel表格的完整指南

本文详细介绍了在Visual Studio 2022中高效处理错误列表的实用技巧,重点讲解了如何将错误信息一键复制并粘贴到Excel表格中。通过基础操作、自定义视图、筛选功能及常见问题解决方案,帮助开发者将杂乱的编译错误整理成清晰、可排序、可筛选的数据表,极大提升了团队协作、错误分析和项目管理的效率。

weixin_28837817的博客 358

LWN:针对多层内存系统重新进行NUMA平衡!

关注了就能看到更多这么棒的文章哦~NUMA rebalancing on tiered-memory systemsMay 2, 2022This article was contributed by David VernetDeepL assisted translationhttps://lwn.net/Articles/893024/传统的 NUMA 架构是围绕 n...

Linux News搬运工 1200

SVG文件上传漏洞实战:从XSS攻击到防御策略

本文深入剖析了SVG文件上传漏洞的成因与危害,揭示了攻击者如何利用SVG的XML本质构造恶意文件,绕过常规检查实现存储型XSS攻击。文章通过实战复现演示了完整的攻击链,并提供了从严格内容检查、安全解析过滤到设置CSP策略等多层次的纵深防御方案,帮助开发者从根本上加固文件上传功能。

weixin_29230805的博客 395

LWN:两组跟memory-tier有关的patch!

关注了就能看到更多这么棒的文章哦~Two memory-tiering patch setsBy Jonathan CorbetJune 27, 2022DeepL assisted translationhttps://lwn.net/Articles/898766/很久以前,计算机只有一种类型的内存 memory,所以一个特定系统内的内存是可以互相替换使用的。非统一内...

Linux News搬运工 831

【可信数据空间-连接器技术架构设计方案】

一句话概括连接器是可信数据空间的“数据保镖”和“外交官”。连接器就是一个部署在你本地的软件代理,它代表你安全地对外提供数据服务,确保在共享数据价值的同时,牢牢守住数据的所有权和控制权。它是实现“数据可用不可见”这一理想的关键技术部件。一个生动的比喻:银行的金库和接待员想象一下,你的数据就是藏在银行金库里的黄金和钞票。金库(你的内部数据库): 绝对安全,外人绝对不能进。接待员(连接器): 坐在银行大厅里,负责与客户打交道。客户向接待员提出请求:“我想取1000元。

u014716614的博客 2267

数学与纳米技术:微观世界的数学描述

《数学与纳米技术:微观世界的数学描述》 关键词:纳米技术、数学模型、微观世界、物理现象、计算模拟 摘要:本文探讨了数学在纳米技术领域的应用,从数学基础回顾、纳米技术引论,到物理现象与

AI天才研究院 1531

内存管理:分层内存,巨页,EROFS;

关注了就能看到更多这么棒的文章哦~Memory-management: tiered memory, huge pages, and EROFSBy Jonathan CorbetAugust 15, 2024Gemini-1.5-flash translationhttps://lwn.net/Articles/984839/内核的内存管理开发者最近一直很繁忙,要想跟上这个核心领域的所有进展可能...

Linux News搬运工 2247

Python 控制 Keysight N9010B/N9020/N9030 频谱仪

为什么要实现频谱仪的控制呢?起因是因为我司RF的同事们需要对通信模块进行GSM的带内杂散进行测试,由于该测试的频点涉及900多个,所以急需开发一款自动化测试工具。该工具需同时实现对无线通讯仪和频谱仪的控制,这篇文章主要介绍一下频谱仪的控制!做通信的应该对频谱仪都不陌生,不过我之前做的都是软件相关行业,所以我对频谱仪其实还是很陌生的;不过好在我的同时们都很热心,加上仪器的文档,一段时间下来,也算是熟悉了一些。

xgh1951的博客 1万+

你知道在Redis中daemonize的yes和no有什么区别吗?

daemonize是用来指定redis是否要用守护线程的方式启动。 当我们采用yes时,redis会在后台运行,此时redis将一直运行,除非手动kill该进程。同时将进程pid号写入至redis.conf选项pidfile设置的文件中,默认会生成在/var/run/redis.pid,也可以通过pidfile来指定pid文件生成的位置 pidfile /path/redis.pid 而采用no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等.

qq_39380155的博客 2万+

视觉Transformer实战 | Cross-Attention Multi-Scale Vision Transformer(CrossViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准 ViT 结构在处理不同尺度的视觉特征时存在局限性。双分支 ViT (Cross-Attention Multi-Scale Vision Transformer, CrossViT) 通过引入双分支结构来解决这一问题,能够同时捕获局部和全局视觉特征。本文将详细介绍 CrossViT 的技术原理,并使用 PyTorch 从零开始实现 CrossViT 模型。

盼小辉丶的博客 721

YOLOv8改进 | Conv篇 | 轻量级下采样方法ContextGuided(大幅度涨点)

ContextGuided通过创新的局部-全局协同机制,解决了传统下采样方法中细节丢失与上下文缺失的核心痛点。实验证明其在YOLOv8上可实现最高2.6%的mAP提升,且计算开销增加不足5%。这种即插即用的设计为实时目标检测系统提供了新的优化方向。创新启示:轻量化不代表简单裁剪,智能信息融合才是未来方向!下一步探索与Transformer结合构建混合架构多尺度上下文融合机制3D点云中的扩展应用资源获取完整训练代码:[GitHub链接]预训练模型:[Google Drive链接]讨论话题。

QQ_778132974的博客 288

下一代分层存储方案:CXL SSD

此外,三星还在开发多款CXL方案,比如CXL DRAM (CMM-D)、CXL-PNM (CMM-DC)、内存语义SSD (CMM-H) 以及Smart SSD + CXL接口(I/F)计算(CMM-HC)均为CXL内存扩展和计算解决方案,这些都是三星内存实验室预测的产品。这一特性为降低固态硬盘(SSDs)的成本创造了机会,因为在“近内存”架构下,可以采用成本较低的存储介质,同时依然保证较高的性能水平,通过更好的资源搭配和层级设计,达到性价比最优的存储解决方案。这个跟三星的CMM-H TM类似。

存储随笔 5617

uniapp - 微信小程序接入官方人脸识别认证详细流程及示例源码,Uniapp微信小程序项目集成官方提供的人脸识别身份验证插件接口(多种示例:人脸核验、身份证件与人脸是否匹配、是否活体、实名认证等)

uni-app微信小程序人脸识别认证,使用uniapp开发微信小程序的人脸采集功能/人脸识别功能,uniapp vue3微信小程序活体人脸识别,Uni-app微信小程序实名认证,uniApp微信小程序人脸认证,UniApp的微信小程序实名认证与人脸识别系统开发,人脸核身微信小程序uni-app接入流程,wx.startFacialRecognitionVerify,uniapp开发微信小程序-人脸采集功能、微信人脸识别实名认证集成指南,识别失败,人脸识别接口怎么调用,前后端完整示例代码demo,人脸检测功能

🏆 前端领域优质创作者 3278

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

细品

西门吹雪 539

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Paper Read——Tiered Memory Management: Access Latency is the Key!

由于不同层级内存访存性能的差异,现有的分层内存管理系统使用了多种内存迁移技术尝试优化系统的吞吐和时延,但是它们都假定访问默认内存层级(硬件标明的内存访问时延最低的层级)的时延总是优于额外内存层级,因此总是把最热的页面放进默认层级。根据上面计算的每层访问延迟,用平衡访问延迟的原则决定页面迁移方向:如果默认层访问延迟小于备用层,则将热页面从备用层提升至默认层;否则,将热页面从默认层降级到备用层。”的原则迁移页面,将页面转移到访问时延更低的层级中,最终平衡时默认和额外层级的时延基本相同,从而动态地调节系统访问。

bukuishiwoa的博客 1171

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

Linux News搬运工 1412

内存管理——分层内存

如果此时 CPU 已开始使用远端内存,而本地节点的内存已经恢复充足,为了提升系统性能,内核将启动一种称为 NUMA 平衡(NUMA Balancing)的机制。可以定期唤醒内核回收线程进行回收,或者在从 Buddy 分配器分配物理内存时,如果可用物理内存低于水位线,则直接触发回收。系统结合 CFS 调度子系统,在进程调度运行前遍历用户进程的地址空间,识别其中使用远端节点内存的部分,并将相应页表标记为。冷页的特征是页表中的。中,从降级节点分配新物理页,将冷页内容拷贝至该页,并更新页表以映射到新的物理页。

bukuishiwoa的博客 1352

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

关注了就能看到更多这么棒的文章哦~Improving memory-management documentationBy Jonathan CorbetMay 10, 2022LSFMMDeepL assisted translationhttps://lwn.net/Articles/894374/如同内核的大部分内容一样,内存管理子系统的文档是不太够的,而且大部分现存...

Linux News搬运工 349

分层存储结构

1、什么是NFS服务器        1.1Network File System的简写。       NFS 是由Sun公司发展, 并於1984年推出, NFS是一个RPC service ,它使我们能够达到文件的共享, 它的设计是为了在不同的系统间使用, 所以它的通讯协定设计与主机及作业系统无关.当使用者想用远端文件时只要用"mount"就可把remote文件系统挂接在自己的文件系统之下,

changyanmanman的专栏 6333

python查看进程占用系统内存以及新增内存

查看内存 import psutil import os print(u'内存使用:{}M'.format(psutil.Process(os.getpid()).memory_info().rss/1024/1024)) 查看新增内存 import objgraph import gc objgraph.show_growth() gc.collect() # 回收内存 objgraph.show_growth()

柒然的博客 1243

(十)Linux内存管理 - zoned page frame allocator - 5

1. 概述 本文将讨论memory reclaim内存回收这个话题。 在内存分配出现不足时,可以通过唤醒kswapd内核线程来异步回收,或者通过direct reclaim直接回收来处理。在针对不同的物理页会采取相应的回收策略,而页回收算法采用LRU(Least Recently Used)来选择物理页。 直奔主题吧。 2.LRU和pagevec 2.1 数据结构 简单来说,每个Node节点会维护一个lrvvec结构,该结构用于存放5种不同类型的LRU链表,在内存进行回收时,在LRU链表中检索.

weixin_38428439的博客 509

linux进程链表,Linux学习-内存管理篇(六)-内存回收(lru链表)

一、页面回收触发方式Linux中页面回收主要是通过两种方式触发的:由“内存严重不足”事件触发的。由后台进程 kswapd触发的,该进程周期性地运行,一旦检测到当系统空闲内存小于阈值,就会触发页面回收操作。二、哪些页框可以回收属于内核的大部分页框是不能够进行回收的,比如内核栈、内核代码段、内核数据段以及大部分内核使用的页框。进程使用的页框可以进行回收的,比如进程代码段、进程数据段、进程堆栈、进程访问...

weixin_30852391的博客 520

我的内存谁也没动:4GB内存终极解迷

<br />前言<br /><br />       500元、300元、150元......随着DDR2价格的逐渐崩盘,目前连2GB DDR2-800内存的价格也已经跌至百元,越来越多的朋友为爱机装上了4GB内存。随着4GB电脑的逐渐增加,一个长期存在的问题又再次被人们所关注:为何我只能看到3.25GB物理内存?<br /><br />  无论是WinXP-32bit还是Vista-32bit,所有的用户都可以发现自己的任务管理器中最多只显示3.25GB物理内存,更甚者还会有2.8GB甚至更低的数值出现。

Matrix_Designer的专栏 4200

redis4.0之MEMORY命令详解

前言 在过去,查看redis的内存使用状态只有info memory命令,并且也只有一些基础信息,想要获取全局信息就有些困难。4.0开始redis提供了MEMORY命令,一切都变得简单起来。redis MEMORY命令 MEMORY命令一共有5个子命令,能够经过MEMORY HELP来查看:数据库 127.0.0.1:6379> memory help 1) "MEMORY DOCTOR - Outputs memory problems rep

liqingbing12的专栏 3567

__GFP_DIRECT_RECLAIM 对smmu申请memory的函数是申请物理不连续的内存?

在swiotlb的alloc函数中 static void *__dma_alloc_coherent(struct device *dev, size_t size,                   dma_addr_t *dma_handle, gfp_t flags,                   unsigned long attrs) {     if (dev ==

jason的笔记 2245
上一篇: LWN:关于内存管理部分开发流程的变动!
下一篇: LWN:如何合并 multi-generational LRU!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值