GNU/Linux >> Belajar Linux >  >> Linux

Kiat untuk atas:Memantau beban CPU di Linux

Artikel ini dikutip dari bab 13 buku Linux in Action, diterbitkan oleh Manning.

Apakah kinerja mesin Linux Anda tidak menentu atau sangat lambat? Apakah Anda menduga bahwa permintaan yang meningkat mungkin melampaui sumber daya yang tersedia? Berikut adalah beberapa pertanyaan yang harus Anda tanyakan pada diri sendiri:

  • Seberapa dekat Anda dengan CPU dan sumber daya memori yang melelahkan?
  • Apakah ada sesuatu yang berjalan tidak perlu yang dapat dimatikan?
  • Apakah ada sesuatu yang berkeliaran tanpa sepengetahuan Anda?

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Di mana Anda harus mencari jawaban? atas program adalah tempat yang bagus untuk memulai. Ini dapat memberi Anda ikhtisar yang kaya dan dapat diperbarui sendiri tentang proses yang berjalan di sistem Anda.

Gambar di bawah menunjukkan layar umum top data. Baris pertama menyediakan waktu saat ini, waktu yang telah berlalu sejak boot sistem terbaru, jumlah pengguna yang saat ini masuk, dan memuat rata-rata untuk menit terakhir, lima menit, dan 15 menit. Informasi ini juga dapat dikembalikan dengan menjalankan uptime .

Karena kami mencoba menyelesaikan masalah kinerja, kolom data yang paling menarik bagi kami adalah %CPU (persentase kapasitas CPU yang saat ini digunakan oleh proses tertentu) dan %MEM (persentase kapasitas memori). Anda terutama ingin mencatat proses yang muncul di bagian atas daftar.

Dalam hal ini, Anda dapat melihat bahwa daemon MySQL menggunakan 4,3% dari CPU server dan, dari kolom berikutnya, 13% dari memorinya. Jika Anda mengikuti baris itu ke kiri, Anda akan melihat bahwa ID proses (PID) adalah 1367 dan prosesnya "dimiliki" oleh mysql pengguna.

Mungkin Anda akan menyimpulkan bahwa proses ini membutuhkan lebih banyak sumber daya daripada yang dapat dibenarkan dan harus dikorbankan (untuk kebaikan yang lebih besar, Anda mengerti). top display memberi Anda semua yang Anda perlukan untuk membunuhnya. Karena MySQL adalah layanan yang dikelola oleh systemd (pada distro yang menggunakan systemd), pilihan pertama Anda adalah menggunakan systemctl untuk menghentikan proses secara perlahan tanpa membahayakan data aplikasi apa pun.

systemctl stop mysqld

Jika proses yang ingin Anda matikan tidak dikelola oleh systemd, atau jika ada yang tidak beres dan systemctl gagal menghentikannya, maka Anda dapat menggunakan kill atau killall untuk menghilangkan proses Anda. Beberapa sistem mengharuskan Anda menginstal killall sebagai bagian dari psmisc kemasan. Anda meneruskan PID ke kill begini:

kill 1367

killall , di sisi lain, menggunakan nama proses daripada ID-nya.

killall mysqld

Membunuh atau membunuh semua, itulah pertanyaannya . Sebenarnya, jawabannya agak jelas. kill akan mematikan satu proses, berdasarkan PID, sementara killall akan membunuh sebanyak mungkin contoh program tertentu yang sedang berjalan. Jadi, jika ada dua atau tiga instance MySQL terpisah—mungkin milik pengguna yang berbeda—semuanya akan dihentikan. Sebelum meluncurkan killall , pastikan tidak ada proses dengan nama serupa yang masih ingin Anda jalankan yang dapat menjadi "kerusakan jaminan".

Tentu saja, Anda juga harus menjalankan systemctl disable untuk memastikan proses tidak dimulai ulang saat boot berikutnya.

systemctl disable mysqld

Menguraikan bagian atas

Jika Anda membutuhkannya, baris ketiga top output yang Anda lihat sedikit sebelumnya memberi kami nilai waktu (sebagai persentase) untuk sejumlah metrik CPU lainnya. Berikut adalah ringkasan singkat dari akronim yang akan Anda lihat di sana:

Metrik Arti
us Waktu menjalankan proses prioritas tinggi (tidak cocok)
sy Waktu menjalankan proses kernel
ni Waktu menjalankan proses dengan prioritas rendah (bagus)
id Waktu yang dihabiskan untuk menganggur
wa Waktu menunggu acara I/O selesai
hi Waktu yang dihabiskan untuk mengelola interupsi perangkat keras
si Waktu yang dihabiskan untuk mengelola interupsi perangkat lunak
st Waktu dicuri dari VM ini oleh hypervisor (host)

top tampilan dapat disesuaikan secara real time melalui input keyboard. Ketik h untuk mempelajari lebih lanjut.

Membuat masalah (mensimulasikan beban CPU)

Ingin sekali melihat top dalam aksi tapi, tahukah Anda, semuanya berjalan lancar?

Mengapa tidak mensimulasikan kelebihan beban CPU tingkat krisis? Sama seperti anak-anak, yes akan mengeluarkan suara (digital) terus menerus sampai disuruh berhenti. Kalau dipikir-pikir, itu sama sekali tidak seperti anak-anak.

Perintah ini akan mengalihkan suara itu ke /dev/null sekali pakai file dan & karakter akan mendorong proses ke latar belakang, memberikan kontrol baris perintah kembali kepada Anda. Untuk meningkatkan tekanan, luncurkan perintah beberapa kali lagi.

$ yes > /dev/null &

Itu seharusnya membuat mereka sibuk. Sementara semua itu berjalan, tonton top untuk melihat apa yang terjadi. Anda juga dapat mencoba menjalankan aplikasi lain untuk melihat berapa banyak yang diperlukan untuk memperlambatnya. Setelah selesai, jalankan killall untuk menghilangkan semua yes . Anda sesi sekaligus.

$ killall yes


Linux
  1. 3 tips untuk mencetak dengan Linux

  2. 8 tips untuk baris perintah Linux

  3. 5 podcast teratas untuk berita dan tips Linux

  1. 8 perintah Linux untuk manajemen proses yang efektif

  2. Cara Membatasi Penggunaan CPU Suatu Proses Di Linux

  3. 10 tutorial teratas untuk administrator Linux

  1. 8 tips untuk otomatisasi sistem Linux yang andal

  2. Kiat Baris Perintah Linux untuk Meningkatkan Produktivitas

  3. Linux :Lihat penggunaan CPU oleh suatu proses untuk detik terakhir