日拱一卒无有尽,功不唐捐终入海

在Linux上启用Swap

  1. 内存管理:当系统运行的程序需要更多内存时,交换空间允许系统将部分内存数据暂时存储到磁盘上,以便为其他程序腾出空间。
  2. 防止系统崩溃:如果没有交换空间,当物理内存耗尽时,系统可能无法正常运行新程序或处理数据,甚至可能导致系统崩溃。交换空间提供了一种防止内存耗尽的机制。
  3. 提高系统稳定性:通过将不活跃的内存页移动到交换空间,系统可以保持运行,即使在内存使用率很高的情况下。

1. 检查是否已有Swap空间

你可以使用以下命令检查当前是否已经存在Swap空间:

swapon --show

2. 创建Swap文件

首先,创建一个空的Swap文件。假设你想创建一个2GB的Swap文件:

sudo fallocate -l 2G /swapfile

如果你的系统没有fallocate命令,可以使用以下命令来创建Swap文件:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

3. 设置正确的权限

确保只有root用户可以访问Swap文件:

sudo chmod 600 /swapfile

4. 将文件格式化为Swap区域

接下来,将这个文件格式化为Swap空间:

sudo mkswap /swapfile

5. 启用Swap文件

启用新创建的Swap文件:

sudo swapon /swapfile

6. 持久化设置

为了在重启后自动启用Swap文件,需要将其添加到/etc/fstab中:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab


7. 调整Swap行为(可选)

你可以通过调整swappiness值来控制系统使用Swap的频率。默认值通常为60,但你可以根据需要调整:

sudo sysctl vm.swappiness=10

这会将swappiness设置为10,表示只有在内存几乎用完时才会使用Swap。

你可以将这一设置添加到/etc/sysctl.conf文件中以使其永久生效:

echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

新服务器上没有设置Swap,理论内存只有2G。在运行一个命令后,发现终端反应特别卡,通过top命令发现内存基本上快耗尽了,而且kswapd0的CPU占用率超高(如果在系统监控工具中看到 kswapd0 占用了较高的 CPU 或 I/O 资源,这可能表明系统正在经历内存压力,可能需要增加物理内存或优化内存使用),判断服务器明显内存不足。

不想增加服务器预算,既然没有设置Swap,那当然首要就是先设置Swap了。当服务器缓过来后,开启2G的Swap,再次运行同样的命令,top显示Swap被使用,不卡、丝滑~~


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注