Alat untuk Memantau Steal Time (st)

12

Kami berjalan di server "khusus" virtual, yang seharusnya, secara teori, berarti kami satu-satunya orang di server. Dalam latihan .... Saya pikir kita mungkin tidak.

masukkan deskripsi gambar di sini

Perhatikan bahwa meskipun sepertinya kita mematikan mesin kita, "Steal time" berada pada 71%

Saya mengambil statistik tentang pemuatan dan saya kecewa karena statistik ini tidak muncul di grafik saya. Apakah ada alat yang memantau ini yang mungkin bisa membantu?


Informasi tambahan:

Kami menjalankan 4 core, model:

# grep "model name" /proc/cpuinfo | sort -u
model name  : Intel(R) Core(TM)2 Duo CPU     E7500  @ 2.93GHz
mgjk
sumber
1
Berdedikasi virtual? Dalam hal XEN, mereka perlu pin core khusus untuk penggunaan khusus di VM Anda. Sepertinya penyedia Anda memiliki terlalu banyak CPU karena amout yang tidak adil. Apa yang dia katakan tentang ini?
Nils
1
Berapa vCPU yang Anda miliki dan jenis CPU apa yang dilaporkan grep "model name" /proc/cpuinfo|sort -u? Jika ini benar-benar server khusus maka ada sesuatu yang memakan waktu CPU di Dom0. ATAU mereka memberi Anda lebih banyak vCPU daripada yang tersedia di Dom0.
Nils
1
Kecuali jika ini adalah outlier sesaat, sepertinya ISP Anda berbohong kepada Anda dan mereka, pada kenyataannya, menjalankan cpu berat vms lain pada mesin ini, atau ada sesuatu yang dikonfigurasi sangat salah yang menyebabkan dom0 untuk memonopoli banyak waktu cpu .
psusi
1
SuSE merekomendasikan untuk memesan dua core hanya untuk Dom0 sehingga dapat melakukan semua penanganan IO tanpa mengganggu VM lain. Di mata saya itu hanya akan diperlukan untuk sistem dengan waktu yang dicuri di DomU DAN lalu lintas IO yang berat. Saya ingin tahu apakah penyedia Anda menetapkan lebih banyak vCPU daripada inti logis - seperti menugaskan 4 vCPU sementara hanya 2 CPU logis yang tersedia di Dom0 - yang juga menjelaskan "dicuri" (dan merupakan ide braindead yang cantik - tetapi mungkin dalam XEN) .
Nils
1
Akar penyebab yang satu ini ternyata adalah bahwa ISP memiliki VM yang salah dikonfigurasi. Tamu itu diberitahu memiliki core lebih banyak daripada yang sebenarnya. Ini sepertinya menyebabkan kekacauan dengan penjadwalan. ISP tidak dapat memberikan dukungan teknis yang cerdas, tetapi kami dapat "membuktikan" masalah dengan menonaktifkan inti nomor ganjil di / proc. Tidak pernah menjadi masalah sejak itu.
mgjk

Jawaban:

12

Pertanyaan Anda didefinisikan dengan baik, tetapi Anda tidak memberikan banyak informasi tentang lingkungan Anda, bagaimana Anda saat ini memantau atau alat grafik apa yang Anda gunakan. Namun, mengingat SNMP digunakan hampir secara universal untuk itu saya akan berasumsi bahwa Anda menggunakannya dan setidaknya memiliki sedikit keakraban dengannya.

Meskipun (sedekat yang saya tahu) waktu CPU Steal saat ini tidak tersedia dari snmpd, Anda dapat memperpanjangnya sendiri dengan UCD-SNMP-MIB::extOutputobjek dan execperintah.

Cara termudah (yang saya temukan) untuk mendapatkan waktu mencuri adalah dari iostat. Dengan menggunakan konstruk berikut ini, kami hanya dapat mencuri waktu:

$ iostat -c | awk 'NR==4 {print $5}'
0.00

Karena itu, tambahkan berikut ini ke snmpd.conf Anda:

exec cpu_steal_time /usr/bin/iostat -c | /usr/bin/awk 'NR==4 {print $5}'

(Atau Anda dapat meletakkan perintah dalam skrip wrapper dan memanggil wrapper dari dalam snmpd.conf.)

Setiap execpanggilan masuk snmpd.confdiindeks mulai dari 1. Jadi, jika Anda hanya memiliki satu pernyataan exec maka Anda akan ingin polling UCD-SNMP-MIB::extOutput.1. Jika ini adalah pernyataan exec ke 5 maka polling UCD-SNMP-MIB::extOutput.5, dll.

OID numerik untuk UCD-SNMP-MIB::extOutputadalah .1.3.6.1.4.1.2021.8.1.101jadi jika Anda berada di indeks 1 itu akan menjadi .1.3.6.1.4.1.2021.8.1.101.1, dan indeks 5 akan .1.3.6.1.4.1.2021.8.1.101.5, dll

Anda kemudian membuat polling grafik yang SNMPD OID dari pengukur tipe, mulai dari 0-100. Ini akan memberi Anda beberapa grafik cantik.

bahamat
sumber
Jawaban yang bagus Seberapa sering statika ini dikumpulkan? Hanya selama polling, atau adakah cara seperti dalam RMON-MIB yang akan mencatat nilai tanpa polling eksternal?
Nils
Saya percaya itu akan menarik ini setiap kali snmpdditanya untuk OID itu.
bahamat
Jika iostat tidak diinstal: top -bn1 | sed -nr '3s /.*,// gp'
davide
9

sar -umungkin membantu dalam kasus Anda. sar biasanya merupakan bagian dari sysstat -package.

Nils
sumber
Saya berharap dapat menetapkan lebih dari satu jawaban sebagai jawaban yang diterima. Kedua jawaban ini sangat bermanfaat :-) Terima kasih!
mgjk
0

Jawaban yang paling banyak dipilih sangat bagus, tetapi saat ini tidak sepenuhnya berfungsi: net-snmp kehilangan execpanggilan, jadi ini seharusnya terlihat seperti ini

extend-sh cpu_steal_time /usr/bin/iostat -c 1 1 | /usr/bin/awk '!/%user|Linux|^$/ {print $5}'

Dan hasilnya akan terlihat di bawah nsExtendOutput1Table:

# snmpwalk localhost NET-SNMP-EXTEND-MIB::nsExtendOutput1Table
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cpu_steal_time" = STRING: 0.60
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."cpu_steal_time" = STRING: 0.60
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."cpu_steal_time" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."cpu_steal_time" = INTEGER: 0

di mana nsExtendOutput1Lineoid adalah .1.3.6.1.4.1.8072.1.3.2.3.1.1:

snmpwalk localhost .1.3.6.1.4.1.8072.1.3.2.3.1.1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cpu_steal_time" = STRING: 0.60
drookie
sumber