Berapa banyak swap yang harus saya ambil untuk RAM 1GB hingga 8TB pada 14,04 atau lebih tinggi?

14

Saya akan menginstal 64 bit 14,04 pada mesin baru dengan sesuatu seperti 1 hingga mungkin 128GB RAM dan bahkan lebih banyak RAM nanti. Berapa banyak ruang yang harus saya alokasikan untuk partisi swap?

Dan terutama: MENGAPA rekomendasi itu untuk angka-angka ini?

(Tidak ada jawaban yang ada di sini dan di sini yang menjelaskan alasannya dan sedikit tanggal jika kita melihat 1GB atau RAM dan lebih tinggi)

Tim
sumber
6
Kemungkinan duplikat dari saya memiliki 16GB RAM. Apakah saya perlu swap 32GB? Ada jawaban dari 2017 (atau diperbarui pada 2017), jadi saat ini terdapat rekomendasi yang lebih baru daripada yang ini.
Melebius
1
@Melebius: Saya tidak setuju: Meskipun pertanyaan ini lebih baru, itu lebih umum daripada yang Anda coba gandakan. T&J ini mencakup yang lebih lama, tetapi kebalikannya tidak benar! ;-)
Fabby
1
@ Fabby Dalam hal itu, bukankah yang lain harus ditandai sebagai duplikat dari yang ini?
Melebius
1
@Melebius Jika kedua pertanyaan dapat digunakan oleh pengulas sebagai pertanyaan duplikat dari pertanyaan lain dalam situasi yang berbeda, maka kedua pertanyaan dapat tetap terbuka untuk menangani situasi yang berbeda ini karena kedua pertanyaan memiliki jawaban yang sangat tervotasikan.
karel
2
@Melebius Kami sudah berdiskusi tentang topik ini dalam meta dan komunitas memutuskan untuk membiarkan masing-masing tetap apa adanya.
Fabby

Jawaban:

30

Jawaban singkatnya:

Setel file swap Anda ke:

  • round(sqrt(RAM))jika Anda tidak menggunakan hibernasi
  • RAM+round(sqrt(RAM))jika Anda menggunakan hibernasi

Atur swappiness10 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:

  1. Jika Anda tidak menggunakan hibernasi dan memori Anda lebih dari 1GByte, aturan praktis yang baru adalah di round(sqrt(RAM))mana RAMjelas ukuran RAM Anda dalam GB dan sqrtakar kuadrat. :-)

  2. Jika Anda menggunakan hibernasi, Anda harus dapat menukar seluruh jumlah RAM + RAM yang telah ditukar ke disk, sehingga rumusnya menjadi: RAM+round(sqrt(RAM))

  3. 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 gimpmenjadi cepat , sehingga pengaturan Anda swappinesske 10 akan menjaga kernel dari swapping terlalu dini, sambil memastikan itu tidak t tukar terlambat:

Jika Anda memiliki sysctl.conffile,

sudo nano /etc/sysctl.conf

ATAU

Jika Anda memiliki sysctl.ddirektori tetapi tidak ada sysctl.conffile, 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 ... :-)

Fabby
sumber
1
Terima kasih. Apa yang Anda maksud dengan "diminishing return"? Jika RAM dan swap sepenuhnya digunakan, maka tidak mungkin untuk hibernasi walaupun swap berukuran 2 * RAM, bukan? (Karena hibernasi akan membutuhkan ukuran swap menjadi RAM + swap, mana yang tidak mungkin?)
Tim
Ya, tapi saya belum pernah mengalami hal ini ... (dan saya sudah tua! Karena itu 2 * RAM: Ketika semua RAM ditukar, Anda masih dapat hibernasi ...
Fabby
2
"Pengembalian yang berkurang" hanya berarti bahwa akses HDD adalah faktor dari 1000 lebih lambat dari RAM, jadi jika Anda perlu menukar dua kali RAM Anda, Anda akan meninggal karena usia tua sebelum selesai ... Itu ada di sana untuk berhibernasi saat Anda sudah bertukar ...
Fabby
1
@Fabby Sekarang CV meninjau kembali pertanyaan semula: askubuntu.com/review/close/889454 . Lihat komentar Yufenyuy Veyeh Dider di bawah pertanyaan.
karel
1
@mrkskwsnck: Ini oleh penulis yang sama ... ;-)
Fabby
6

Kebutuhan untuk swap

Swap berguna karena 3 alasan:

  1. Menghapus kekacauan dari RAM. Dari artikel di kernel.org:

    "Sejumlah besar halaman yang direferensikan oleh proses di awal kehidupannya hanya dapat digunakan untuk inisialisasi dan kemudian tidak pernah digunakan lagi. Lebih baik untuk menukar halaman tersebut dan membuat lebih banyak buffer disk daripada membiarkannya tetap dan tidak digunakan"

    Dengan kata lain, data yang disimpan dalam RAM mungkin hanya berguna ketika suatu proses telah dimulai (seperti proses startup), dan kemudian tinggal di sana dalam RAM, ruang berantakan yang dapat digunakan untuk tujuan yang lebih baik.

  2. Ini memperluas jumlah memori yang dapat digunakan proses. Ini dipahami dengan baik. Anda tidak ingin sistem kehabisan memori dan macet karena kekurangannya. Untuk alasan khusus ini, swap harus ada, berfungsi sebagai fitur pelindung.

  3. Hibernasi: Saat komputer hibernasi, isi RAM masuk ke disk.

Jumlah swap

Mengetahui tujuan untuk swap dan tergantung pada jumlah RAM mesin Anda, Anda dapat memilih ukuran swap yang sesuai dengan tujuan Anda. Tidak ada pedoman khusus, hanya aturan praktis yang dapat Anda gunakan untuk menyesuaikan ukuran swap Anda agar sesuai dengan sistem Anda .

Sebagai contoh, linux.com merekomendasikan:

Aturan praktisnya adalah sebagai berikut: 1) untuk sistem desktop, gunakan ruang swap memori sistem ganda, karena akan memungkinkan Anda untuk menjalankan sejumlah besar aplikasi (banyak di antaranya mungkin akan menganggur dan mudah ditukar), membuat lebih banyak RAM tersedia untuk aplikasi aktif; 2) untuk server, miliki jumlah swap yang lebih kecil (katakanlah setengah dari memori fisik) sehingga Anda memiliki fleksibilitas untuk bertukar ketika diperlukan, tetapi pantau jumlah ruang swap yang digunakan dan tingkatkan RAM Anda jika perlu; 3) untuk mesin desktop lama (misalnya 128MB), gunakan ruang swap sebanyak yang Anda bisa, bahkan hingga 1GB.

Dari pengalaman pribadi, inilah yang akan saya lakukan:

Mengingat mesin dengan 1 - 2 GB yang tidak perlu berhibernasi dan untuk penggunaan biasa, Anda dapat memiliki ruang swap 1GB hingga 2GB. PC saya dengan Ubuntu 14.04 memiliki RAM 1GB dan swap 2GB. Jumlah swap tidak pernah melewati batas 800MB, dan saya menggunakan PC saya hanya untuk menjelajahi web dan skrip.

Dengan PC yang memiliki lebih dari 2GB dan Anda tidak perlu hibernasi, Anda dapat terus beralih dari 512MB ke 1GB. Saya memiliki laptop dengan 15,04 yang tidak pernah saya hibernasi dan yang memiliki file swap ( bukan partisi ) sebesar 512 MB. RAM itu sendiri adalah 6 GB tetapi tidak pernah melewati 2-3 GB. Sekali lagi: penggunaan biasa-biasa saja.

Cosmoscalibur dan Fabby sudah membahas swap jika Anda perlu hibernasi, jadi saya tidak akan membahasnya secara luas. Pendapat saya yang sederhana adalah ini:

Jika Anda berencana melakukan hibernasi, konten RAM perlu ditukar, maka Anda memerlukannya setidaknya dengan ukuran yang sama dengan RAM Anda.

Sergiy Kolodyazhnyy
sumber
:-) Hanya perhatikan sekarang Anda memposting sesuatu. Diedit dan ditingkatkan! (Sebagai ist sekarang adalah jawaban yang baik setelah saya sunting: D: D: D)
Fabby