Saya melihat kswapd menggunakan CPU 100% ... bagaimana saya bisa tahu atas nama proses kswapd mana yang banyak digunakan?
linux
centos5
swap
virtual-memory
Deshawn
sumber
sumber
Jawaban:
kswapd mengelola ruang swap dalam menanggapi 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 (ini lebih kompleks dari ini tentu saja tetapi untuk menjaga hal-hal yang sederhana kita juga dapat melihatnya dengan cara ini).
Jadi pertanyaan sebenarnya 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.
sumber
top
mengatakan kepada saya bahwa tidak ada waktu yang dihabiskan di IO menunggu, dan hampir 100% waktu dihabiskan dalam sistem. Info lebih lanjut: kswapd sering menggunakan CPU 100% saat swap sedang digunakanAnda dapat skrip itu .. tetapi Anda juga bisa melakukannya melalui atas
Jalankan atas lalu tekan O diikuti oleh p lalu masuk
Sekarang semua proses diurutkan berdasarkan penggunaan swap dan Anda dapat melihat mana yang menggunakannya
sumber
Jika Anda menggunakan Ubuntu 15.10 atau lebih tinggi, ini mungkin sebenarnya merupakan hasil dari bug , terutama jika sistem Anda adalah mesin virtual yang tidak memiliki partisi swap (misalnya, AWS EC2). Masalahnya ada pada distribusi lain , tetapi, pada saat penulisan, tidak jelas apakah perbaikan yang sama berfungsi secara universal.
Solusi sementara:
Perhatikan bahwa ini akan menonaktifkan RAM hotadding / CPU untuk mesin virtual Xen dan Hyper-V.
sumber
echo 3 > /proc/sys/vm/drop_caches
meringankannya setelah itu mulai terjadi. Saya sebelumnya memiliki perintah pada tugas cron sekarang dan tampaknya membantu, atau setidaknya membatasi durasi pembantaian OOM ketika saya jauh dari komputer.Tampaknya juga ada bug di
kswapd
suatu tempat, semoga hanya pada kernel yang lebih tua.Hampir setiap hari sekarang kswapd berjalan secara acak pada beberapa mesin di cluster yang lebih besar (dengan kernel yang tidak ada, meskipun). 100% CPU pada kedua proses kswapd. Tidak ada proses yang berjalan lainnya (kecuali ssh shell), banyak RAM gratis (lebih dari 700 MB) dan tidak ada SWAP yang digunakan sama sekali. Tanpa swapin, tanpa swapout juga.
Belum ada yang menjelaskan, mengapa mesin tertentu dipukul dan yang lain tidak. Tampaknya tidak sepenuhnya acak, karena biasanya mengenai lebih dari satu mesin dalam rentang waktu singkat. Sepertinya mesin, yang menganggur, serta mesin, yang berada di bawah tekanan tinggi, kurang (!) Kemungkinan terkena efeknya. Jadi itu harus melakukan sesuatu dengan beban kerja dan hanya mengenai jika mesin tidak menganggur atau sangat sibuk.
Jika masalah menyerang tidak ada yang membantu lagi. Membunuh semua proses (yang tidak menjadi tidak dapat diraih), melepas semua sistem file, tidak ada.
kswapd
masih tetap pada CPU 100%. Saya curiga ada beberapa ras spinlock di kernel SMP, tetapi kemungkinan besar saya salah.Mungkin melihat jawaban saya serverfault.com/questions/316995/#493257
Catatan:
sumber