Linux禁用内存交换

Swap意思是交换分区,通常我们说的虚拟内存,是从硬盘中划分出的一个分区。Swap分区在系统的物理内存(这里应该是运行内存)不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

查看swap的使用情况

free 命令主要是用来査看内存和 swap 分区的使用情况的

输入命令

[root@VM_0_16_centos ~]# free -m

返回结果


              total        used        free      shared  buff/cache   available
Mem:            991          84         600           0         306         763
Swap:             0           0           0
[root@VM_0_16_centos ~]# 

参数解析

参数说明
total总内存
used已使用内存
free空闲的内存
shared共享内存
buff/cache是指缓冲内存数/缓存内存数,单位是KB
available实际可用的内存

共享内存(Shared)

在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存

缓冲(buffers)

磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲。

缓存(cached)

把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。

缓冲和缓存的区别

简单来讲,cached 是给读取数据时加速的,buffers 是给写入数据加速的。

cached是指把读取出来的数据保存在内存中,当再次读取时,不用读取硬盘而直接从内存中读取,加速了数据的读取过程;

buffers是指在写入数据时,先把分散的写入操作保存到内存中,当达到一定程度后再集中写入硬盘,减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程。

临时性的调整swap

一种简单粗暴的方法是设置swap空间为0。但是swap在系统崩溃的时候提供了安全机制,并且会尝试阻止系统因为内存溢出而杀掉进程。所以有些情况可能需要开启swap。这个时候我们需要调整vm.swappiness来尝试降低内存交换的积极性

关闭swap

禁用swap

sudo swapoff -a

启用swap

sudo swapon -a

查看交换分区状态

sudo free -m

调整swappiness

swappiness接受0-100的参数。swappinessswappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间。
swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

查询swappiness值

swappiness的默认值根据系统以及版本不同结果不一样(本人的腾讯云为30、阿里云为0)

[root@VM_0_16_centos ~]# cat /proc/sys/vm/swappiness
30

设置swappiness值

用下面命令可以临时的把swappiness值修改为Elasticsearch文档要说明的1

[root@VM_0_16_centos ~]# sysctl vm.swappiness=1
vm.swappiness = 1
[root@VM_0_16_centos ~]# cat /proc/sys/vm/swappiness
1

上面对swap的操作并非永久的,在服务器重启之后配置将被还原,假如需要永久性的修改其参数需要用下面的方式

永久性的设置swap

永久性禁用swap

修改/etc/fstab文件

vim /etc/fstab

注释掉包含单词swap的所有行

调整swappiness

执行命令编辑sysctl.conf文件

vim /etc/sysctl.conf 

在此参数修改为你需要的数据

vm.swappiness = 10

注意此时查询的时候还是之前的配置

[root@VM_0_16_centos ~]# cat /proc/sys/vm/swappiness
1

需要重启服务或者是使用下面的命令使之生效

sysctl -p

个人水平有限,上面的内容可能存在没有描述清楚或者错误的地方,假如开发同学发现了,请及时告知,我会第一时间修改相关内容。假如我的这篇内容对你有任何帮助的话,麻烦给我点一个赞。你的点赞就是我前进的动力。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Linux虚拟内存是操作系统提供的一种用于扩展系统内存的机制。通过虚拟内存Linux可以将部分磁盘空间用作额外的内存来满足系统运行时的内存需求。 在Linux中,虚拟内存可以通过设置系统的交换空间(swap space)来进行配置。交换空间是硬盘上的一块用于存放被置换出来的内存页的区域。当系统内存不足时,不经常使用的内存页会被换入到交换空间,从而释放出更多的物理内存用于当前正在执行的程序。 为了设置Linux的虚拟内存,需要进行以下几个步骤: 1. 创建一个交换分区(swap partition)或交换文件(swap file)。交换分区是在磁盘上划分的一个特定区域,而交换文件是一个普通的文件。可以使用Linux的磁盘工具(如fdisk)来创建交换分区,或使用命令dd来创建交换文件。 2. 格式化交换分区或交换文件。可以使用mkswap命令对交换分区或交换文件进行格式化,以便系统能够使用它作为交换空间。 3. 启用交换空间。可以使用swapon命令将交换分区或交换文件作为有效的交换空间启用。例如,可以使用swapon /dev/sdb1命令将/dev/sdb1设备上的交换分区启用。 4. 配置系统在启动时自动启用交换空间。可以将交换分区或交换文件的信息添加到/etc/fstab文件中,以便系统在每次启动时自动启用交换空间。 在设置Linux虚拟内存时,需要注意交换空间的大小。如果设置的交换空间过小,系统可能在内存不足时无法正常工作;如果设置的交换空间过大,可能会浪费磁盘空间。通常,建议将交换空间的大小设置为物理内存的1.5倍到2倍左右。 总而言之,通过设置Linux交换空间,可以扩展系统的内存容量,提高系统的运行稳定性和性能,确保系统能够正常运行。 ### 回答2: Linux虚拟内存设置是指对Linux操作系统中的虚拟内存进行配置和管理的过程。虚拟内存是一种计算机系统的内存管理方式,它将磁盘上的一部分空间用作扩展内存,使得操作系统可以在物理内存不足时使用这部分空间来进行内存交换。 在Linux中,虚拟内存的设置主要涉及以下几个方面: 1. 交换空间设置:通过设置交换分区或者交换文件来为虚拟内存提供支持。可以使用命令swapon和swapoff来启用或禁用交换空间。 2. 虚拟内存的大小调整:可以通过调整内核参数来设置虚拟内存的大小。在Linux系统中,可以通过修改/sys/devices/system/node/nodeX/meminfo文件中的参数来调整虚拟内存的大小。 3. 调整页面大小:页面大小是虚拟内存管理的基本单位,可以通过修改内核参数vm.page_size来调整页面大小。通常情况下,页面大小为4KB,但也可以根据实际需求进行调整。 4. 管理页面置换:当物理内存不足时,Linux会根据页面置换算法将不常用的页面从物理内存交换交换空间或者磁盘上,以腾出物理内存空间。可以通过修改内核参数vm.swappiness来调整页面置换的策略。 5. 内存分配策略:Linux使用伙伴系统算法来管理内存分配。可以通过修改内核参数vm.min_free_kbytes来调整空闲内存的阈值,从而控制内存分配的策略。 总之,Linux虚拟内存设置是一个复杂的过程,需要根据实际需求和系统资源情况进行调整和优化。正确地配置和管理虚拟内存可以提高系统的性能和可靠性。 ### 回答3: Linux的虚拟内存(Virtual Memory)设置是指操作系统用于扩展计算机内存的一种技术。在Linux系统中,虚拟内存允许将部分磁盘空间用作临时的内存存储,以使计算机能够处理更大的数据量和运行更多的程序。 Linux系统通过将内存分为多个页面(Page)来管理虚拟内存。操作系统将常用的页面保存在物理内存中,而将不常用的页面交换swap)到硬盘上的交换空间(Swap Space)。这样一来,即使物理内存不足,操作系统仍可以继续执行程序,从而提高了系统的可用内存大小。虚拟内存的大小由内核参数vm.swappiness来控制,范围为0到100。值越高,越倾向于将页面交换交换空间,值越低,越倾向于保留页面在物理内存中。 在Linux系统中,可以使用命令“sysctl”来查看和修改虚拟内存设置。通过修改/sys/kernel/mm/transparent_hugepage/enabled文件的值,可以启用或禁用透明大页(Transparent Huge Pages),从而提升系统性能。另外,还可以通过修改/etc/sysctl.conf文件来永久修改虚拟内存设置。 在设置虚拟内存时,需要综合考虑系统的硬件配置、应用程序的资源需求以及性能需求。过大的虚拟内存设置可能导致磁盘空间的浪费,而过小的设置可能会影响系统的性能。因此,根据具体的情况,合理地配置虚拟内存是非常重要的。 总之,虚拟内存Linux系统中重要的内存管理技术。通过适当地设置虚拟内存,可以提升系统的性能和可用内存大小,从而更好地满足计算机的资源需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大·风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值