Dari mana angka itu berasal
%st dalam top adalah bagian waktu saat CPU virtual Anda dalam kondisi bisa dijalankan tetapi tidak dijadwalkan pada inti fisik, sebagaimana dilaporkan oleh hypervisor. Penghitung ini ada karena tamu tidak dapat membedakan antara inti yang lambat dan inti yang tidak pernah diterimanya.
top -bn1 | head -3
vmstat 1 5
mpstat -P ALL 1 5Nilai mentah, bagi siapa pun yang membuat grafiknya sendiri, adalah bidang kedelapan dari baris cpu dalam /proc/stat, dihitung dalam USER_HZ:
grep -w cpu /proc/statMengapa nilainya nol di sini
Inti dialokasikan satu kali. vCPU pada instance Anda dipasang ke inti fisik yang tidak termasuk dalam alokasi siapa pun, pada host yang tidak mengalami oversubscription, sehingga tidak ada antrean untuk menunggu. Bukan angka rendah, bukan saldo kredit yang habis pada hari keempat bulan — tidak ada yang bisa dicuri.
Jika milik Anda tidak nol, itu adalah cacat dan kami menginginkan tiket tersebut. Sertakan keluaran mpstat -P ALL 5 12 dan ID instance.
Mengapa angka orang lain tidak nol
Paket burstable dibangun dari steal time. Beberapa tamu berbagi inti, masing-masing memegang saldo kredit, dan ketika saldo habis, penjadwal menyerahkan inti kepada orang lain. Dijual dengan jujur, itu adalah produk yang sah untuk beban kerja yang idle. Bukan ini. Kami menghapus tier murah pada 2021 dan overselling pergi bersamanya.
Apa yang perlu diperiksa ketika mesin terasa lambat tetap saja
Steal adalah hal pertama yang dilihat semua orang dan jarang menjadi jawabannya. Berdasarkan urutan kemungkinan:
Antrean proses
vmstat 1 5Lebih banyak thread yang bisa dijalankan daripada inti, di kolom r, berarti Anda kehabisan CPU. Tidak ada tuning yang bisa menciptakan inti tambahan.
Disk
iostat -x 1 5%iowait yang naik sementara waktu pengguna tetap rendah menunjukkan penyimpanan, bukan prosesor.
cgroup Anda sendiri
Ini yang menjebak orang. Kontainer dengan kuota CPU terasa persis seperti steal time dari dalam proses dan melaporkan steal nol, karena batasnya milik Anda, bukan kami:
cat /sys/fs/cgroup/cpu.statnr_throttled dan throttled_usec yang naik berarti kuota yang ditetapkan oleh orkestrator Anda sendiri adalah batasnya. Naikkan atau hapus.
Frekuensi
Clock boost bergerak mengikuti beban kerja, dan tes single-threaded adalah cara jujur untuk melihat posisi Anda sebenarnya:
apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 runBandingkan angka peristiwa per detik dengan instance lain, bukan dengan angka dari posting blog seseorang tahun 2019.
Kolom guest dan nested
%guest dan %gnice tidak nol hanya ketika Anda menjalankan mesin virtual di dalam instance Anda. Virtualisasi nested tersedia pada paket EPYC yang lebih besar dan pada bare metal; periksa perangkatnya sebelum merancang berdasarkan itu:
ls -l /dev/kvmVersi singkat
r tinggi dengan waktu pengguna mendekati seratus persen berarti CPU. %iowait tinggi berarti disk. cpu.stat yang menghitung throttle adalah kuota Anda sendiri. Steal tidak nol adalah kami, dan itu seharusnya tidak terjadi.