在我们自己的购买的服务器环境中,一般是买的1g的内存,但是当服务器里面的东西装的比较多的时候就会导致内存不够用了,这个时候可以通过增加虚拟内存来夸大内存容量。
¶设置
0、查看内存使用情况
1 | $ free -m |
1、检查 Swap 空间,先检查一下系统里有没有既存的 Swap 文件
1 | $ swapon -s |
如果返回的信息概要是空的,则表示 Swap 文件不存在。
2、创建文件并全部写入0.
1 | $ dd if=/dev/zero of=/swapfile bs=1G count=4 |
以上命令创建4G的全零文件。
【参数说明】
- if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
- of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
- bs=bytes:同时设置读入/输出的块大小为bytes个字节
- count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。
3、将创建的文件转为swap
1 | $ mkswap /swapfile |
4、激活
1 | $ swapon /swapfile |
之后可使用0,1步骤中的命令检测是否开启成功。
5、(可选)如果要机器重启的时候自动挂载 Swap ,那么还需要修改/etc/fstab
,添加如下行:
1 | /swapfile swap swap defaults 0 0 |
6、删除文件Swap
1 | $ swapoff /swapfile #卸载swap文件 |
如果进行了步骤5,须相应删除该行。
¶相关知识
交换技术
交换(Swapping)技术它的主要特点是:打破了一个程序一旦进入内存,就一直驻留在内存直到运行结束的限制。
在多道程序环境下,内存中可以同时存在多个进程(程序),其中的一部分进程由于等待某些事件而处于阻塞状态,但这些处于阻塞状态的进程仍然驻留内存,并占据着内存空间;另一方面,外存上可能有许多等待装入内存运行的程序,却因内存不足而未能装入。显然,这是一种严重的系统资源浪费,它会使系统的吞吐量下降。为了解决这个问题,可以在操作系统中增加交换(对换)功能,即由操作系统根据需要,将内存中暂时不具备运行条件的部分程序或数据移到外存(换出),以便腾出足够的内存空间,将外存中需要运行的程序或数据调入内存(换入)投入运行。在操作系统中引入交换(对换)技术,可以显著提高内存资源的利用率并改善系统的性能。
以交换的单位不同来划分,则有以下两种交换方式。
以进程为单位的交换。每次换入/换出的是整个进程,我们称这种交换为进程交换(进程对换)或整体交换(整体对换)。进程交换广泛应用于分时系统,主要解决内存紧张问题。
以页(此处不多做介绍)或段(此处不多做介绍)为单位的交换。这种交换分别称为页置换(页交换或页对换)或段置换(段交换或段对换),页置换和段置换是以进程中的某一部分为交换单位,因此又称为部分交换(部分对换)。部分交换广泛应用于现代操作系统中,是实现虚拟存储器的基础。
我们这里所说的交换是指进程交换,为了实现进程交换,操作系统需要解决以下两个问题。
对换空间的管理。在具有交换功能的操作系统中,一般将外存空间分为文件区和交换区(对换区)。文件区用来存放文件,而交换区则用来存放从内存中换出的进程,或等待换入内存的进程。尽管文件区一般采用离散分配方式来分配外存存储空间,但交换区的存储空间分配则宜采用连续分配方式,这是因为交换区中存放的是换入/换出的进程,为了提高交换速度,有必要采用连续分配方式,并且交换区可以采用与可变分区存储管理类似的方法进行管理。例如,使用空闲分区表或空闲分区链来记录外存交换区的使用情况,利用首次适应算法、最佳适应算法或最差适应算法来进行外存交换区的分配。
交换的时机以及选择哪些进程交换。交换时机一般选择在进程的时间片用完,以及进程等待输入/输出时,或者在进程要求扩充其内存空间而得不到满足时。换出到外存的进程一般选择处于阻塞状态,或优先级低且短时间内不会再次投入运行的进程;换入到内存的进程则应选择换出时间最久且已处于就绪状态的进程。