GNU/Linux >> Belajar Linux >  >> Linux

Cara Membunuh Proses Terbesar Dalam Sistem Linux yang Tidak Responsif

Ketika saya membuka banyak tab di browser saya, sistem saya menjadi tidak responsif selama beberapa menit. Saya tidak bisa menggerakkan kursor mouse, atau mematikan proses atau menutup tab yang terbuka. Pada saat itu, saya tidak punya pilihan selain mengatur ulang sistem secara paksa. Tentu saja, saya menggunakan OneTab dan Suspender Hebat ekstensi, tetapi mereka juga tidak banyak membantu. Saya sering kehabisan memori. Saat mencari solusi untuk memperbaikinya, saya menemukan OOM Awal . Bagi mereka yang bertanya-tanya, itu akan membunuh proses terbesar dalam sistem yang tidak responsif ketika sama sekali tidak ada pilihan lain. OOM awal memeriksa jumlah memori yang tersedia dan swap gratis 10 kali per detik. Jika keduanya di bawah 10%, itu akan mematikan proses terbesar.

Mengapa Dini OOM? Mengapa tidak built-in OOM killer?

Sebelum melangkah lebih jauh, izinkan saya memberikan penjelasan singkat tentang pembunuh OOM, juga dikenal sebagai O ut O f L pembunuh emosi. Pembunuh OOM adalah proses yang digunakan Kernel saat sistem kehabisan memori. Tugas utama OOM killer adalah untuk melanjutkan penghentian proses hingga memori yang cukup dibebaskan untuk kelancaran fungsi proses lainnya yang coba dijalankan oleh Kernel. Pembunuh OOM akan memilih proses terbaik yang paling tidak penting bagi sistem dan membebaskan memori maksimum dan mematikannya. Kita dapat melihat oom_score dari setiap proses di /proc direktori di bawah pid bagian.

Contoh:

$ cat /proc/10299/oom_score
1

Semakin tinggi nilai oom_score dari proses apa pun, semakin tinggi kemungkinannya untuk dibunuh oleh OOM Killer saat sistem kehabisan memori.

Pengembang Early OOM mengklaim bahwa ia memiliki satu keuntungan besar dibandingkan pembunuh OOM dalam kernel. Seperti yang saya nyatakan sebelumnya, Linux oom killer membunuh proses dengan skor tertinggi, sehingga browser Chrome akan selalu menjadi korban pertama dari oom killer. Untuk menghindarinya, OOM Awal menggunakan /proc/*/status bukannya echo f> /proc/sysrq-trigger . Dia juga mengklaim bahwa memicu pembunuh oom secara manual mungkin tidak bekerja sama sekali di Kernel Linux terbaru.

Menginstal OOM Awal

OOM awal tersedia di AUR, sehingga Anda dapat menginstalnya menggunakan program pembantu AUR di Arch Linux dan turunannya.

Menggunakan Yay :

$ yay -S earlyoom

Aktifkan dan mulai daemon OOM Awal:

$ sudo systemctl enable earlyoom
$ sudo systemctl start earlyoom

Pada distribusi Linux lainnya, kompilasi dan instal secara manual seperti yang ditunjukkan di bawah ini.

$ git clone https://github.com/rfjakob/earlyoom.git
$ cd earlyoom
$ make
$ sudo make install

Bunuh Proses Terbesar Dalam Sistem Linux yang Tidak Responsif Menggunakan OOM Awal

Jalankan perintah berikut untuk memulai OOM Awal:

$ earlyoom

Jika Anda mengkompilasinya dari sumber, jalankan perintah berikut untuk memulai Early OOM:

$ ./earlyoom

Contoh keluarannya adalah:

earlyoom 0.12
mem total: 3863 MiB, min: 386 MiB (10 %)
swap total: 2047 MiB, min: 204 MiB (10 %)
mem avail: 1770 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1771 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1784 MiB (46 %), swap free: 2047 MiB (99 %)
[...]

Seperti yang Anda lihat pada output di atas, Early OOM akan menampilkan berapa banyak memori dan swap yang Anda miliki, berapa minimumnya, berapa banyak memori yang tersedia dan berapa banyak swap yang gratis. Ingat itu akan terus berjalan sampai Anda berhenti secara manual dengan menekan CTRL+C.

Jika memori dan swap mencapai di bawah 10%, Early OOM akan secara otomatis mematikan proses terbesar hingga sistem memiliki cukup memori untuk berjalan dengan lancar. Anda juga dapat mengonfigurasi nilai persentase minimum sesuai kebutuhan Anda.

Untuk menyetel minimum memori yang tersedia ke PERCENT dari total, jalankan:

$ earlyoom -m <PERCENT_HERE>

Untuk menyetel minimum swap yang tersedia ke PERCENT dari total, jalankan:

$ earlyoom -s <PERCENT_HERE>

Untuk detail selengkapnya, lihat bagian bantuan.

$ earlyoom -h
earlyoom 0.12
Usage: earlyoom [OPTION]...

 -m PERCENT set available memory minimum to PERCENT of total (default 10 %)
 -s PERCENT set free swap minimum to PERCENT of total (default 10 %)
 -M SIZE set available memory minimum to SIZE KiB
 -S SIZE set free swap minimum to SIZE KiB
 -k use kernel oom killer instead of own user-space implementation
 -i user-space oom killer should ignore positive oom_score_adj values
 -d enable debugging messages
 -v print version information and exit
 -r INTERVAL memory report interval in seconds (default 1), set to 0 to
 disable completely
 -p set niceness of earlyoom to -20 and oom_score_adj to -1000
 -h this help text

Sekarang, Anda tidak perlu khawatir tentang proses konsumsi memori tertinggi.


Linux
  1. Cara mematikan proses zombie di Linux

  2. Bagaimana cara mematikan proses di Linux menggunakan perintah?

  3. Cara Menjeda/Melanjutkan Proses di Linux

  1. Cara memeriksa Versi OS dan Linux

  2. Cara Menemukan dan Membunuh Proses Zombie di Linux

  3. Bagaimana mengubah identitas sistem Linux

  1. Cara mematikan proses atau menghentikan program di Linux

  2. Bagaimana Cara Membunuh Proses di Linux? Perintah untuk Mengakhiri

  3. Linux – Bagaimana Pembunuh Oom Memutuskan Proses Mana Yang Harus Dibunuh Pertama?