Linux板卡开启SWAP虚拟内存
一、前言囊中羞涩,买了一块4GB的RDKX5板卡,不过在本地跑asr模型的时候,发现内存已经基本上被耗尽了,导致模型发生内存溢出、崩溃的现象。所以就打算开启SWAP内存,将tf卡的一部分空间作为运行内存,可以暂时顶替一下。
二、流程:
整个流程大体可以分为三个步骤:创建 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上面的指令二选一即可。
fallocate 和 dd 指令都可以创建由于创建大文件,不过二者在原理上存在区别:
[*]fallocate:速度非常快,因为它只是在文件系统层面预分配空间,并不会真的写入数据。
[*]dd:会从 /dev/zero(一个无限输出0的设备)读取数据,并一个块一个块地写入到 /swapfile 中。这个过程比较慢,但兼容性更好(例如在某些不支持 fallocate 的文件系统上)。
2. 给Swap文件分配权限
# 设置文件权限
sunrise@ubuntu:~/Desktop$ sudo chmod 600 /swapfile3. 将文件格式化为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空间就创建成功了:
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,最后按回车键保存并退出。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]