虚拟内存是为了满足物理内存不足采纳的策略,利用磁盘空间虚构出一块逻辑内存,用作虚拟内存的空间也就是替换分区。作为物理内存的扩大,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性能进一步升高,最终反而升高了零碎总体性能。