当前位置:首页 » 操作系统 » linux缺页

linux缺页

发布时间: 2024-10-19 03:50:45

‘壹’ linux内存,PageFault与SwapOut

“内存并不一定总是快”

Linux 中内存主要有匿名内存和 Page Cache 两种。

Linux操作系统内存管理策略是会尽可能的利用内存来做各种缓存,所以一般来说服务器所谓的free内存都会较少,当应用alloc申请内存的时候,如果free内存不足就会引发内存回收,这就是所谓的PageFault缺页,这时候系统会先使用异步方式的后台回收来提高应用申请内存这个操作的响应速度。但是如果应用申请内存的速度大于系统后台回收的速度的话,就会进入所谓直接回收(Direct Reclaim)模式,这是一个同步的过程,应用会大搭友自旋等待内存回收完毕,产生比较大的延迟。见下图:

另一方面,内核会回收匿名内存页,并将其置换到磁盘里(这是Linux所谓虚拟内存的管理方式,磁盘上的这部分用来跟内存做交换的空间称为swap空间),匿名内存页一旦被换出然后再次被访问的时候,就会产生文件IO了(要从swap空间里把页加载回内存里),这也会导致滚槐比较大的延迟。见下图:

vm.extra_free_kbytes 和 vm.swappiness 两个内核参数可以针对PageFault和SwapOut两种内存访问延迟做调优。mlock 系统调用可以让应用程序“锁定”一块内存空间而不被内核swap出去。

万亿级数据洪峰下的分布式消息引擎-InfoQ

后记:
这篇小文来自于学习RocketMQ开发团队的技术分享文章(见参考),里边的“内存没那么快”观点笔者认为更确切说法应该是“内存并不总是那么快”,里边的Linux内存管理的一小段说明加深了笔者对之前了解的概念的理解,这些东西可能平时工作未必有什么用,但了解底层的东西总是会让人产生求知求所得的愉悦感受。看了阿里褚霸的个人背景简介,“14年c开发经枝拦验, 12年网络开发经验, 3年Linux内核开发”,他也遇到过“底层 IO(Input/Output) 技术。IO 技术涉及面非常广,驱动,块设备,文件系统,内存关系等等” ,做专家终归是要走入底层,到最后考验的是对系统、对计算机的理解。本文很水,而脚下这条路不知能走多远,但是想想不为什么就算只为求知的喜悦我也是愿意走下去的啊。这也是我为什么要建“系统底层”这个专题

‘贰’ Linux内核虚拟内存管理之匿名映射缺页异常分析

让我们深入探讨Linux内核中的匿名映射缺页异常,这个现象在内存管理中至关重要。本文基于linux-5.0内核源代码进行讲解,内容分为几个部分。

首先,理解什么是匿名页至关重要。匿名页与文件页相对,它们不对应任何文件,比如进程的堆和栈。当程序使用malloc或mmap分配内存时,即使虚拟内存已分配,物理内存可能尚未分配,首次访问时会触发缺页异常来为虚拟内存分配物理空间。

接着,我们聚焦于0页的概念。在系统初始化时,会预先分配一页全为0的内存,称为0页。0页的使用在于节省内存,匿名页第一次读取时,如果数据是0,会映射到0页,写操作时则会触发页面复制。

当匿名映射缺页异常发生时,处理器会触发一系列处理流程。在源代码中,handle_pte_fault函数会检查页表项是否缺失和是否为匿名映射,然后调用do_anonymous_page处理。这个函数会根据操作(读写)判断是否使用0页,并根据权限设置页表属性。

在第一次读写匿名页时,内核代码会进行详细处理,例如在mmap映射内存时,会检查并设置页的可读写属性。如果是写操作,即使之前设置了写权限,页表项在第一次写入时也会变为只读,直到下次写操作时才会分配新物理页。

最后,通过实验验证了内核按需分配页的策略,映射和写操作前后内存使用情况的变化证实了匿名页的动态分配特性。总结来说,匿名映射缺页异常是内存管理中的关键点,理解它能帮助我们更好地优化程序性能和内存利用。

热点内容
编程脑子疼 发布:2024-11-24 02:31:23 浏览:169
c语言状态机 发布:2024-11-24 02:26:56 浏览:281
用友加密狗破解 发布:2024-11-24 02:23:16 浏览:707
鸿蒙系统如何变回安卓桌面 发布:2024-11-24 02:18:26 浏览:412
c语言填充 发布:2024-11-24 02:10:48 浏览:822
命名空间存储 发布:2024-11-24 02:10:45 浏览:472
java重载与重写 发布:2024-11-24 01:59:05 浏览:699
通缉令2ftp 发布:2024-11-24 01:59:04 浏览:295
android赛车游戏 发布:2024-11-24 01:58:18 浏览:105
女神联盟账号密码哪里找 发布:2024-11-24 01:58:12 浏览:479