news 2026/6/13 15:14:59

linux 内存管理详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
linux 内存管理详解

linux 内存管理详解

内存管理概览

  • 物理页管理系统通过buddy算法提供(4kb…1024 * 4kb,,这里默认页大小为4kb)物理页申请,使用,释放功能。
  • MMU提供虚拟内存转化为物理内存的功能,LTB(这里的缓存是存在cpu中的一级,二级,三级缓存中)里存放的是多级页表的缓存,如果缓存没有命令,则需要重新从内存中加载。TLB表中有进程id的标识,这样就能保证不同进程可以独立使用完成的虚拟空间
  • 进程内存管理 用来控制当前进程的内存使用分布,可以通过brk,sbrk系统调用函数来调整进程堆空间的大小,可以使用mmap,ummap来申请指定大小的内存空间供应用程序使用。
  • 虚拟内存管理是基于mmap,ummap又加了一层内存管理模块,用来专门为应用层提供频繁进行内存申请与释放的高性能内存管理模块。因为每次调用mmap,ummap实际上都会触发进程内存管理,mmu,物理页管理系统运行,比较耗时,不利于频繁进程内存申请与释放。故先通过mmap提前申请一大块内存,然后在慢慢的使用。

1 linux 申请与访问过程

1.1 内存申请与访问过程

1.2 大页内存使用

使用大页内存可以明显提高内存访问的性能,主要是通过大幅度降低大页列表长度以及提高TLB缓存命令率方式。

# 查看CPU是否支持大页$grep-i huge /proc/cpuinfo $greppdpe1gb /proc/cpuinfo# 检查1GB大页支持# 查看当前大页配置$cat/proc/meminfo|grep-i huge HugePages_Total:0# 已配置大页总数HugePages_Free:0# 空闲大页数HugePages_Rsvd:0# 预留大页数HugePages_Surp:0# 超额大页数Hugepagesize:2048kB# 大页大小# 创建挂载点$sudomkdir-p /mnt/huge $sudomkdir-p /mnt/huge_1GB# 挂载2MB大页文件系统$sudomount-t hugetlbfs -opagesize=2MB none /mnt/huge# 挂载1GB大页文件系统$sudomount-t hugetlbfs -opagesize=1GB none /mnt/huge_1GB# 永久挂载(/etc/fstab)none /mnt/huge hugetlbfspagesize=2MB00none /mnt/huge_1GB hugetlbfspagesize=1GB00# 验证挂载$mount|grephuge 匿名映射或文件映射使用大页内存# 匿名映射addr=mmap(NULL, SIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,0);# 文件映射addr=mmap(NULL, SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd,0);

内存使用情况查看

查看当前系统页内存的使用情况
cat /proc/buddyinfo

后面11列分别表示页的个数(1,2,4, 8, 16,32,…1024)未使用的内存。

查看当前进程的堆空间使用情况
pmap {pid}

其中[anon]表示 堆空间的使用情况。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:57:35

零基础入门PyTorch开发:用Universal镜像轻松上手模型训练

零基础入门PyTorch开发:用Universal镜像轻松上手模型训练 1. 引言:为什么选择预置开发镜像? 深度学习项目启动阶段,环境配置往往是开发者面临的首要挑战。从依赖库版本冲突到CUDA驱动不兼容,繁琐的搭建流程不仅耗时&…

作者头像 李华
网站建设 2026/6/10 14:51:03

Youtu-2B与Llama3对比:轻量模型GPU利用率谁更高?

Youtu-2B与Llama3对比:轻量模型GPU利用率谁更高? 1. 引言 随着大语言模型(LLM)在各类应用场景中的广泛落地,轻量化部署与资源利用效率成为边缘计算、端侧推理和低成本服务部署的关键考量因素。在众多开源模型中&…

作者头像 李华
网站建设 2026/6/10 14:36:27

测试开机启动脚本一文详解:实现系统启动自动任务执行

测试开机启动脚本一文详解:实现系统启动自动任务执行 在现代软件开发与系统运维中,自动化是提升效率、保障稳定性的核心手段之一。特别是在服务器部署、嵌入式设备或持续集成环境中,常常需要在系统启动时自动执行某些初始化任务,…

作者头像 李华
网站建设 2026/6/10 14:33:44

IQuest-Coder-V1-40B-Instruct快速上手:Docker镜像部署详细步骤

IQuest-Coder-V1-40B-Instruct快速上手:Docker镜像部署详细步骤 1. 引言 1.1 技术背景与学习目标 IQuest-Coder-V1-40B-Instruct 是面向软件工程和竞技编程的新一代代码大语言模型,属于 IQuest-Coder-V1 系列中的指令优化变体。该模型专为通用编码辅助…

作者头像 李华
网站建设 2026/6/13 7:25:59

fft npainting lama撤销功能实现原理与浏览器兼容性说明

fft npainting lama撤销功能实现原理与浏览器兼容性说明 1. 引言 1.1 技术背景与问题提出 在图像修复类Web应用中,用户交互的容错性至关重要。fft npainting lama作为基于深度学习的图像修复系统,在二次开发过程中引入了直观的画笔标注与实时重绘机制…

作者头像 李华
网站建设 2026/6/11 20:51:28

多因素时间序列回归分析:基于LSTM与LightGBM的混合模型实现

多因素时间序列回归分析:基于LSTM与LightGBM的混合模型实现 摘要 本文详细介绍了使用深度学习模型(LSTM)和梯度提升模型(LightGBM)处理多因素时间序列回归分析问题。我们将构建一个混合模型,结合两种方法的优势,以提高在测试集上的预测性能(目标R > 0.8)。本文包…

作者头像 李华