前言:有一次在RK3399上面编译tensorflow的时候出现被操作系统强制杀死的情况,经过排查发现是RAM耗尽导致的。由于tensorflow只能用bazel编译,而bazel是使用java虚拟机运行的,对内存的占用很大。所以应该怎么办呢,其实这个时候可以使用时间换空间的做法,通过临时创建swap交换空间来解决这个问题。很多人可能要问了swap交换空间不可以在刷写镜像的时候就分好吗?这个当然是可以的,只不过受限于emmc(开发板很少ufs这么高级的闪存)容量一般为了节省成本很多嵌入式设备都是采用8g/16g这种小容量的emmc闪存,本身操作系统需要占用好几G,再加上用户自己加装的APP,就没多少空间了。所以如果开发板真的遇到这种场景的话临时的swap空间就会是一个不错的解决方案,等用完了卸载删除就行了,也不会破坏操作系统本身。
环境:
操作系统:Ubuntu 18.04.3 LTS
架构:Aarch64
内核:Linux 4.4.167
机器型号:RK3399
CMake:3.10.2
GCC:Ubuntu/Linaro 7.5.0-3ubuntu1~18.04
G++:Ubuntu/Linaro 7.5.0-3ubuntu1~18.04