Linux要超内存,自然需要依靠swap。 Swap虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。 什么时候可以启用swap? 如果物理内存不足,或者防止突然的内存溢出,导致进程被杀死。可以用swap。 如何启用swap? 可以将一个分区,或者一个文件作为swap,使用swapon启用。 以文件形式 #创建一个16G的swap,bs * count =16G dd if=/dev/zero of=/swapfile bs=1G count=16 #配置安全的权限 chmod 0600 /swapfile #格式化成swap mkswap /swapfile #挂载swap swapon /swapfile #验证 free -h 以分区形式 创建一个新的分区,如/dev/sdb4 #格式化成swap mkswap /dev/sdb4 #挂载swap swapon /dev/sdb4 #验证 free -h Swap策略? Linux有个内核参数vm.swappiness。值为0-100,0代表不怎么想用swap,100代表非常想用swap。 举个例子,电脑有 16 GB 的内存和 8 GB 的swap。如果我在内核参数中使用 60 swappiness,那么在使用大约 6 GB (16G*40% == 6.4G)的内存后,机器开始使用swap。 查看当前的swap策略 要检查系统上的当前 swappiness 值,请使用以下 cat 命令: cat /proc/sys/vm/swappiness # 大多数 Linux 发行版上的默认 swappiness 值为 60 您可以用来确定 swappiness 值的另一个命令是 sysctl : sysctl vm.swappiness vm.swappiness = 60临时调整的方法如下,我们调成10: 临时调成swap策略 # 方法1: [root@timeserver ~]# sysctl vm.swappiness=10 vm.swappiness = 10 # 方法2: [root@timeserver ~]# echo 10 > /proc/sys/vm/swappiness 新值会立即使用,无需重新启动。 这只是临时调整的方法,重启后会回到默认设置的 永久更改Swappiness 值 要想永久调整的话,需要在/etc/sysctl.conf修改,加上: [root@timeserver ~]# cat /etc/sysctl.conf vm.swappiness=10 激活设置 [root@timeserver ~]# sysctl -p 启用Swap有什么优劣? 优:缓解物理内存压力 劣1:Swap没有物理内存的速度,过多使用Swap会降低运行性能。且如果Swap所在的硬盘性能不足,还会导致严重的io延迟。总体性能下降明显。Windows虚拟机会明显卡顿。 劣2:如果大量使用swap,可能造成内存错误! 如何减小Swap的不良影响 使用一块或者多块高性能的NVME硬盘做swap。 增加物理内存。 (责任编辑:IT) |