Ada masalah besar di Linux dalam hal ini jika Anda mendekati kondisi kehabisan memori - Anda akan melihat bahwa seluruh sistem Anda menjadi benar-benar tidak responsif karena mulai banyak bertukar. Bahkan kursor mouse Anda mungkin menjadi sangat 'lambat' sehingga Anda tidak dapat memulai terminal dan mematikan proses pemakan memori yang menyinggung secara manual. Ini karena sejumlah besar operasi disk.
Untuk menghindari situasi ini, saya pribadi biasanya menonaktifkan swap sepenuhnya, sehingga kernel Linux selalu responsif dan dalam kasus terburuk pembunuh kehabisan memori (OOM) akan mematikan beberapa proses. Logika yang prosesnya dimatikan oleh OOM tergantung pada versi kernel.
Jadi jawabannya tidak - jangan aktifkan alokasi swap dinamis. Anda akan menghadapi hang mesin.
Sangat mudah untuk mencobanya dengan program yang secara konstan mengalokasikan sebagian memori dalam satu lingkaran. Simpan program ini ke file teks, memeater.c
:
#include <stdlib.h>
int main() {
for (;;) {char* mem=malloc(4096); mem[0]=1;};
}
Kemudian kompilasi:
$ gcc memeater.c -o memeater
dan lari:
$ ./memeater
Cobalah dengan swap, tanpa swap, dan dengan alokasi swap dinamis Anda.
Juga, perlu diingat bahwa dalam kebanyakan kasus kondisi OOM ini terjadi karena bug dalam perangkat lunak (kebocoran memori) atau Anda melakukan sesuatu yang salah seperti 'memuat file 10 GB ini di editor' atau 'menjalankan terlalu banyak ukuran file grafis secara paralel' dan lakukan kesimpulannya: Apakah Anda perlu swap atau tidak?