Linux - Swap
Swap空间的作用是确保系统的正常运行,并防止内存不足导致系统崩溃。它可以有效地处理内存压力,并允许系统在物理内存不足时继续运行。然而,由于硬盘的读写速度远慢于内存,当系统过度依赖Swap空间时,会导致性能下降。因此,合理配置Swap空间的大小非常重要。
配置和管理Swap空间是系统管理员的职责之一。通常,在Linux系统安装时,会自动设置Swap空间的大小。然而,用户也可以手动配置Swap空间的大小和位置。
以下是一些常见的配置和管理Swap空间的方法:
1. 检查当前系统的Swap空间使用情况:可以使用命令“free -h”来查看系统的内存使用情况,其中包括Swap空间的使用量。
2.
设置新的Swap空间:如果发现Swap空间不足或者需要增加Swap空间的大小,可以通过创建一个新的Swap分区来扩展Swap空间。使用“fdisk”命令创建一个新的分区,并使用“mkswap”命令将其格式化为Swap分区。然后,使用“swapon”命令将Swap分区添加到系统中。
3.
调整现有的Swap空间:如果需要调整当前的Swap空间大小,可以使用“swapoff”命令将Swap分区关闭,然后使用“mkswap”命令重新格式化,并使用“swapon”命令重新启用Swap空间。
4.
禁用Swap空间:有时候,用户可能需要禁用Swap空间。可以使用命令“swapoff”来关闭Swap分区。但是,在禁用Swap空间之前,务必确保系统具有足够的物理内存来支持运行中的进程。
5. 监控Swap空间的使用情况:可以使用命令“swapon -s”来监视当前系统中所有Swap空间的使用情况。
虽然Swap空间在Linux系统中起到了重要的作用,但并不是所有情况下都需要依赖Swap空间。如果系统具有足够的物理内存来支持运行中的进程,并且RAM占用率较低,那么Swap空间的使用可能相对较少。在某些情况下,禁用Swap空间甚至可以提高系统的性能。因此,对于具体的系统需求,正确地配置和管理Swap空间非常重要。
总而言之,Swap空间是Linux操作系统中用作内存扩展的特殊硬盘空间。它的作用是提供额外的虚拟内存以确保系统的正常运行。正确配置和管理Swap空间可以帮助保持系统的稳定性和性能。定期监控Swap空间的使用情况,并根据实际情况调整Swap空间的大小是系统管理员的责任。
首先,swap是硬盘上的一块空间。
其次,当内存没有多余空间的时候,可以将一部分数据交换到swap空间。也就是将内存中的一部分数据放到硬盘中,并释放内存空间。这样,释放出的内存空间就又可以被利用来存储其他数据了。
这样,本来只有4G的内存,如果swap有2G的话,可使用的内存可以认为是6G。
但是,硬盘的速度比内存慢太多太多了。因此swap只是对内存的一种补充,是在内存不足时对内存的扩充,但是不能代替内存使用。
内存不足时, 操作系统 会选择 最久没被使用的内存数据 ,交换到swap空间。
注意,交换操作是由操作系统来进行的。
系统在什么情况或条件下才会使用Swap分区的空间呢? 其实是Linux通过一个参数swappiness来控制的。当然还涉及到复杂的算法。
这个参数值可为 0-100,控制系统 swap 的使用程度。
0告诉内核尽可能的不要将内存数据移到swap中,也即只有在迫不得已的情况下才这么做,而100告诉内核只要有可能,尽量的将内存中不常访问的数据移到swap中。默认值为 60。注意:这个只是一个权值,不是一个百分比值,涉及到系统内核复杂的算法
查看当前系统中swappiness的值
修改当前系统中swappiness的值
上面通过sysctl修改的swappiness值在系统重启后会失效,要想重启后继续生效,需要修改配置文件/etc/sysctl.conf,将下面这行修改成10,如果文件中找不到这行的话,在文件末位加上这行就可以了
既然配置swap对桌面系统有帮助,那么配置多少大小的swap比较合适呢?下面是ubuntu给出的建议:
Linux下有两种类型的swap空间,swap分区和swap文件,他们有各自的特点:
swap分区上面由于没有文件系统,所以相当于内核直接访问连续的磁盘空间,效率相对要高点,但由于swap分区一般安装系统时就分配好了了,后期要缩减空间和扩容都很不方便。
swap文件放在指定分区的文件系统里面,所以有可能受文件系统性能的影响,但据说2.6版本以后的内核可以直接访问swap文件对应的物理磁盘地址,相当于跳过了文件系统直接访问磁盘,不过如果swap文件在磁盘上的物理位置不连续时,还是会对性能产生不利影响,但其优点就是灵活,随时可以增加和移除swap文件。
如果配置有多个swap分区或者文件的话,这里将会有多行,每行代表一个正在被系统使用的swap分区或文件,下面是每个字段的意思:
并不是swap空间占用多就一定性能下降,真正影响性能是swap in和out的频率,频率越高,对系统的性能影响越大,我们可以通过vmstat命令来查看swap in/out的频率
在添加swap分区前,首先得有一个空闲的分区,如果是一块新的磁盘,可以用fdisk来创建一个新的分区用于swap。
添加swap文件就简单多了,也没有分区操作那么有风险。
通过如下命令,能查看所有进程的使用swap情况
查看某个进程swap占用内存大小脚本:
查看所有进程使用swap情况脚本: