GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan vmstat untuk memecahkan masalah kinerja di Linux

vmstat (statistik memori virtual) perintah memungkinkan Anda untuk memantau penggunaan memori sistem Anda. Ini menunjukkan berapa banyak memori virtual yang ada, dan berapa banyak aktivitas bebas dan paging. Anda dapat mengamati masuk dan keluar halaman saat terjadi. Ini sangat berguna untuk mendeteksi kekurangan memori fisik, yang dapat berdampak buruk pada kinerja sistem.

Menjalankan vmstat tanpa argumen

Sebelum memulai, penting untuk dicatat bahwa baris pertama keluaran dari vmstat (dan satu-satunya yang diberikan jika dijalankan tanpa argumen) adalah ringkasan sejak waktu boot sistem. Biasanya tidak terlalu berguna untuk masalah kinerja, terutama jika sistem sudah lama digunakan. Namun, mungkin masih berisi informasi bermanfaat tentang peristiwa yang terjadi di masa lalu, tetapi tidak terjadi saat ini.

# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0 387560  62140     44 348320    1    2    94    20   90   15  1  1 98  0  0

Cara membaca keluaran vmstat

Output vmstat berisi lebih dari sekedar statistik memori. Seperti halnya iostat dan mpstat, vmstat menerima argumen interval dan count. Contoh berikut menjalankan 3 laporan dengan jarak 5 detik:

# vmstat 5 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0 384120  68604   8088 327332    1    2    90    20   90   14  1  1 98  0  0
 1  0 384120  68604   8088 327364    0    0     0     0   91  179  1  0 99  0  0
 0  0 384120  68232   8088 327364    0    0     0     0  107  190  1  1 98  0  0

Output dipecah menjadi enam bagian:
1. proses
2. memori
3. bertukar
4. io
5. sistem
6. cpu

proses

Dua kolom pertama memberikan informasi tentang proses:

r Jumlah proses yang berada dalam status menunggu. Proses ini tidak melakukan apa-apa selain menunggu untuk dijalankan. b Jumlah proses yang berada dalam mode tidur dan terputus sejak pembaruan terakhir

memori

Empat kolom berikutnya memberikan informasi tentang memori:

swpd Jumlah memori virtual yang digunakan gratis Jumlah memori idle penggemar Jumlah memori yang digunakan sebagai buffer tembolok Jumlah memori yang digunakan sebagai cache

tukar

Dua kolom berikutnya memberikan informasi tentang swap:

si Jumlah memori yang ditukar dari disk (per detik) begitu Jumlah memori yang ditukar ke disk (per detik)

Bukan nol si dan begitu angka menunjukkan bahwa tidak ada cukup memori fisik dan kernel menukar memori ke disk.

io

Dua kolom pertama memberikan informasi tentang I/O (input-output):

bi Jumlah blok per detik yang diterima dari perangkat blok bo Jumlah blok per detik yang dikirim ke perangkat blok

sistem

Dua kolom berikutnya memberikan informasi sistem berikut:

di Jumlah interupsi per detik, termasuk jam cs Jumlah sakelar konteks per detik

cpu

Lima kolom terakhir memberikan persentase total waktu CPU:

kami Persentase siklus CPU yang dihabiskan untuk proses pengguna sy Persentase siklus CPU yang dihabiskan untuk proses sistem (kernel) id Persentase siklus CPU yang dihabiskan saat idle wa Persentase siklus CPU yang dihabiskan untuk menunggu I/O st Persentase siklus CPU yang dicuri dari mesin virtual

Opsi baris perintah

Informasi tambahan dapat dimasukkan dengan memberikan opsi yang berbeda pada perintah vmstat. Beberapa opsi baris perintah terdaftar:

-a Menampilkan memori aktif dan tidak aktif.
-f Menampilkan jumlah garpu sejak boot.
-t Tambahkan cap waktu ke output.
-d Laporkan statistik disk.

Kemacetan CPU

Ada dua area penting dari output vmstat yang berkaitan dengan kinerja CPU. Yang pertama adalah r kolom. Ini adalah kolom pertama dalam output. Ini berisi nilai yang sesuai dengan jumlah utas yang ada di antrian run selama interval terakhir di mana vmstat dijalankan. Utas ini menunggu CPU tersedia untuk dijalankan. Ada beberapa aliran pemikiran tentang jumlah maksimum yang sesuai di sini, tetapi kebanyakan orang setuju bahwa lebih dari 2 hingga 5 kali jumlah CPU pada sistem menunjukkan hambatan (Perkiraan ini perlu disesuaikan untuk CPU multi-core).

Tempat kedua untuk mencari data terkait CPU ada di kolom sebelah kanan output. Ada tiga kolom:waktu us (pengguna), waktu sy (sistem), dan waktu id (idle). Ketiganya memecah penggunaan waktu CPU dalam persentase. Mereka harus menambahkan hingga 100%. Idealnya, CPU akan menghabiskan sebagian besar waktunya di kategori us dan id. Kategori sy mengacu pada waktu yang dihabiskan CPU untuk melakukan pekerjaan tingkat driver/kernel. Kali ini diambil dari aplikasi pengguna. Jika CPU menghabiskan sebagian besar waktunya dalam kategori ini, ini dapat menunjukkan peralihan konteks yang berlebihan karena CPU atau memori yang macet, masalah dengan penguncian tingkat kernel, atau masalah lainnya. Sistem yang sibuk akan menunjukkan persentase idle konstan mendekati nol. Tetapi sistem yang sibuk tidak selalu berarti bahwa sistem tersebut kelebihan beban.

Kinerja Disk / IO

Utilitas vmstat tidak dapat memberi tahu kami disk mana yang memiliki hambatan, tetapi dapat memberi tahu kami jika ada masalah IO secara keseluruhan. Kolom penting dalam output adalah kolom b (diblokir). Ini mengacu pada jumlah utas yang diblokir, atau sedang menunggu penyelesaian IO dalam interval yang lalu. Kolom b harus 0 sebagian besar waktu. Jika ada angka bukan nol di kolom itu terus-menerus, Anda dapat menyelidiki lebih lanjut dengan iostat.

Kemacetan Memori

Menganalisis masalah terkait memori harus dimulai dengan memeriksa jumlah memori kosong di output vmstat, yang ada di kolom ke-4. Jika memori bebas rendah, kita perlu menyelidiki lebih lanjut proses mana yang menghabiskan lebih banyak memori.

Kesimpulan

Perintah vmstat dapat menjadi alat yang berguna untuk mengatasi masalah kinerja. Ini dapat memberi tahu Anda subsistem mana yang harus diperiksa lebih dekat untuk mendiagnosis masalah lebih lanjut.

Menggunakan iostat untuk memantau kinerja sistem di Linux (Contoh disertakan)


Linux
  1. Memecahkan masalah menggunakan sistem file proc di Linux

  2. Menggunakan Windows Performance Analyzer untuk memecahkan masalah kinerja

  3. 10 Contoh pidstat untuk Debug Masalah Kinerja Proses Linux

  1. membatasi penggunaan memori di R di bawah linux

  2. kinerja dd di Mac OS X vs. Linux

  3. Memori tidak aktif Linux

  1. Penggunaan Memori Linux

  2. Menggunakan nfsstat dan nfsiostat untuk memecahkan masalah kinerja NFS di Linux

  3. Perintah Linux:menjelajahi memori virtual dengan vmstat