Linux记录-Linux Swap分区虚拟内存相关解决方案

Swap用途:Swap意思是交换分区,通常我们说的虚拟内存,是从硬盘中划分出的一个分区。当物理内存不够用的时候,
内核就会释放缓存区(buffers/cache)里一些长时间不用的程序,然后将这些程序临时放到Swap中,
也就是说如果物理内存和缓存区内存不够用的时候,才会用到Swap。
swap清理:swapoff -a && swapon -a
注意:这样清理有个前提条件,空闲的内存必须比已经使用的swap空间大
--------------------------------------------------------------------------------------------------------------------------------------------------------------
1.Linux如何查看哪个进程占用的SWAP分区比较多
##for i in $(ls /proc | grep "^[0-9]" | awk ‘$0>100‘); do awk ‘/Swap:/{a=a+$2}END{print ‘"$i"‘,a/1024"M"}‘ /proc/$i/smaps;done| sort -k2nr | head
##ps aux | grep ${pid}
--------------------------------------------------------------------------------------------------------------------------------------------------------------
2.释放linux的swap内存
第一步:先执行sync命令
#sync
sync命令用于强制被改变的内容立刻写入磁盘,更新超块信息,以防止释放,sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中。
第二步:(如果仅仅是清理swap的话,这一步可以不执行)

#echo 3 > /proc/sys/vm/drop_caches 此指令输入立即生效,意在释放所有缓存。
#cat /proc/sys/vm/drop_caches
--------------------------------------------------------------------------------------------------------------------------------------------------------------
0 – 不释放
1 – 释放页缓存 ##echo 1 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=1
2 – 释放dentries(目录缓存)和inodes ##echo 2 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=2
3 – 释放所有缓存 ##echo 3 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=3

以上三种方式都是临时释放缓存的方法,要想永久释放缓存,需要在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然后sysctl -p生效即可!
可以使用sync命令来清理文件系统缓存,还会清理僵尸(zombie)对象和它们占用的内存
温馨提示:
上面操作在大多数情况下都不会对系统造成伤害,只会有助于释放不用的内存。
但是如果在执行这些操作时正在写数据,那么实际上在数据到达磁盘之前就将它从文件缓存中清除掉了,这可能会造成很不好的影响。
那么如果避免这种事情发生呢?
因此,这里不得不提一下/proc/sys/vm/vfs_cache_pressure这个文件,告诉内核,当清理inoe/dentry缓存时应该用什么样的优先级。
#cat /proc/sys/vm/vfs_cache_pressure
100
vfs_cache_pressure=100 这个是默认值,内核会尝试重新声明dentries和inodes,并采用一种相对于页面缓存和交换缓存比较"合理"的比例。
减少vfs_cache_pressure的值,会导致内核倾向于保留dentry和inode缓存。
增加vfs_cache_pressure的值,(即超过100时),则会导致内核倾向于重新声明dentries和inodes
总之,vfs_cache_pressure的值:小于100的值不会导致缓存的大量减少,超过100的值则会告诉内核你希望以高优先级来清理缓存。
其实无论vfs_cache_pressure的值采用什么值,内核清理缓存的速度都是比较低的。
如果将此值设置为10000,系统将会将缓存减少到一个合理的水平。
-------------------------------------------------------------------------------------------------------------------------------------------------
cat /proc/sys/vm/swappiness
修改swappiness值为10
#sudo sysctl vm.swappiness=10
#sudo gedit /etc/sysctl.conf
vm.swappiness=10
设置vm.swappiness=0 后并不代表禁用swap分区,只是告诉内核,能少用到swap分区就尽量少用到,
设置vm.swappiness=100的话,则表示尽量使用swap分区,默认的值是60
------------------------------------------------------------------------------------------------------------------------------------------------
第三步:关闭swap,再开启swap(请在业务低峰期操作,有可能导致服务器挂掉)
#swapoff -a
#swapon -a
#free -m
swapon -s 会查看到你的swap分区是挂在哪里!
swapoff /dev/sda2
swapon -a

原文地址:https://www.cnblogs.com/xinfang520/p/9120736.html

时间: 2024-11-07 02:54:03

Linux记录-Linux Swap分区虚拟内存相关解决方案的相关文章

关于Linux系统安装中Swap分区的解释

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

linux下的swap分区

一.什么叫swap分区 swap分区,即交换区,swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中. 二.swap配置对性能的影响 Swap的调整对Linux服务器,特别是Web服务器的性能至关重要.通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用.但是

linux 文件作为Swap分区

linux 文件作为Swap分区1.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小).dd if=/dev/zero of=/var/swapfile bs=2M count=1024 2.格式化为交换分区文件:mkswap /var/swapfile #建立swap的文件系统 3.启用交换分区文件:swapon /var/swapfile #启用swap文件 4.使系统开机时自启用,在文件/etc/fsta

linux中对swap分区的管理

一:swap分区概念原理 swap分区:(存放内存溢出来的数据) 从功能上讲,交换分区主要是在内存不够用的时候,将部分内存上的数据交换到swap空间上,以便让系统不会因内存不够用而导致oom或者更致命的情况出现. 一:swap基本概念 前提:知道内存回收概念 为什么要进行内存回收? 1:内核需要为任何时刻突发到来的内存申请提供足够的内存.所以一般情况下保证有足够的free空间对于内核来说是必要的.所以内核有必要设计一个周期性回收内存的机制,以便cache的使用和其他相关内存的使用不至于让系统的剩

Linux使用文件创建swap分区

一. SWAP简介: Linux 中的 SWAP(交换分区),类似于 Windows 的虚拟内存.系统会把一部分硬盘空间虚拟成内存使用,将系统内非活动内存换页到 SWAP,以提高系统可用内存. 二. 使用文件创建SWAP 1. 创建用于交换分区的文件(10240个1M表示10G) dd if=/dev/zero of=swapfile.txt bs=1M count=10240 2. 格式化交换分区文件 mkswap /root/swapfile.txt 3. 立即启用交换分区文件 swapon

linux下创建swap分区

以centos6.8系统为列, 创建交换分区 查看当前系统的swap分区 [[email protected] ~]# swapon -s FilenameTypeSizeUsed   Priority /dev/sda3                               partition20725720      -1 创建/dev/sdb1分区 [[email protected] ~]# fdisk -l /dev/sdb Disk /dev/sdb: 214.7 GB, 21

linux系统修改Swap分区【转】

在装完Linux系统之后自己去修改Swap分区的大小(两种方法) 在安装完Linux系统后,swap分区太小怎么办,怎么可以扩大Swap分区呢?有两个办法,一个是从新建立swap分区,一个是增加swap分区.下面介绍这两种方法:第一您必须有root权限,过程中一定要很小心,一不小心就破坏了整个硬盘的数据,执行下面的过程之前您需要三思而行,错误操作后的后果由执行者自己承担.新建swap分区 1.以root身份进入控制台,输入 # swapoff -a          #停止交换分区 2. 用fd

linux补充挂载swap分区

机房的一台新装cento,top发现没有swap分区,看来机房初装系统有问题. [[email protected] ~]# top top - 18:26:53 up  3:41,  2 users,  load average: 0.00, 0.01, 0.05 Tasks: 213 total,   1 running, 212 sleeping,   0 stopped,   0 zombie Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.

zabbix Lack of free swap 报警   LINUX在线添加swap分区

收到zabbix报警Lack of free swap space on zabbix_server 1.查看内存状态 [[email protected] ~]# free -m total       used       free     shared    buffers     cached Mem:           488        450         37          6          6         46 -/+ buffers/cache: