单步调试Linux内核论证水位线watermark

本文作者子牙分享了Linux内核内存模块中的重要概念——水位线,用于控制内存回收。文章通过实例解释了水位线的工作原理,以及与内存回收线程、zone的关系,并介绍了如何通过调整参数进行内存优化。同时,文章还提及了作者的硬核内核课程,旨在实操学习而非理论讲解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

哈喽,我是子牙,一个很卷的硬核男人

深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这些课程:手写JVM、手写OS、带你用纯汇编写OS、手写64位多核OS、实战Linux内核…

这篇文章给大家分享Linux内核内存模块一个很重要的知识点:水位线,就是这玩意

这玩意干啥的呢?控制内存回收的。这玩意是理解Linux内核物理内存管理模块一个非常重要的知识点,还有一个就是lowmem_reserve,这个后面写文章详谈

关于水位线,能搜到的资料还是蛮多的,有的讲得蛮好的,但是我没有看到一篇文章是单步调试Linux内核给出证明的,如所有讲底层的文章还是一样,只是讲原理。所以我准备取其精华去其糟粕,结合自己的理解,再结合我能做到的单步调试Linux内核,写一篇通俗易懂、有理有据的文章。如果你觉得有收获,用你的小手点下分享就是对我最大的支持,创作不易……

我会分享这些:

  1. 水位线是个什么东东,机制是怎样的?

  2. Linux内核中有几条水位线,水位线的值是如何算出来的

  3. Linux内核是如何基于水位线控制内存回收线程的

  4. NUMA架构中,水位线是如何工作的

  5. 如果证明你说的都是对的

  6. 我想根据业务需求调整内存,怎么做

关注公众号【硬核子牙】,阅读更多我写的硬核文章,关于操作系统、Linux内核、Java虚拟机…

本文是基于64位Linux内核写的,以下,enjoy

01   水位线watermark

如果你是做Java、Python、PHP的,你肯定听过垃圾收集器(GC),你写程序时不用考虑内存的申请与回收,都是由虚拟机帮你完成的。那虚拟机如何知道何时回收呢?有个阈值对吧,内存使用达到那个阈值就启动回收线程进行回收。这里说的水位线就相当于是这个阈值

那Linux内核中有几条水位线呢?三条。对应的阈值就是三个:

这三条水位线与内存回收线程之间是如何协同工作的呢?如图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值