Jawaban singkatnya:
Setel file swap Anda ke:
round(sqrt(RAM))
jika Anda tidak menggunakan hibernasi
RAM+round(sqrt(RAM))
jika Anda menggunakan hibernasi
Atur swappiness
10 Anda di desktop, tetapi tidak di server!
Jawaban panjangnya:
Di masa lalu:
Aturan praktis yang digunakan selama 25 tahun terakhir adalah minimum 1xRAM dan 2xRAM maksimum sehingga itulah yang akan Anda lihat dikutip sepanjang waktu.
Minimum itu diatur kembali di zaman batu ketika saya masih remaja dan dinosaurus masih berkeliaran di Bumi dan karena RAM terlalu mahal dan Anda benar-benar membutuhkan ruang swap untuk dapat mencapai apa pun.
Maksimum ditetapkan pada waktu itu karena pengembalian menurun: terlalu lambat untuk menukar begitu banyak memori karena akses HDD adalah faktor 1000 lebih lambat daripada RAM: bagus dalam keadaan darurat, tetapi tidak terlalu bagus untuk penggunaan sehari-hari! Pada saat itu, ketika Anda kehabisan ruang swap, sudah waktunya untuk menambahkan lebih banyak RAM! (yang masih berlaku sampai sekarang).
Pada saat ini:
Jika Anda tidak menggunakan hibernasi dan memori Anda lebih dari 1GByte, aturan praktis yang baru adalah di round(sqrt(RAM))
mana RAM
jelas ukuran RAM Anda dalam GB dan sqrt
akar kuadrat. :-)
Jika Anda menggunakan hibernasi, Anda harus dapat menukar seluruh jumlah RAM + RAM yang telah ditukar ke disk, sehingga rumusnya menjadi: RAM+round(sqrt(RAM))
Aturan untuk mengurangi pengembalian masih berlaku sampai hari ini, tetapi kecuali jika Anda menguji penggunaan Anda yang sebenarnya, mengambil 2xRAM hanya membuang-buang ruang disk , jadi jangan gunakan maksimum kecuali jika Anda kehabisan ruang swap menggunakan metodologi lain .
Semua ini bersama-sama memberi Anda tabel berikut: (3 kolom terakhir menunjukkan ruang swap)
RAM No hibernation With Hibernation Maximum
1GB 1GB 2GB 2GB
2GB 1GB 3GB 4GB
3GB 2GB 5GB 6GB
4GB 2GB 6GB 8GB
5GB 2GB 7GB 10GB
6GB 2GB 8GB 12GB
8GB 3GB 11GB 16GB
12GB 3GB 15GB 24GB
16GB 4GB 20GB 32GB
24GB 5GB 29GB 48GB
32GB 6GB 38GB 64GB
64GB 8GB 72GB 128GB
128GB 11GB 139GB 256GB
256GB 16GB 272GB 512GB
512GB 23GB 535GB 1TB
1TB 32GB 1056GB 2TB
2TB 46GB 2094GB 4TB
4TB 64GB 4160GB 8TB
8TB 91GB 8283GB 16TB
Di atas hanyalah aturan praktis; itu bukan hukum gravitasi!
Anda dapat melanggar aturan ini (tidak seperti hukum gravitasi) jika use case khusus Anda berbeda!
Kiat pro: Selalu alokasikan SWAP pada awal HDD karena kepala harus bergerak lebih sedikit di bagian dalam disk.
Ya: Pada SSD, tidak masalah lagi di mana Anda menemukan area swap karena mereka menggunakan tunneling kuantum alih-alih memindahkan kepala dan SSD modern menggunakan semua sel memori mereka (bahkan ruang yang tidak dialokasikan) untuk mencegah degradasi kuantum.
Cara menguji apakah penggunaan swap Anda berbeda dengan aturan "generik":
Eksekusi saja:
for szFile in /proc/*/status ; do
awk '/VmSwap|Name/{printf $2 "\t" $3}END{ print "" }' $szFile
done | sort --key 2 --numeric --reverse | more
yang akan memberi Anda daftar semua program yang sedang berjalan yang ditukar (dengan yang menggunakan ruang swap paling banyak di atas)
Jika Anda menggunakan lebih dari beberapa KB: ubah ukuran menjadi lebih dari minimum, jika tidak, jangan repot-repot ...
Jika Anda menggunakan server, berhentilah membaca sekarang: Anda sudah siap!
Jika Anda menggunakan klien desktop / laptop (bukan server), Anda ingin GUI Anda menjadi set responsif mungkin dan hanya bertukar ketika Anda benar-benar perlu . Ubuntu telah dioptimalkan untuk bertukar lebih awal untuk penggunaan server, tetapi pada klien Anda, Anda ingin mengedit gambar mentah berukuran besar 250-Mega gimp
menjadi cepat , sehingga pengaturan Anda swappiness
ke 10 akan menjaga kernel dari swapping terlalu dini, sambil memastikan itu tidak t tukar terlambat:
Jika Anda memiliki sysctl.conf
file,
sudo nano /etc/sysctl.conf
ATAU
Jika Anda memiliki sysctl.d
direktori tetapi tidak ada sysctl.conf
file, buat file baru:
sudo nano /etc/sysctl.d/35_swap.conf
dan dalam kedua kasus tambahkan:
# change "swappiness" from default 60 to 10
# (theoretically only swap when RAM usage reaches around 80 or 90 percent)
vm.swappiness = 10
ke akhir file, simpan file ( Ctrl+ XY+ Enterdi nano) dan jalankan:
sysctl --system
untuk memuat ulang parameter atau mengambil pendekatan Window $ dan reboot ... :-)