共计 1305 个字符,预计需要花费 4 分钟才能阅读完成。
虚拟内存是为了满足物理内存不足采纳的策略,利用磁盘空间虚构出一块逻辑内存,用作虚拟内存的空间也就是替换分区。作为物理内存的扩大,Linux 会在物理内存不足时,应用替换分区的逻辑内存,内核会把临时不必的内存块信息写到替换空间,这样物理内存就失去了开释,这块儿内存就能够用于其余目标,而须要用到这些内容的时候,这些信息就会被从新从替换分区读入物理内存。Linux 的内存治理采纳的是分页存取机制,为了保障物理内存失去充沛的利用,内核会在适当的工夫把物理内存中不常常应用的数据块儿主动替换到虚拟内存中,而将充沛应用的信息保留到物理内存中。
注:个别在各个云产商购买的云服务器都是不会给咱们增加虚拟内存。
例如通过阿里云装置的零碎,不会主动给咱们调配 Swap 虚拟内存空间;Swap 分区或虚拟内存文件,是在零碎物理内存不够用的时候,由零碎内存管理程序将那些很长时间没有操作内存数据,长期保留到 Swap 分区虚拟内存文件中,以进步可用内存额度的一种机制。当那些程序要再次从新运行时,会再从 Swap 分区或虚拟内存文件中复原之前保留的数据到内存中。
一开始用 free -m 和 df - h 查看当初内存的状况
创立 swap 分区,输出指令: dd if=/dev/zero of=/data/swap bs=512 count=4096000(因为我的内存是 2G,所以虚拟内存设为内存的 1~2 倍,则 2048 * 2 = 4096)
此处的命令创立 swap 大小为 bs*count=4096000(4G),如下图:
通过 mkswap 命令将下面新建出的文件做成 swap 分区, 指令: mkswap /opt/swap
查看内核参数 vm.swappiness 中的数值是否为 0,如果为 0 则依据理论须要调整成
查看指令:cat /proc/sys/vm/swappiness
调整指令:sysctl -w vm.swappiness=60
此处默认为 0,依据须要调整为 60.(我这里设置的是 60,因为物理内存比拟小,如果大量应用 swap 空间影响 IO 性能。还是要充沛压迫物理内存。)
输出 swapon /data/swap
输出 echo “/data/swap swap swap defaults 0 0” >> /etc/fstab
(尽管当初曾经失效,然而等下次服务器重启之后。该 swap 虚构磁盘会生效,为保障永恒失效,还需往 /etc/fstab 文件增加分区信息:)
再次应用 cat /proc/swaps 查看 swap 分区是否启动, 如下图曾经为启动胜利.
再次用 free -m 和 df -h 查看磁盘状况,能够看到 swap 替换区曾经建设,磁盘相比一开始的容量缩小了 1.9G
PS: 相干操作会导致额定的 IO 开销,特地是,如果内存使用率曾经十分高,而同时 IO 性能也不是很好的状况下,该机制其实会起到相同的成果:不仅零碎性能晋升较小(因为内存使用率曾经十分高了),而且因为频繁的内存到 Swap 的切换操作,会导致产生大量额定的 IO 操作,导致 IO 性能进一步升高,最终反而升高了零碎总体性能。