Linux中的内存回收:Swap机制(图文并茂)

news2025/1/12 18:44:08

1、Swap机制是什么 :

        Swap机制是一种利用磁盘空间来扩展内存的方法。当系统的物理内存不足时,可以把一些不常用的内存数据写入到磁盘上的Swap分区,从而释放出更多的内存给其他需要的进程。当这些内存数据再次被访问时,系统会把它们从磁盘读回到内存中,这个过程称为换入(swap in)。相反,把内存数据写入到磁盘的过程称为换出(swap out),应用程序实际可以使用的内存空间将远远超过系统的物理内存。Swap 就是把一块磁盘空间或者本地文件,当成内存来使用。

Swap换入换出过程如下:

2、哪些内存能被回收:

  • 文件页的回收:文件页就是我们类似于正常的文件,有具体记录,从磁盘中读取过来的。当回收干净页(没有修改过的文件)时,直接将其内存释放就好,等下次需要时再从磁盘读取。但是如果是脏页(有被修改过的文件),我们需要将其先写入磁盘,改变磁盘中的源文件,再进行内存释放。
  • 匿名页的回收:匿名页没有实际载体,不像文件缓存有硬盘文件这样一个载体,像是堆、栈这种程序运行数据。这些页的回收我们就需要用到Swap进制,将这个部分的内存先写入到Swap分区,再进行内存释放。

从回收的过程中我们可以看到除了回收干净文件页外,其他的都有磁盘io的过程,所以这个回收的过程是会损耗系统性能的。

3、内存回收什么时候触发:

再介绍什么时候触发前,先介绍两种内存回收的方式:

  • 后台内存回收(kswapd):在物理内存紧张的时候,会唤醒 kswapd 内核线程来回收内存,这个回收内存的过程异步的,不会阻塞进程的执行。
  • 直接内存回收(direct reclaim):如果后台异步回收跟不上进程内存申请的速度,就会开始直接回收,这个回收内存的过程是同步的,会阻塞进程的执行。

在内存中有三个阈值,分别是“页高阈值”、“页低阈值”、“最小阈值”。再内存空闲大小低于页低阈值时,会进行后台内存回收,直至空闲内存大小高于页低阈值。当这种回收方式无法跟上程序需要内存的需求,空闲内存大小低于最小阈值时则会直接触发直接内存回收。因为这个回收是同步的,会阻塞程序执行。这样的话太影响系统性能了。

4、如何降低内存对系统性能的损耗:

  1. 从回收页类型看,回收干净页不需要磁盘io。所以通过配置文件,尽量倾向于回收文件页。
  2. 通过调整页低阈值,将kswapd回收时机提前,避免直接内存回收的产生,因为直接内存回收是同步回收,太损耗性能了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1266929.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多模态大模型总结2(主要2023年)

LLaVA-V1(2023/04) 论文:Visual Instruction Tuning 网络结构 如下图 所示为 LLaVA-v1 的模型结构,可以看出其简化了很多,但整体来说还是由三个组件构成: Vision Encoder:和 Flamingo 模型的 V…

Agent举例与应用

什么是Agent OpenAI 应用研究主管 Lilian Weng 在一篇长文中提出了 Agent LLM(大型语言模型)记忆规划技能工具使用这一概念,并详细解释了Agent的每个模块的功能。她对Agent未来的应用前景充满信心,但也表明到挑战无处不在。 现…

用VR+科普点亮科技之光VR航天科普体验巡展

11月22日至26日,第十一届中国(绵阳)科技城国际科技博览会圆满闭幕。本届科博会以“科技引领创新转化开放合作”为主题,创新办展办会模式,搭建高能级科技合作交流平台,展示了国内外科技创新发展成就和最新成果,举办了多…

铝合金轮毂金属部件全自动三维精密测量工业光学3d智能检测仪器-CASAIM-IS(2ND)

一、背景介绍 汽车轮毂是汽车零部件的重要组成部分。对于汽车而言,轮毂等同于腿对人的重要性。车辆将在行驶过程中产生横向和纵向载荷,车轮也将承受车辆和货物的所有载荷。随着汽车的速度越来越快,对车轮的动态稳定性和可靠性的要求也越来越…

最简单的Python程序员编辑器——学习Python的第二篇

第二章 基础 安装python 按照上一期的教程安装,如果有什么问题可以提出阿莱 安装完之后,在电脑的程序中查找SHELL 这里是Win10,win11你也是到程序菜单查找。 你可以把把它点击右键,保存到桌面上,或者固定到开始菜单…

版本控制系统Git学习笔记-Git基本知识介绍

目录 前言一、版本控制系统1.1 什么是版本控制系统1.2 本地版本控制系统1.3 集中化的版本控制系统1.3 分布式版本控制系统 二、Git简介2.1 数据处理方式2.2 几个特点2.2.1 几乎所有操作都是本地执行2.2.2 Git保证完整性2.2.3 Git一般只添加数据 2.3 Git中文件状态2.3.1 三种文件…

【UE】中文字体 发光描边材质

效果 步骤 1. 先将我们电脑中存放在“C:\Windows\Fonts”路径下的字体导入UE 点击“全部选是” 导入成功后如下 2. 打开导入的“SIMSUN_Font”,将字体缓存类型设置为“离线” 点击“是” 这里我选择:宋体-常规-20 展开细节面板中的导入选项 勾选“使用距…

教你用AI做艺术字,2个月,在小红书接广赚7200元

有段时间没给大家拆账号和完整地上教程了!今天就来安排~如何用AI写艺术字,并且在小红薯实现商单BIANXIAN的系统教程.账号很多,我就拿这个AI艺术字搭配治愈系文案来展示下,这个比较有意思,艺术字治愈文案,视…

linux命令解析神器

遥想刚迈入职场时(当时的工作环境,需要频繁使用linux,登录设备后台操作),偶然间听到我的领导和其他同事说 :“XXX,多学一学。大佬们太厉害了,太低级的问题不要直接问,你登…

直播带货“变天”,谦寻能否借AI“升咖”?

文 | 螳螂观察 作者 | 青月 直播带货,已经开始由过去的卷低价、卷GMV,渐渐演变为卷科技。 北京理工大学融合发展研究基地副主任尹西明就曾表示,AI不仅能够以更便捷、实时和多模态的交互来帮助供给端更高效地感知、获取并预测直播用户的偏好…

修改二进制程序的rpath和interpreter, 实现“高版本gcc编译出的程序在低版本glibc机器上运行“实验记录

编译环境: ubuntu20.04 gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 g (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 运行环境: centos7.9 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44) g (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44) 验证源文件 main.cpp: #inc…

Android 实现环形进度条

一、项目需求 项目中常常需要用到进度条&#xff0c;很简单&#xff0c;这儿做一个简单的总结和实现 二、实现控件 ProgressBar 三、实现代码 1、水平的进度条 xml布局代码&#xff1a; <ProgressBarandroid:id"id/rocketProgressBar"style"style/Wid…

ChatGPT生成的一些有趣的文件管理用python小程序

1. 查找当前位置中的所有文件夹&#xff0c;并在每个文件夹中增加一个名为 abc 的新文件夹 import osdef create_abc_directories(root_dir.):# 获取当前目录下的所有目录subdirectories [d for d in os.listdir(root_dir) if os.path.isdir(os.path.join(root_dir, d))]# 在…

如何在Rocky Linux中安装nmon

一、环境基础 [rootlocalhost nmon16d]# cat /etc/redhat-release Rocky Linux release 9.2 (Blue Onyx) [rootlocalhost nmon16d]# uname -r 5.14.0-284.11.1.el9_2.x86_64 [rootlocalhost nmon16d]# 二、安装步骤 在Rocky Linux和AlmaLinux等基于RHEL 的发行版上&#xff…

具有“真实触感”的动捕数据手套mhand pro,提供更精确的动作捕捉

随着人工智能的普及和万物互联&#xff0c;vr虚拟技术备受关注&#xff0c;为了更加真实的虚拟现实交互体验&#xff0c;动捕数据手套的使用逐渐普及&#xff0c;vr手套可以实时采集各手指关节运动数据&#xff0c;使用动捕数据手套可以在虚拟现实的场景中实现对真实手部运动的…

AMIS【部署 01】amis前端低代码框架可视化编辑器amis-editor本地部署流程

amis-editor本地部署流程 1.amis-editor是什么1.1 amis是什么1.2 amis-editor是什么 2.amis-editor本地部署2.1 准备阶段2.2 源码修改2.3 构建项目2.4 nginx配置2.5 启动nginx 3.总结 官网仅贴出了本地运行这个项目的步骤&#xff1a; # 1.安装依赖 npm i # 2.等编译完成后本地…

uniapp 页面回退逻辑梳理

在uniapp 开发项目&#xff0c;有时在同一个页面 回退 会有不同的要求&#xff0c;无法通用的用navigaBack去解决 因此 这时候 就可以使用onBackPress方法&#xff0c;根据不同的参数条件来控制回退的页面

数据结构:哈希表讲解

哈希表 1.哈希概念2.通过关键码确定存储位置2.1哈希方法2.2直接定址法2.3除留余数法 3.哈希冲突概念4.解决哈希冲突4.1闭散列4.1.1概念4.1.2哈希表扩容4.1.3存储位置的状态4.1.4关于键值类型4.1.5代码实现 4.2开散列4.2.1概念4.2.2哈希表扩容4.2.3代码实现 4.3开闭散列的对比 1…

JavaScript中的异步处理方法

JavaScript中的异步处理是开发者在日常开发过程中必须面对的一个重要问题。由于JavaScript是单线程的&#xff0c;因此对于一些可能需要长时间执行的操作&#xff0c;如网络请求、IO操作等&#xff0c;如果采用同步的方式&#xff0c;可能会导致应用程序的阻塞&#xff0c;降低…

常见的AI安全风险(数据投毒、后门攻击、对抗样本攻击、模型窃取攻击等)

文章目录 数据投毒&#xff08;Data Poisoning&#xff09;后门攻击&#xff08;Backdoor Attacks&#xff09;对抗样本攻击&#xff08;Adversarial Examples&#xff09;模型窃取攻击&#xff08;Model Extraction Attacks&#xff09;参考资料 数据投毒&#xff08;Data Poi…