**特别注意:
SWAP技术会导致存储设备的频繁擦写,而SD卡等设备并不具备与闪存一样的擦写能力。
因此,SWAP操作会降低SD卡的寿命(但远水解不了近渴,SWAP总比自己更改硬件来的容易)。
问题描述
目前,绝大多数Jetson nano的CPU与GPU采取了共享运行内存的模式,且其内存大小往往仅有2-4GB左右(笔者设备的运行内存为4GB)。
当想要将Jetson nano作为边缘设备,并部署深度学习模型时,我们就会面临一个很大的“窘境”:深度学习模型参参数量巨大,而导致运行内存不足的问题,最终进程被操作系统“Kill”。
解决方案
在尝试解决这个问题的时候,我突然想起了SWAP技术(存储内存共享为运行内存):SD卡上还有很多存储空间呢,我的设备是128GB的SD卡。
- 下载虚拟内存管理软件
$ git clone https://github.com/JetsonHacksNano/installSwapfile.git
$ cd installSwapfile
- 安装(默认自动分配6G为SWAP内存)
(1)输入如下命令运行程序,默认SWAP为6G;若想分配其他大小的内存,请参考本篇附录:
$ ./installSwapfile.sh
(2)将会看到如下信息,并输入Linux系统的管理员密码。
Creating Swapfile at: /mnt
Swapfile Size: 6G
Automount: Y
(3)看到如下信息后,则说明安装成功。
Swap file has been created
Reboot to make sure changes are in effect
(4)使用jtop命令(此命令容易在CSDN上找到安装方法,在此不做赘述)查看Jetson nano的资源情况。
$ jtop
会看到Memory下方出现了一个SWAP的资源,大小为6G。
附录
$ ./installSwapfile.sh [[[-d directory ] [-s size] -a] | [-h]]
- -d:dir的缩写,表示分配的虚拟内存在SD卡中的位置,默认为/mnt。
- -s:size的缩写,分配的虚拟内存大小,默认为6G。
- -a:auto的缩写,默认为Y,即开机时自动打开虚拟内存,此项不需要额外设置。
- -h:help的缩写,即弹出帮助文档。
- 软件在Github上的下载地址:installSwapfile软件