|
Perintah vmstat adalah alat pemantauan Linux/Unix paling umum yang menampilkan nilai status server pada interval waktu tertentu, termasuk serverPenggunaan CPU, penggunaan memori, pertukaran memori virtual, baca dan tulis IO. Perintah ini adalah perintah favorit saya untuk memeriksa Linux/Unix, salah satunya adalah Linux/Unix didukung, dan yang lainnya adalah dibandingkan dengan bagian atas, saya dapat melihat penggunaan CPU, memori, dan IO dari seluruh mesin, alih-alih hanya melihat penggunaan CPU dan penggunaan memori dari setiap proses (skenario penggunaan yang berbeda). Umumnya, penggunaan alat vmstat dilakukan melalui dua parameter numerik, parameter pertama adalah jumlah interval waktu yang diambil sampelnya, satuannya adalah detik, dan parameter kedua adalah jumlah sampel, seperti:
root@ubuntu:~# VMstat 2 1 PROCS -----------memory---------- ---swap-- -----io---- -system-- ----CPU---- r b swpd cache buff gratis si so bi bo di cs us sy id wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2 berarti bahwa status server dikumpulkan setiap dua detik sekali, dan 1 berarti status server hanya dikumpulkan sekali. Bahkan, selama proses aplikasi, kami akan memantau untuk jangka waktu tertentu, dan jika kami tidak ingin memantaunya, kami dapat mengakhiri vmstat secara langsung, misalnya:
root@ubuntu:~# VMstat 2 PROCS -----------memory---------- ---swap-- -----io---- -system-- ----CPU---- r b swpd cache buff gratis si so bi bo di cs us sy id wa 1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0 0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0 1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
Ini berarti bahwa vmstat mengumpulkan data setiap 2 detik dan berlanjut sampai saya mengakhiri program, dan saya mengakhiri program setelah mengumpulkan data 5 kali di sini. Oke, perintahnya diperkenalkan, sekarang mari kita mulai menjelaskan arti dari setiap parameter. rArtinya menjalankan antrian (yaitu, berapa banyak proses yang benar-benar dialokasikan ke CPU), server yang saya uji saat ini relatif menganggur, tidak ada program yang berjalan, ketika nilai ini melebihi jumlah CPU, akan ada kemacetan CPU. Ini juga terkait dengan beban bagian atas, umumnya bebannya lebih tinggi jika melebihi 3, lebih tinggi jika melebihi 5, dan jika melebihi 10, itu tidak normal, dan keadaan server sangat berbahaya. Beban bagian atas mirip dengan antrian yang berjalan per detik. Jika antrean yang berjalan terlalu besar, itu berarti CPU Anda sibuk, yang biasanya menyebabkan penggunaan CPU yang tinggi. bArtinya proses yang diblokir, ini tidak banyak untuk dikatakan, prosesnya diblokir, semua orang mengerti. SWPDJika ukuran memori virtual yang digunakan lebih besar dari 0, itu berarti mesin Anda memiliki memori fisik yang tidak mencukupi, dan jika itu bukan penyebab kebocoran memori program, maka inilah saatnya untuk meningkatkan memori atau memigrasikan tugas yang menghabiskan memori ke mesin lain. Gratis Ukuran memori fisik gratis, memori mesin saya adalah total 8G, dan sisanya 3415M. buff Sistem Linux/Unix digunakan untuk menyimpan, konten apa di direktori, izin, dll. cache, saya mungkin menempati lebih dari 300M di mesin ini cachecache langsung digunakan untuk mengingat file yang kita buka, buffer file, saya mengambil lebih dari 300M di mesin saya sendiri (inilah hal pintar dari Linux / Unix, ambil bagian dari memori fisik gratis untuk cache file dan direktori, untuk meningkatkan kinerja eksekusi program, ketika program menggunakan memori, buffer / cache akan digunakan dengan cepat.) ) si Jika nilai ini lebih besar dari 0, itu berarti memori fisik tidak cukup atau memori bocor. Mesin saya memiliki banyak memori dan semuanya baik-baik saja. jadi Ukuran disk yang ditulis ke memori virtual per detik, jika nilai ini lebih besar dari 0, sama seperti di atas. bi peralatan blokJumlah blok yang diterima per detik, di sini perangkat blok mengacu pada semua disk dan perangkat blok lainnya pada sistem, ukuran blok default adalah 1024byte, saya tidak memiliki operasi IO pada mesin, jadi selalu 0, tetapi saya telah melihatnya pada mesin yang menangani data dalam jumlah besar (2-3T) dapat mencapai 140000/s, dan kecepatan tulis disk hampir 140M per detik boJumlah blok yang dikirim per detik oleh perangkat blok, misalnya, ketika kita membaca file, bo lebih besar dari 0. bi dan bo umumnya mendekati 0, jika tidak, IO terlalu sering dan perlu disesuaikan. dalamJumlah interupsi per detik CPU, termasuk interupsi waktu CSJumlah pengalihan konteks per detik, misalnya, ketika kita memanggil fungsi sistem, kita perlu mengganti konteks, dan pengalihan utasKonteks prosesMisalnya, di server web seperti Apache dan nginx, kami umumnya melakukan tes kinerja dengan ribuan atau bahkan puluhan ribu konkurensi, dan proses memilih server web dapat diturunkan oleh puncak proses atau utas, uji stres, hingga cs ke nilai yang relatif kecil, jumlah proses dan utas adalah nilai yang lebih tepat. Panggilan sistem juga sama, setiap kali fungsi sistem dipanggil, kode kita akan memasuki ruang kernel, menghasilkan peralihan konteks, yang sangat memakan sumber daya, dan kita harus mencoba menghindari seringnya panggilan ke fungsi sistem. Terlalu banyak sakelar konteks berarti bahwa sebagian besar CPU Anda terbuang-untuk peralihan konteks, sehingga lebih sedikit waktu bagi CPU untuk melakukan hal-hal serius, dan CPU tidak digunakan sepenuhnya, yang tidak disarankan. KAMIpenggunaWaktu CPUSaya pernah melihat bahwa as mendekati 100 dan antrian r berjalan mencapai 80 di server yang melakukan enkripsi dan dekripsi sangat sering (mesin diuji stres, dan kinerjanya tidak baik). syJika waktu CPU sistem terlalu tinggi, itu berarti panggilan sistem lama, seperti operasi IO yang sering. Id Waktu CPU idle, secara umum, id + us + sy = 100, umumnya saya pikir id adalah penggunaan CPU idle, us adalah penggunaan CPU pengguna, sy adalah penggunaan CPU sistem. wtTunggu waktu CPU IO.
|