首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内存回收和交换

前言 Linux的swap相关部分代码从2.6早期版本到现在的4.6版本在细节之处已经有不少变化。本文讨论的swap基于Linux 4.4内核代码。...Linux内存管理是一套非常复杂的系统,而swap只是其中一个很小的处理逻辑。希望本文能让读者了解Linux对swap的使用大概是什么样子。...在Linux上可以使用swapon -s命令查看当前系统上正在使用的交换空间有哪些,以及相关信息: [zorro@zorrozou-pc0 linux-4.4]$ swapon -s Filename...如果符合交换条件的内存较长,是不是可以不用全部交换出去?比如可以交换内存有100M,但是目前只需要50M内存,实际只要交换50M就可以了,不用把能交换的都交换出去。...那么如何描述内存使用的压力呢?Linux内核使用水位标记(watermark)的概念来描述这个压力情况。Linux内存的使用设置了三种内存水位标记,high、low、min。

4.6K52
您找到你想要的搜索结果了吗?
是的
没有找到

Linux swappiness参数设置与内存交换

简介 swappiness,Linux内核参数,控制换出运行时内存的相对权重。swappiness参数值可设置范围在0到100之间。...低参数值会让内核尽量少用交换,更高参数值会使内核更多的去使用交换空间。默认值为60(参考网络资料:当剩余物理内存低于40%(40=100-60)时,开始使用交换空间)。...swappiness参数值说明 vm.swappiness = 0 仅在内存不足的情况下--当剩余空闲内存低于vm.min_free_kbytes limit时,使用交换空间。...vm.swappiness = 1 内核版本3.5及以上、Red Hat内核版本2.6.32-303及以上,进行最少量的交换,而不禁用交换。...vm.swappiness = 10 当系统存在足够内存时,推荐设置为该值以提高性能。

10.2K20

内存覆盖与交换

内存空间的扩充:覆盖技术,交换技术,虚拟存储技术 覆盖技术-解决程序大小超过物理内存总和问题(现在基本不用了),增加了编程负担 思想: 1)将程序分为多个段,常用的段常驻内存,不常用的段需要时调入内存...2)内存分为一个"固定区",若干个"覆盖区" 3)需要常驻的放在"固定区",调入后不在调出(除非运行结束) 4)不常用的段放在"覆盖区" 交换技术-将内存某些进程暂时换出外存,把外存某些具备运行条件的进程换入内存...(进程在内存与磁盘间动态调整),中级调度内存调度中的进程挂起 1)磁盘分为文件区和交换区,交换区使用连续分配方式,交换区的i/o速度比文件区更快 2)如果进程经常出现缺页,说明内存紧张,可以换出一些进程

92210

内存与IO的交换

file-backed pages在内存不足的时候可以直接写回对应的硬盘文件里,称为page-out,不需要用到交换区(swap);而anonymous pages在内存不足时就只能写到硬盘上的交换区(...swap分区或swap文件实际上最终是到达了增大内存的效果。当然,如果频繁交换的话,被交换出去的数据的访问就会慢一些,因为要有IO操作了。 1....zRAM机制 不用swap分区,也可以用zRAM机制来缓解内存紧张: 从内存里拿出一段内存空间(compressed block),作为交换空间模拟硬盘的交换分区,用来交换匿名页,并且让kernel看到的物理内存大小不包括这段内存...而这段交换空间自带透明压缩功能,即交换到这块zRAM分区时,Linux会自动将这块匿名页压缩存放。...系统访问这块页面的内容时,产生page fault后从交换分区去拿,这时Linux给你透明解压再交换出来。

2.6K31

linux交换空间

swap空间有两种形式:一是交换分区,二是交换文件。总之对它的读写都是磁盘操作。...linux内存通过 virtual memory 虚拟内存来管理整个内存, 虚拟内存管理着物理内存,也管理着swap交换空间。...Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。...那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。...这样,系统总是在物理内存不够时,才进行Swap交换。 其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。

3.9K70

LyScript 内存交换与差异对比

LyScript 针对内存读写函数的封装功能并不多,只提供了内存读取和内存写入函数的封装,本篇文章将继续对API进行封装,实现一些在软件逆向分析中非常实用的功能,例如内存交换内存区域对比,磁盘与内存镜像比较...插件地址:https://github.com/lyshark/LyScript内存区域交换: 实现被加载程序内特定一块内存区域的交换,该方法实现原理就是两个变量之间的交换,只是在交换时需要逐个字节进行...from LyScript32 import MyDebug# 交换两个内存区域def memory_xchage(dbg,memory_ptr_x,memory_ptr_y,bytes): ref...flag = memory_xchage(dbg, 6815744,6815776,4) print("内存交换状态: {}".format(flag)) dbg.close()PE...文件头节点交换后如下:图片内存区域对比: 可用于对比该进程内存中的特定一块区域的差异,返回是列表中的字典形式,分别传入对比内存x,y以及需要对比的内存长度,此处建议不要超过1024字节。

48620

内存与IO的交换【转】

file-backed pages在内存不足的时候可以直接写回对应的硬盘文件里,称为page-out,不需要用到交换区(swap);而anonymous pages在内存不足时就只能写到硬盘上的交换区(...swap分区或swap文件实际上最终是到达了增大内存的效果。当然,如果频繁交换的话,被交换出去的数据的访问就会慢一些,因为要有IO操作了。 1....zRAM机制 不用swap分区,也可以用zRAM机制来缓解内存紧张: 从内存里拿出一段内存空间(compressed block),作为交换空间模拟硬盘的交换分区,用来交换匿名页,并且让kernel看到的物理内存大小不包括这段内存...而这段交换空间自带透明压缩功能,即交换到这块zRAM分区时,Linux会自动将这块匿名页压缩存放。...系统访问这块页面的内容时,产生page fault后从交换分区去拿,这时Linux给你透明解压再交换出来。

65520

LyScript 内存交换与差异对比

LyScript 针对内存读写函数的封装功能并不多,只提供了内存读取和内存写入函数的封装,本篇文章将继续对API进行封装,实现一些在软件逆向分析中非常实用的功能,例如内存交换内存区域对比,磁盘与内存镜像比较...插件地址:https://github.com/lyshark/LyScript 内存区域交换: 实现被加载程序内特定一块内存区域的交换,该方法实现原理就是两个变量之间的交换,只是在交换时需要逐个字节进行...from LyScript32 import MyDebug # 交换两个内存区域 def memory_xchage(dbg,memory_ptr_x,memory_ptr_y,bytes):...(memory_ptr_x + index) read_byte_y = dbg.read_memory_byte(memory_ptr_y + index) # 交换内存...) PE文件头节点交换后如下: 内存区域对比: 可用于对比该进程内存中的特定一块区域的差异,返回是列表中的字典形式,分别传入对比内存x,y以及需要对比的内存长度,此处建议不要超过1024字节。

51720

Linux系统交换空间介绍

交换空间是当今计算的一个共同方面,不管操作系统如何。Linux使用交换空间来增加主机可用的虚拟内存量。它可以在常规文件系统或逻辑卷上使用一个或多个专用交换分区或交换文件。...交换空间 交换空间是现代Linux系统中的第二种内存类型。交换空间的主要功能是当实际内存被填满,需要更多的空间时,用磁盘空间代替RAM内存。 例如,假设您有一个具有8GB RAM的计算机系统。...内存管理程序将这些相对较少使用的内存交换到专门指定用于“分页”或交换的硬盘驱动器上的一个特殊分区。这将释放RAM,并为将更多数据输入电子表格腾出空间。...内核的内存管理代码会跟踪那些交换到硬盘上的内存页,如果需要的话,可以将它们分页回RAM。 Linux计算机中的内存总量是RAM加上交换空间,称为虚拟存储器....Linux交换的类型 Linux提供了两种类型的交换空间。默认情况下,大多数Linux安装都会创建交换分区,但也可以使用特殊配置的文件作为交换文件。

2.5K10

Linux - Linux内存管理

移除交换空间 ---- 概念 内存管理是Linux系统重要的组成部分。...为了解决内存紧缺的问题,Linux引入了虚拟内存的概念。为了解决快速存取,引入了缓存机制、交换机制等。...要深入了解Linux内存运行机制,需要知道下面提到的几个方面。 首先,Linux系统会不时地进行页面交换操作,以保持尽可能多的空闲物理内存。...即使并没有什么事情需要内存Linux也会交换出暂时不用的内存页面,这可以避免等待交换所需的时间。...其次,Linux进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存中,Linux内核根据“最近最经常使用”算法,仅仅将一些不经常使用的页面文件交换到虚拟内存中。

52.1K41

Linux内存描述之内存节点node--Linux内存管理(二)

CPU访问本地内存的速度比访问远程内存的速度要快 Linux适用于各种不同的体系结构, 而不同体系结构在内存管理方面的差别很大....因此linux内核需要用一种体系结构无关的方式来表示内存....因此linux内核把物理内存按照CPU节点划分为不同的node, 每个node作为某个cpu结点的本地内存, 而作为其他CPU节点的远程内存, 而UMA结构下, 则任务系统中只存在一个内存node, 这样对于...在将页帧换出结点时会唤醒该进程. kswap_wait是交换守护进程(swap daemon)的等待队列 而kswapd_max_order用于页交换子系统的实现, 用来定义需要释放的区域的长度. 2...-3.x~4.x的实现 node_data内存节点数组 在新的linux3.x~linux4.x的内核中,内核移除了pg_data_t的pgdat_next之指针域, 同时也删除了pgdat_list链表

7.6K20

Linux内存描述之内存页面page--Linux内存管理(四)

1 Linux如何描述物理内存 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点(node), 内存则被分簇, 每个CPU对应一个本地物理内存, 即一个...内存中的每个节点都是由pg_data_t描述,而pg_data_t由struct pglist_data定义而来, 该数据结构定义在include/linux/mmzone.h, line 615, 每个结点关联到系统中的一个处理器...简单来说, 页是一个数据块, 可以存放在任何页框(内存中)或者磁盘(被交换交换分区)中 我们今天就来详细讲解一下linux下物理页帧的描述 2 页帧 内核把物理页作为内存管理的基本单位....如果mapping = 0,说明该page属于交换高速缓存页(swap cache);当需要使用地址空间时会指定交换分区的地址空间swapper_space。 如果mapping !...3.2 内存页标识pageflags 其中最后一个flag用于标识page的状态, 这些状态由枚举常量enum pageflags定义, 定义在include/linux/page-flags.h?

8K11
领券