返回上一级

新服务器到手后设置扩展内存那些事-Swap

检查swap

1swapon -s

Type=file(Swapfile)

Type=partition(zram)

无(无swap)

Swapfile(swap)

在内存不够用的时候,将部分内存上的数据交换到swap(硬盘)空间上,以便让系统不会因内存不够用而导致oom或者更致命的情况出现。建议服务器使用

查看swap是否有创建

1free -m

使用文件作为swap分区

 1#使用dd创建swap文件/data/swapfile,大小为1G
 2dd if=/dev/zero of=/data/swapfile bs=1M count=1024
 3#---或---
 4#使用fallocate创建swap文件/data/swapfile,大小为1G
 5fallocate -l 1G /data/swapfile
 6
 7#交换文件格式化为swap分区
 8mkswap /data/swapfile
 9#设置权限
10chmod 600 /data/swapfile
11#启用swap分区
12swapon /data/swapfile
13#设置开机自动启用swap分区
14vi /etc/fstab
15#添加一行
16/data/swapfile swap swap defaults 0 0

卸载swap分区

1swapoff /data/swapfile

删除swap分区

1rm -rf /data/swapfile

设置swap分区使用优先级

 1#查看优先级设置,0不使用swap分区,100尽可能使用swap分区,根据需求设置一个中间值即可
 2cat /proc/sys/vm/swappiness
 3
 4#临时设置优先级,内存占用超过70%后写如swap
 5sysctl vm.swappiness=30
 6
 7#设置开机自动生效
 8echo "vm.swappiness = 30"  >>  /etc/sysctl.conf
 9#加载sysctl.conf参数
10sysctl -p

释放虚拟内存命令

 1# sync命令可以多执行几遍
 2# drop_caches的值(N)可以是0-3之间的数字,代表不同的含义:
 3
 4# 0:不释放(系统默认值);默认情况下表示不释放内存,由操作系统自动管理;
 5
 6# 1:释放页缓存;
 7
 8# 2:释放dentries和inodes;
 9
10# 3:释放所有缓存。
11
12echo N > /proc/sys/vm/drop_caches

Swap Partition(zram、交换分区)

zRAM 机制是将进程不常用的内存压缩存储在内存某个区域。 zRAM 机制并不会发生 I/O 操作,从而避免因 I/O 操作导致的性能下降。建议安卓手机使用

监看 zram

1zramctl

创建zram

zRAM 是 Linux 内核的模块,要启用 zRAM 请使用 modprobe 命令加载 zRAM 模块。

1modprobe zram num_devices=1
2# 然后运行 lsmod 命令确认是否成功加载
3lsmod  | grep zram

配置 zRAM

1# 设置了 zram0 的大小为 512MB,能够存储 512MB 压缩后的数据。
2echo 512M > /sys/block/zram0/disksize
3# 更改 zRAM 的压缩算法
4echo lzo > /sys/block/zram0/comp_algorithm
5# 方括号扩着哪个算法就说明启用了哪个
6cat /sys/block/zram0/comp_algorithm

持久化开启/加载 zRAM 模块

1# 格式化为zram
2mkswap /dev/zram0
3# 启用zram
4swapon /dev/zram0