Saya memiliki laptop Debian (Buster) dengan 8 GB RAM dan 16GB swap. Saya menjalankan tugas yang berjalan sangat lama. Ini berarti laptop saya telah dibiarkan selama enam hari terakhir sementara itu terus berputar.
Saat melakukan ini, saya secara berkala perlu menggunakan laptop saya sebagai laptop. Ini seharusnya tidak menjadi masalah; tugas jangka panjangnya adalah I / O terikat, mengerjakan hal-hal pada hard disk USB dan tidak memakan banyak RAM (<200 MB) atau CPU (<4%).
Masalahnya adalah ketika saya kembali ke laptop saya setelah beberapa jam, itu akan sangat lambat dan bisa memakan waktu 30 menit untuk kembali normal. Ini sangat buruk sehingga crash-monitor menandai aplikasi mereka masing-masing telah dibekukan (terutama jendela browser) dan semuanya mulai salah crash.
Melihat pada monitor sistem, dari 2,5 GB yang digunakan sekitar setengah akan dialihkan ke swap. Saya telah mengkonfirmasi ini adalah masalahnya dengan menghapus ruang swap ( swapoff /dev/sda8
). Jika saya meninggalkannya tanpa ruang swap, ia hidup kembali hampir secara instan bahkan setelah 24 jam. Dengan swap, bisa dibilang batu bata selama lima menit pertama hanya tersisa enam jam. Saya telah mengkonfirmasi bahwa penggunaan memori tidak pernah melebihi 3 GB bahkan saat saya pergi.
Saya telah mencoba mengurangi swappiness ( lihat juga: Wikipedia ) menjadi nilai-nilai 10
dan 0
, tetapi masalahnya masih berlanjut. Tampaknya setelah satu hari tidak aktif kernel percaya seluruh GUI tidak lagi diperlukan dan menghapusnya dari RAM (menukar ke disk). Tugas jangka panjang adalah membaca melalui pohon file yang luas dan membaca setiap file. Jadi mungkin kernel bingung dengan berpikir bahwa caching akan membantu. Tetapi pada satu sapuan USB HD 2 TB dengan ~ 1 miliar nama file, RAM GB tambahan tidak akan banyak membantu kinerja. Ini adalah laptop murah dengan hard drive yang lambat. Ini tidak bisa memuat data kembali ke RAM dengan cukup cepat.
Bagaimana saya bisa memberitahu Linux untuk hanya menggunakan ruang swap dalam keadaan darurat? Saya tidak ingin menjalankan tanpa swap. Jika sesuatu yang tidak terduga terjadi, dan OS tiba-tiba membutuhkan beberapa GB tambahan maka saya tidak ingin tugas terbunuh dan lebih suka mulai menggunakan swap. Tetapi saat ini, jika saya membiarkan swap diaktifkan, laptop saya tidak dapat digunakan saat saya membutuhkannya.
Definisi tepat dari "darurat" mungkin menjadi masalah untuk diperdebatkan. Tetapi untuk memperjelas apa yang saya maksud: Keadaan darurat akan berada di tempat sistem dibiarkan tanpa opsi lain selain menukar atau mematikan proses.
Apa itu darurat? - Apakah Anda benar-benar harus bertanya? ... Saya harap Anda tidak pernah menemukan diri Anda di gedung yang terbakar!
Tidak mungkin bagi saya untuk mendefinisikan segala sesuatu yang mungkin merupakan keadaan darurat dalam pertanyaan ini. Tapi misalnya, keadaan darurat mungkin ketika kernel sangat didorong untuk memori yang telah mulai membunuh proses dengan Pembunuh OOM . Suatu keadaan darurat BUKAN ketika kernel berpikir itu dapat meningkatkan kinerja dengan menggunakan swap.
Sunting Akhir: Saya telah menerima jawaban yang sesuai dengan apa yang saya minta di tingkat sistem operasi. Pembaca masa depan juga harus mencatat jawaban yang menawarkan solusi tingkat aplikasi.