Linux板卡开启SWAP虚拟内存

一、前言

囊中羞涩,买了一块4GB的RDKX5板卡,不过在本地跑asr模型的时候,发现内存已经基本上被耗尽了,导致模型发生内存溢出、崩溃的现象。所以就打算开启SWAP内存,将tf卡的一部分空间作为运行内存,可以暂时顶替一下。

image

二、流程:

整个流程大体可以分为三个步骤:创建 Swap 文件、激活 Swap 和 配置 Swap 参数

1. 创建和准备 Swap 文件

# 分配一个 6GB 大小的文件
sunrise@ubuntu:~/Desktop$ sudo fallocate -l 6G /swapfile

sunrise@ubuntu:~/Desktop$ sudo dd if=/dev/zero of=/swapfile bs=1M count=6144

上面的指令二选一即可。
fallocatedd 指令都可以创建由于创建大文件,不过二者在原理上存在区别:

  • fallocate:速度非常快,因为它只是在文件系统层面预分配空间,并不会真的写入数据。
  • dd:会从 /dev/zero(一个无限输出0的设备)读取数据,并一个块一个块地写入到 /swapfile 中。这个过程比较慢,但兼容性更好(例如在某些不支持 fallocate 的文件系统上)。

2. 给Swap文件分配权限

# 设置文件权限
sunrise@ubuntu:~/Desktop$ sudo chmod 600 /swapfile

3. 将文件格式化为Swap格式:

# 将文件格式化为 Swap 空间
sunrise@ubuntu:~/Desktop$ sudo mkswap /swapfile

这一步是告诉系统,这个文件将被用作交换空间,并写入必要的元数据(比如 UUID)。

4. 激活和持久化 Swap

# 临时激活 Swap 文件
sunrise@ubuntu:~/Desktop$ sudo swapon /swapfile

# 检查 Swap 是否激活
sunrise@ubuntu:~/Desktop$ free -h

如果显示下图,说明Swap空间就创建成功了:
image

5. 设置Swap文件开机自动挂载

# 编辑 fstab 文件以实现开机自动挂载
sunrise@ubuntu:~/Desktop$ sudo nano /etc/fstab

然后在文件当中写入:

/swapfile none swap sw 0 0

到此为止Swap空间就开辟完成了,不过还有配置可以选择,请往下看:

6. 配置Swap空间的使用频率

仅仅开启 Swap 空间还不够,我们还需要考虑它的使用效率。记住,我们的 Swap 空间是建立在速度较慢的 TF 卡上的,如果系统过于频繁地读写 Swap 空间(这个过程称为“交换”),会导致整个系统响应变慢,出现明显的卡顿。
所以,我们的目标是:让系统尽量使用物理内存(RAM),只在物理内存实在不够用的时候,才去动用慢速的 Swap 空间。
这个“使用频率”或“积极性”由一个叫做 swappiness 的内核参数控制,它的值范围是 0 到 100。
swappiness 越高 (例如默认值 60):内核会更“积极”地使用 Swap。它会倾向于将内存中不常用的数据移到 Swap 中,从而为文件缓存等操作释放出更多物理内存。这对于拥有高速硬盘的服务器来说可能有利。
swappiness 越低 (例如 10):内核会变得很“懒”,会尽可能地把数据保留在高速的物理内存里,最大限度地避免使用 Swap,直到物理内存快要耗尽时才进行交换。
对于我们这种使用 TF 卡的板卡,低 swappiness 值是提升系统流畅度的关键。强烈建议设置为 10。

操作步骤:

  • a. 查看当前的 swappiness 值

执行以下命令,你会看到系统当前的 swappiness 值,通常默认为 60。

sunrise@ubuntu:~/Desktop$ cat /proc/sys/vm/swappiness
60
  • b. 临时修改 swappiness 值(立即生效)

我们可以用 sysctl 命令临时把它修改为 10。这个设置会立即生效,但系统重启后会失效。

sunrise@ubuntu:~/Desktop$ sudo sysctl vm.swappiness=10
vm.swappiness = 10

你可以再次用 cat /proc/sys/vm/swappiness 命令检查,会发现值已经变成了 10。

  • c. 永久修改 swappiness 值(开机自动生效)

为了让这个设置在每次重启后都保持不变,我们需要将它写入配置文件中。

# 编辑 sysctl 配置文件
sunrise@ubuntu:~/Desktop$ sudo nano /etc/sysctl.conf

在文件的末尾,添加新的一行:

vm.swappiness=10

然后按 Ctrl + X,接着按 Y,最后按回车键保存并退出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值