Iya.
Anda harus selalu mengaktifkan swap, kecuali jika ada alasan yang sangat kuat dan menakutkan (seperti, tidak ada disk sama sekali, atau hanya disk jaringan yang ada). Haruskah Anda melakukan swap berdasarkan urutan ukuran konyol yang sering direkomendasikan (seperti, dua kali jumlah RAM)? Ya tidak .
Alasannya adalah bahwa swap tidak hanya berguna ketika aplikasi Anda mengkonsumsi lebih banyak memori daripada RAM fisik (sebenarnya, dalam hal itu, swap tidak terlalu berguna sama sekali karena itu berdampak serius pada kinerja). Insentif utama untuk swap saat ini bukan untuk secara ajaib mengubah 16GiB RAM menjadi 32 GiB, tetapi untuk membuat penggunaan RAM yang terpasang dan tersedia secara lebih efisien.
Pada komputer modern, RAM tidak terpakai. RAM yang tidak terpakai adalah sesuatu yang Anda bisa saja tidak membeli dan menyimpan uang sebagai gantinya. Oleh karena itu, apa pun yang Anda muat atau apa pun yang dipetakan dengan memori, apa pun yang mungkin dapat digunakan kembali oleh siapa saja di kemudian hari (dibatasi oleh kendala keamanan) sedang di-cache. Segera setelah mesin boot, semua RAM fisik akan digunakan untuk sesuatu .
Setiap kali Anda meminta halaman memori baru dari sistem operasi, manajer memori harus membuat keputusan yang tepat:
- Bersihkan halaman dari cache buffer
- Bersihkan halaman dari pemetaan (efektif sama dengan # 1, pada kebanyakan sistem)
- Memindahkan halaman yang belum diakses untuk waktu yang lama - lebih disukai tidak pernah - untuk bertukar (ini sebenarnya bisa terjadi secara proaktif, tidak harus pada saat terakhir)
- Bunuh proses Anda, atau bunuh proses acak (OOM)
- Panik kernel
Opsi # 4 dan # 5 sangat tidak diinginkan dan hanya akan terjadi jika sistem operasi sama sekali tidak punya pilihan lain. Opsi # 1 dan # 2 berarti Anda membuang sesuatu yang mungkin Anda perlukan segera. Ini berdampak negatif pada kinerja.
Opsi # 3 berarti Anda memindahkan sesuatu yang Anda (mungkin) tidak perlu waktu segera ke penyimpanan lambat. Tidak apa-apa karena sekarang sesuatu yang Anda perlukan dapat menggunakan RAM cepat.
Dengan menghapus opsi # 3, Anda secara efektif membatasi sistem operasi untuk melakukan # 1 atau # 2. Reload halaman dari disk sama dengan reload dari swap, kecuali harus memuat ulang dari swap biasanya lebih kecil (karena membuat keputusan paging yang tepat).
Dengan kata lain, dengan menonaktifkan swap Anda tidak mendapatkan apa-apa, tetapi Anda membatasi jumlah opsi berguna sistem operasi dalam menangani permintaan memori. Yang mungkin tidak , tetapi sangat mungkin bisa merugikan (dan tidak akan pernah menjadi keuntungan).
[SUNTING]
Pembaca yang berhati-hati dari halaman mmap
manual ini , khususnya deskripsi MAP_NORESERVE
, akan melihat alasan bagus lainnya mengapa swap agak diperlukan bahkan pada sistem dengan memori fisik yang "cukup":
"Ketika ruang swap tidak disediakan, orang mungkin mendapatkan SIGSEGV saat menulis jika tidak ada memori fisik yang tersedia."
- Tunggu sebentar, apa artinya itu?
Jika Anda memetakan file, Anda dapat mengakses konten file secara langsung seolah-olah file itu entah bagaimana, secara ajaib, di ruang alamat program Anda. Untuk akses read-only, pada prinsipnya sistem operasi tidak lebih dari satu halaman memori fisik yang dapat diisi ulang dengan data yang berbeda setiap kali Anda mengakses halaman virtual yang berbeda (untuk alasan efisiensi, tentu saja bukan itu yang dilakukan, tetapi pada prinsipnya Anda dapat mengakses data terabyte dengan satu halaman memori fisik). Sekarang bagaimana jika Anda jugamenulis ke pemetaan file? Dalam hal ini, sistem operasi harus memiliki halaman fisik - atau ruang swap - siap untuk setiap halaman yang ditulis. Tidak ada cara lain untuk menjaga data di sekitar sampai proses penulisan kembali halaman kotor telah melakukan tugasnya (yang bisa beberapa detik). Untuk alasan ini, OS cadangan (tetapi tidak selalu melakukan) swap ruang, jadi jika Anda menulis ke pemetaan sementara tidak ada halaman fisik yang tidak terpakai (itu sangat mungkin, dan kondisi normal), Anda kembali dijamin bahwa itu akan tetap bekerja.
Sekarang bagaimana jika tidak ada swap? Ini berarti tidak ada swap yang dapat dipesan (ya!), Dan ini berarti bahwa segera setelah tidak ada halaman fisik gratis yang tersisa, dan Anda menulis ke sebuah halaman, Anda mendapatkan kejutan yang menyenangkan dalam bentuk proses penerimaan Anda kesalahan segmentasi, dan mungkin dibunuh.
[/SUNTING]
Namun, rekomendasi tradisional untuk membuat swap dua kali ukuran RAM tidak masuk akal. Meskipun ruang disk murah, tidak masuk akal untuk menetapkan banyak swap. Membuang-buang sesuatu yang murah masih sia-sia, dan Anda benar-benar tidak ingin terus-menerus masuk dan keluar bekerja menetapkan beberapa ratus megabyte (atau lebih besar) dalam ukuran.
Tidak ada ukuran swap "benar" tunggal (ada banyak ukuran "benar" karena ada pengguna dan pendapat). Saya biasanya menetapkan 512MiB tetap, terlepas dari ukuran RAM, yang bekerja sangat baik untuk saya. Alasan di balik itu adalah bahwa 512MiB adalah sesuatu yang Anda selalu mampu saat ini, bahkan pada disk kecil. Di sisi lain, menambahkan beberapa gigabyte swap tidak ada yang lebih baik. Anda tidak akan menggunakannya, kecuali jika ada sesuatu yang salah.
Bahkan pada SSD, swap adalah perintah yang besarnya lebih lambat dari RAM (karena bandwidth bus dan latensi), dan meskipun sangat dapat diterima untuk memindahkan sesuatu untuk swap yang mungkin tidak akan diperlukan lagi (yaitu kemungkinan besar Anda tidak akan menukarnya lagi, sehingga kumpulan halaman yang tersedia secara efektif diperbesar secara gratis), jika Anda benar - benar membutuhkan sejumlah besar swap (yaitu, Anda memiliki aplikasi yang menggunakan misalnya dataset 50GiB), Anda cukup banyak tersesat.
Setelah komputer Anda mulai menukar halaman gigabytes senilai, semuanya berjalan merangkak. Jadi, bagi kebanyakan orang (termasuk saya) ini bukan pilihan, dan karena itu banyak pertukaran tidak masuk akal.