Raspberry Pi 調整 swap 虛擬記憶體
Contents
Raspberry Pi 預設的 Swap 空間只有 100MB,在跑 Prometheus、Transmission 等較吃資源的服務時,記憶體加 Swap 加起來仍然不夠,容易導致服務被系統強制終止(OOM Kill)。本文說明如何調整 Swap 大小,並了解相關的注意事項。
為何需要調整 Swap
Swap(交換空間)是一種虛擬記憶體機制,當實體 RAM 不足時,作業系統會把部分記憶體內容搬移到 Swap 區,騰出空間給當前執行的程式。
Raspberry Pi 各型號的 RAM:
| 型號 | RAM |
|---|---|
| Pi Zero / Zero 2 | 512MB |
| Pi 3B / 3B+ | 1GB |
| Pi 4B | 2GB / 4GB / 8GB |
問題:Raspberry Pi OS 預設只設定 100MB Swap,對於需要長時間執行服務的情境遠遠不夠。
查看目前 Swap 使用情況
|
|
調整 Swap 大小的步驟
Raspberry Pi OS 使用 dphys-swapfile 管理 Swap,設定檔在 /etc/dphys-swapfile。
步驟一:編輯設定檔
|
|
找到 CONF_SWAPSIZE 這行,修改為想要的大小(單位:MB):
|
|
也可以改用 CONF_SWAPFACTOR,讓 Swap 自動設定為 RAM 的倍數:
|
|
步驟二:重新啟動 dphys-swapfile 服務
|
|
步驟三:確認設定生效
|
|
Swap 過大的缺點
雖然增加 Swap 可以避免 OOM 問題,但也有副作用:
- SD Card 壽命減少:Swap 會頻繁讀寫 SD Card,而 SD Card 的寫入次數(P/E 次數)有限,過度使用會加速老化。
- 效能低落:Swap 的速度遠低於 RAM,頻繁 Swap 會讓系統反應變慢。
- 掩蓋真正問題:Swap 用盡不代表 Swap 不夠,有時是記憶體洩漏(Memory Leak)的症狀。
建議:
- 一般情況設定 512MB 到 1GB 即可
- 若 Swap 長期接近滿載,應考慮使用 USB SSD 取代 SD Card,或升級到更高 RAM 的型號
- 可將 Swap 設定到 USB 外接儲存裝置上,延長 SD Card 壽命
監控 Swap 使用情況
|
|