# Swap 設定 ###### tags: `Ubuntu` `Technology` > **Date**:2023/02/07 > **Taker**:Sin ### Init Swapfile and enable 16G (option) swap ```bash sudo fallocate -l 16G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile ``` ### Auto enable swap after reboot ```bash sudo vim /etc/fstab ``` ```bash /swapfile swap swap sw 0 0 ``` ### Optimization swap ```bash sudo vim /etc/sysctl.conf ``` ```text vm.swappiness=10 vm.dirty_ratio=90 vm.dirty_background_ratio=5 vm.dirty_expire_centisecs=500 vm.vfs_cache_pressure=500 ``` ### 參數說明 #### `vm.swappiness`:控制 swap 使用率 - 0:優先使用物理內存,然後才是 swap 空間 - 100:積極使用 swap 分區,並將內存數據及時轉移到 swap 空間 - 預設為 60:當內存使用達到 40% 時,開始使用 swap 分區 > 因為 RAM 的速度遠超過 Disk,大量使用 Disk 會增加系統 IO,影響性能,所以應優先使用 RAM。 #### `vm.dirty_ratio`:調整寫緩沖區大小 - 單位為百分比,當寫緩沖使用到系統內存的一定比例(如 10%)時,開始將數據寫入 Disk - 增大此值會使用更多系統內存作為磁盤寫緩沖,提高寫性能。但在需要持續寫入的情況下,應降低此值。預設為 10。 #### `vm.dirty_background_ratio`:控制系統後台進程 - 單位為百分比,當寫緩沖使用到系統內存的一定比例時,觸發後台回寫進程,將緩存的臟頁異步刷入外存 - 增大此值會使用更多系統內存作為磁盤寫緩沖,提高寫性能。但在需要持續寫入的情況下,應降低此值。預設為 5。 #### `vm.dirty_expire_centisecs`:控制數據“舊化”時間 - 單位為 1/100 秒,預設為 3000(即 30 秒)。當寫緩沖區的數據達到此“舊化”時間後,將刷新磁盤 - 對於寫操作較重的情況,適當縮小此值可以提高 IO。但縮小太多會導致 IO 提高太快。建議設置為 1500(即 15 秒)。 #### `vm.vfs_cache_pressure`:控制虛擬內存回收 directory 和 inode 緩沖的傾向 - 此值越大,越容易回收。預設值為 100,表示內核會根據 pagecache 和 swapcache,保持 directory 和 inode cache 在一個合理的比例 - 若此值超過 100,將導致 Kernel 傾向於回收 directory 和 inode cache。 ### Reference 1. https://www.wongwonggoods.com/linux/linux-swap/ 2. https://blog.csdn.net/tenfyguo/article/details/50185915
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up