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不足导致进程崩溃”。