树莓派5 优化与踩坑
本文记录我使用树莓派 5 过程的经验,即是笔记,也是分享。
优化:增大 swap 分区
我在我的树莓派 5 4GB 上跑 Docker,部署了多个服务。当加入 Nextcloud 后,系统开始出现明显卡顿,响应速度大幅下降。输入 top 命令发现,内存几乎用满,swap 更是直接 100% 占用:
MiB Mem : 4049.9 total, 146.7 free, 3369.8 used, 789.0 buff/c
MiB Swap: 200.0 total, 0.0 free, 200.0 used. 680.1 avail这时我才发现树莓派 5 的 Raspberry Pi OS (Bookworm) 默认仅配置了 200MB swap。这个保守的设置可能是为了照顾使用 SD 卡的用户——毕竟频繁的 swap 读写会严重缩短 SD 卡寿命。
但既然树莓派 5 已经配备了 PCIe 接口,官方也推出了专用的 M.2 HAT+ 和 SSD 套件,如果你和我一样使用 SSD 作为系统盘,完全可以将 swap 调大,充分发挥 SSD 的读写性能和耐用性优势。
打开配置文件:
sudo nano /etc/dphys-swapfile修改
CONF_SWAPSIZE,我的树莓派系统是安装在 SSD 上的,所以 swap 调大点没关系。如果你用的是 SD 卡,建议设置小点,不要超过 1GB,因为频繁的 swap 读写会大幅缩短 SD 卡寿命。CONF_SWAPSIZE=4096为了设置超过 2GB 的 swap, 还需要修改
CONF_MAXSWAP调大限制,可以和CONF_SWAPSIZE一致,也可以设置的更大一些方便后续调整。CONF_MAXSWAP=4096重启 swap 服务
sudo /etc/init.d/dphys-swapfile restart验证
free -h
优化:开启 zram
在 AI 的建议下,我还开启了 zram。zram 是一个在内存中创建压缩交换空间的技术。简单来说,它会将不常用的内存页压缩后存储在内存里,通常能达到 2-3 倍的压缩比。对于树莓派这种内存有限的设备来说,zram 是个非常实用的优化手段。
安装
sudo apt update sudo apt install zram-tools验证
cat /proc/swaps可以看到
Filename Type Size Used Priority /dev/zram0 partition 262128 257344 100 /var/swap file 4194288 697648 -2
避坑:树莓派 5 PCIe 排线干扰
如果你使用树莓派 5 搭配 树莓派官方 M.2 套件(HAT+),建议不要把树莓派直接叠放在路由器上。
之前有段时间,我发现树莓派经常重启,有时甚至直接卡死无响应。最严重的一次,我部署的 Karakeep 书签服务因为底层数据错误导致数据库损坏,数据瞬间全丢,万幸最后从 Meilisearch 中抢救回来了。
排查过程中我尝试了很多方法(包括修改PCIe节能设置等),最后发现罪魁祸首可能是官方 FPC 排线的抗干扰能力不足(虽然官方说是抗干扰的)。后来我将树莓派与路由器物理分离一段距离后,就再也没出现过类似问题。
如果你不需要使用树莓派的 WiFi 功能,也建议关闭。
参考链接
https://linuxblog.io/raspberry-pi-performance-add-zram-kernel-parameters/
https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/559