https://shumeipai.nxez.com/2017/12/18/how-to-modify-raspberry-pi-swap-partition.html
https://shumeipai.nxez.com/2024/12/11/boost-the-performance-of-your-raspberry-pi-with-sdram-tuning.html
三、树莓派的swap
树莓派是嵌入式设备,硬件受限:物理内存较小(早期型号256MB/512MB,现代型号2GB/4GB/8GB)、存储介质多为SD卡(读写速度慢、擦写寿命有限),因此swap的配置更注重“避免过度使用”,以平衡功能与硬件寿命。
1. 树莓派swap的特点
- 默认配置:树莓派官方系统(Raspbian/Raspberry Pi OS)默认启用swap文件(
/var/swap
),初始大小通常为100MB~2GB(随系统版本和内存变化),且默认限制swap使用率(避免SD卡过度磨损)。 - 存储限制:SD卡的擦写次数有限(通常TLC颗粒约1000次),频繁swap会导致SD卡快速老化(“掉卡”或数据损坏),因此树莓派的swap需严格控制使用频率。
2. 树莓派swap的配置调整
-
增大swap文件(临时需求):
若运行内存密集型任务(如编译Python/Rust程序、运行轻量级Web服务器),可临时扩容swap:# 关闭当前swap sudo dphys-swapfile swapoff # 编辑配置文件,设置新大小(如2GB) sudo nano /etc/dphys-swapfile # 修改 CONF_SWAPSIZE=2048 # 重建并启用swap sudo dphys-swapfile setup sudo dphys-swapfile swapon
-
降低swap使用率(保护SD卡):
减小vm.swappiness
值(如设为10),让内核尽量使用物理内存,仅在迫不得已时使用swap:# 临时生效 sudo sysctl vm.swappiness=10 # 永久生效(重启后保留) echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
-
使用外部存储作为swap:
若需频繁使用swap,可将swap文件创建在USB硬盘/SSD上(寿命更长、速度更快),步骤类似上述“增大swap”,但需将/etc/dphys-swapfile
中的CONF_SWAPFILE
路径指向外部存储(如/mnt/usb/swapfile
)。
3. 树莓派swap的应用场景
- 临时内存扩展:运行超出物理内存的轻量任务(如小型数据库、数据处理脚本),避免进程被OOM杀死。
- 编译环境支持:树莓派编译大型软件(如Python库、内核)时,临时启用大swap可避免编译中断(但速度较慢,需耐心)。
- 多任务应急:同时运行多个轻量服务(如SSH、Web服务器、监控程序)时,swap可缓解内存压力。
三、PC与树莓派swap的核心差异
维度 | PC的Linux swap | 树莓派的swap |
---|---|---|
物理内存 | 较大(通常≥4GB) | 较小(通常≤8GB,旧型号≤1GB) |
存储介质 | SSD/HDD(速度快,寿命长) | SD卡/eMMC(速度慢,擦写寿命有限) |
主要形式 | swap分区(传统)或swap文件(灵活) | 几乎均为swap文件(方便调整) |
性能关注点 | 优先保证swap读写速度(减少卡顿) | 优先限制swap使用(保护存储介质) |
典型swapiness值 | 默认60(平衡内存与swap使用) | 建议10~20(尽量用物理内存) |
核心应用 | 内存溢出应急、支持休眠 | 临时任务扩展、避免进程崩溃 |
总结
swap是Linux系统的重要内存管理机制,无论是PC还是树莓派,其核心功能都是“内存不足时的缓冲”。但由于硬件差异:
- PC的swap可更“大胆”使用,注重性能与灵活性;
- 树莓派的swap需“谨慎”使用,优先保护SD卡寿命,仅在必要时临时扩容。
实际使用中,需根据设备硬件和任务需求调整swap配置,避免“过度依赖swap导致性能下降”或“swap不足导致进程崩溃”。