GNU/Linux >> Belajar Linux >  >> Linux

Linux – Bagaimana Cara Menggunakan Ruang Swap Untuk Keadaan Darurat Saja?

Saya memiliki laptop Debian (Buster) dengan 8 GB RAM dan swap 16GB. Saya menjalankan tugas yang berjalan sangat lama. Ini berarti laptop saya dibiarkan menyala selama enam hari terakhir saat bekerja.

Saat melakukan ini, saya secara berkala perlu menggunakan laptop saya sebagai laptop. Ini seharusnya tidak menjadi masalah; tugas yang berjalan lama terikat I/O, mengerjakan berbagai hal di 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 lamban dan dapat memakan waktu 30 menit untuk kembali normal. Ini sangat buruk sehingga pemantau kerusakan menandai aplikasi mereka masing-masing sebagai telah dibekukan (terutama jendela browser) dan hal-hal mulai mogok secara tidak benar.

Melihat pada monitor sistem, dari 2,5 GB yang digunakan sekitar setengahnya dialihkan ke swap. Saya telah mengonfirmasi bahwa ini masalahnya dengan menghapus ruang swap (swapoff /dev/sda8 ). Jika saya meninggalkannya tanpa ruang swap, ia hidup kembali hampir seketika bahkan setelah 24 jam. Dengan swap, itu praktis menjadi batu bata selama lima menit pertama yang tersisa hanya enam jam. Saya telah mengonfirmasi bahwa penggunaan memori tidak pernah melebihi 3 GB bahkan saat aku pergi.

Saya telah mencoba mengurangi swappiness (lihat juga:Wikipedia) menjadi nilai 10 dan , tapi masalahnya masih berlanjut. Tampaknya setelah seharian tidak aktif, kernel percaya bahwa seluruh GUI tidak lagi diperlukan dan menghapusnya dari RAM (menukarnya ke disk). Tugas yang berjalan lama adalah membaca pohon file yang luas dan membaca setiap file. Jadi mungkin kernel bingung untuk berpikir bahwa caching akan membantu. Namun dalam sekali sapuan 2 TB USB HD dengan ~1 miliar nama file, RAM GB ekstra tidak akan banyak membantu kinerja. Ini adalah laptop murah dengan hard drive yang lamban. Itu tidak bisa memuat data kembali ke RAM dengan cukup cepat.

Bagaimana saya bisa memberi tahu Linux untuk hanya menggunakan ruang swap dalam keadaan darurat? Saya tidak ingin berlari 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. Namun saat ini, jika saya membiarkan swap diaktifkan, laptop saya tidak dapat digunakan saat saya membutuhkannya.

Definisi yang tepat dari "darurat" mungkin menjadi bahan perdebatan. Tapi untuk memperjelas apa yang saya maksud:Keadaan darurat akan terjadi di mana sistem dibiarkan tanpa pilihan lain selain menukar atau mematikan proses.

Apa itu keadaan darurat?Apakah Anda benar-benar harus bertanya?… Saya harap Anda tidak pernah menemukan diri Anda berada 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 didorong untuk memori sehingga mulai mematikan proses dengan OOM Killer. Keadaan darurat BUKAN ketika kernel berpikir itu dapat meningkatkan kinerja dengan menggunakan swap.

Terkait:Ubuntu – Bagaimana cara memeriksa koneksi SMB dan dialek yang digunakan di linux?

Pengeditan Akhir: Saya telah menerima jawaban yang melakukan persis seperti yang saya minta di tingkat sistem operasi. Pembaca masa depan juga harus memperhatikan jawaban yang menawarkan solusi tingkat aplikasi.

Jawaban yang Diterima:

Memiliki pertukaran yang sangat besar saat ini seringkali merupakan ide yang buruk. Pada saat OS menukar hanya beberapa GB memori untuk ditukar, sistem Anda telah merangkak sampai mati (seperti yang Anda lihat)

Lebih baik menggunakan zram dengan partisi swap cadangan kecil . Banyak OS seperti ChromeOS, Android dan berbagai distro Linux (Lubuntu, Fedora) telah mengaktifkan zram secara default selama bertahun-tahun, terutama untuk sistem dengan RAM lebih sedikit. Ini jauh lebih cepat daripada menukar pada HDD dan Anda dapat dengan jelas merasakan respons sistem dalam kasus ini. Kurang begitu pada SSD, tetapi menurut hasil benchmark di sini tampaknya masih lebih cepat bahkan dengan algoritma lzo default. Anda dapat mengubah ke lz4 untuk kinerja yang lebih baik dengan rasio kompresi yang sedikit lebih sedikit. Kecepatan decodingnya hampir 5 kali lebih cepat dari lzo berdasarkan benchmark resmi

Faktanya Windows 10 dan macOS juga menggunakan teknik kompresi pagefile yang serupa secara default

Ada juga zswap meskipun saya belum pernah menggunakannya. Mungkin patut dicoba dan bandingkan mana yang lebih baik untuk kasus penggunaan Anda

Setelah itu saran lainnya adalah mengurangi prioritas proses terikat IO tersebut dan mungkin membiarkan terminal berjalan pada prioritas yang lebih tinggi sehingga Anda dapat langsung menjalankan perintah di dalamnya bahkan ketika sistem dalam beban tinggi

Bacaan lebih lanjut

  • Arch Linux – Meningkatkan kinerja – Zram atau zswap
  • Aktifkan ZSwap untuk meningkatkan kinerja
  • Aktifkan zRAM untuk penanganan memori yang lebih baik dan lebih sedikit pertukaran
  • Kehabisan RAM di Ubuntu? Aktifkan ZRAM
  • Perbedaan antara ZRAM dan ZSWAP
  • zram vs zswap vs zcache Panduan utama:kapan harus menggunakan yang mana
  • Linux, SSD, dan swap
  • https://wiki.debian.org/ZRam
  • https://www.kernel.org/doc/Documentation/blockdev/zram.txt
  • https://wiki.gentoo.org/wiki/Zram

Linux
  1. Cara menggunakan BusyBox di Linux

  2. Cara menggunakan perintah sed Linux

  3. Bagaimana memilih laptop Linux yang terjangkau untuk konferensi video

  1. Cara menggunakan rsync lanjutan untuk cadangan Linux besar

  2. Cara menggunakan systemd-nspawn untuk pemulihan sistem Linux

  3. Cara menggunakan Perintah Su di Linux

  1. Bagaimana saya menggunakan cron di Linux

  2. Cara Membuat Atau Menambah Ruang Swap Di Linux

  3. Bagaimana cara menggunakan ruang swap hanya untuk keadaan darurat?