GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya tahu proses apa yang menyebabkan kswapd digunakan?

Solusi 1:

kswapd mengelola ruang swap sebagai respons terhadap permintaan memori yang lebih besar daripada yang tersedia secara fisik untuk semua proses.

Ini adalah proses agnostik, hanya tertarik pada halaman apa yang diakses dan kapan (tentu saja ini lebih kompleks dari ini, tetapi untuk menjaga agar tetap sederhana, sebaiknya kita melihatnya dengan cara ini).

Jadi nyata pertanyaannya adalah "proses apa yang memiliki beban terbesar pada memori yang menyebabkan kswapd perlu halaman sepanjang waktu".

Itu paling mudah dijawab menggunakan 'atas' dan beralih ke mode pengurutan penggunaan memori.

Solusi 2:

Anda dapat membuat skripnya.. tetapi Anda juga dapat melakukannya melalui atas

Jalankan atas lalu tekan O diikuti oleh p lalu masuk

Sekarang semua proses diurutkan berdasarkan penggunaan swap dan Anda dapat melihat proses mana yang menggunakannya

Solusi 3:

Jika Anda menggunakan Ubuntu 15.10 atau lebih tinggi, ini mungkin sebenarnya akibat dari bug, terutama jika sistem Anda adalah mesin virtual yang tidak memiliki partisi swap (mis., AWS EC2). Masalahnya ada di distribusi lain, tetapi, saat penulisan, tidak jelas apakah perbaikan yang sama berfungsi secara universal.

Solusi sementara:

sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot

Perhatikan bahwa ini akan menonaktifkan hotadding RAM/CPU untuk mesin virtual Xen dan Hyper-V.

Solusi 4:

Tampaknya juga ada bug di kswapd di suatu tempat, semoga hanya pada kernel lama.

Hampir setiap hari sekarang kswapd mengamuk secara acak pada beberapa mesin di cluster yang lebih besar (dengan kernel yang tidak aktif). 100% CPU pada kedua proses kswapd. Tidak ada proses lain yang berjalan (kecuali ssh shell), banyak RAM kosong (lebih dari 700 MB) dan tidak ada SWAP yang digunakan sama sekali. Tidak ada swapin, tidak ada swapout juga.

Belum ada yang menjelaskan, mengapa mesin tertentu dipukul dan yang lain tidak. Sepertinya tidak sepenuhnya acak, karena biasanya mengenai lebih dari satu mesin dalam rentang waktu yang singkat. Sepertinya mesin, yang diam, serta mesin, yang berada di bawah tekanan tinggi, lebih kecil (!) terkena efeknya. Jadi itu harus melakukan sesuatu dengan beban kerja dan hanya bekerja jika mesin tidak menganggur atau sangat sibuk.

Jika masalah menyerang tidak ada yang membantu lagi. Membunuh semua proses (yang tidak menjadi tidak dapat dibunuh), melepas semua sistem file, tidak ada. kswapd masih tetap di 100% CPU. Saya mencurigai beberapa ras spinlock di kernel SMP, tetapi kemungkinan besar saya juga salah.

Mungkin lihat jawaban saya serverfault.com/questions/316995/#493257

Catatan:

  • Menyalakan ulang mesin yang terpengaruh sering kali gagal karena proses penonaktifan mulai menggantung di suatu tempat.
  • Tidak ada koneksi langsung ke Internet. Penyebab asing tidak mungkin terjadi.
  • Tampaknya bergantung pada jenis beban kerja yang diproses mesin dari sudut pandang beban, karena kami memiliki mesin yang (belum) pernah terpengaruh.
  • Maaf, saya tidak bisa lebih spesifik tentang apa yang kami lakukan dan mengapa.
  • Ya, saya berspekulasi. Karena ini adalah efek yang sangat membingungkan, hari ini.

Linux
  1. Apa Proses Zombie Dan Bagaimana Menemukan &Membunuh Proses Zombie?

  2. Chroot “jail” – Apa Itu Dan Bagaimana Cara Menggunakannya?

  3. Bagaimana Cara Memeriksa Sinyal Apa yang Didengarkan oleh Proses?

  1. Apa itu Perintah Chown di Linux dan Cara Menggunakannya

  2. Bagaimana saya bisa mengetahui file apa yang telah dibuka oleh suatu proses?

  3. Bagaimana saya bisa tahu proses apa yang menyebabkan beban tinggi jika bukan penggunaan cpu tinggi?

  1. Apa itu Perintah cURL Dan Bagaimana Cara Menggunakannya?

  2. Bagaimana cara menggunakan Ctrl+C untuk mematikan semua proses latar belakang yang dimulai dalam skrip Bash?

  3. Bagaimana cara mengetahui apakah koneksi ssh ControlMaster sedang digunakan