Bingung dengan nilai CPU pada perintah Unix 'top'

11

Pada tangkapan layar di bawah ini, keseluruhan CPU dilaporkan sebagai 3% tetapi proses mysqld dilaporkan menggunakan 57%. Apakah ini 57% dari keseluruhan 3% dan karenanya mysqld hanya menggunakan sekitar 1,5% dari CPU?

tangkapan layar atas http://img.skitch.com/20090620-cih33piwnnrke6aw41y9p1phwr.jpg

UPDATE : Seorang komentator di bawah ini meminta saya menekan tombol '1' dan memposting hasilnya: kunci 1 http://img.skitch.com/20090620-gayja43s44qtw2wkw4aq642e8c.jpg

Teflon Ted
sumber

Jawaban:

11

57,6% berarti mysqld menggunakan .576 dari satu cpu. Perbedaan ini kemungkinan merupakan kondisi ras antara pengumpulan data untuk sistem secara keseluruhan dan mengumpulkan data per-proses.

EDIT: Berdasarkan pembaruan Anda, sepertinya Anda memiliki 16 core.

57.5% => .575/16 = .036 = 3.6%.

Jadi dari situlah 3% Anda berasal.

Jika Anda menjumlahkan semua persentase menganggur dan mengurangi dari 1600%, itu juga keluar menjadi sekitar 57,5%.

brian-brazil
sumber
3

Bisakah Anda mencoba menekan angka 1 ketika top sedang berjalan dan lihat apa yang terjadi.

Edit:

Mr Unknown mengatakannya dengan baik.

top mengatakan "Jika Anda memiliki satu inti CPU, itu akan menjadi 57,5% sibuk."

Tetapi Anda memiliki 16 core. Jadi nomor 57 ini tersebar di semua tempat, dengan mysqld multi-threaded dan semuanya ...

Agak membingungkan. Tapi saya pikir ini karena top akan merasa lebih sulit untuk menampilkan informasi untuk setiap inti ... bayangkan baris info teratas dengan 16 atau lebih core!

Juga jika Anda menambahkan semua waktu CPU "% us"

1.7+1.0+2.3+1.0+7.4+11.1+15.1+8.7 = 48.3
48.3/16 = 3.01875

Di sinilah angka 3% berasal dari ...

Tidak sekarang
sumber
dilakukan; lihat pertanyaan terbaru.
Teflon Ted
1

Adakah yang merekomendasikan htop? Bukannya itu akan membantu dengan pertanyaan khusus ini lebih dari jawaban yang sudah ada sebelumnya, tetapi saya merasa berkewajiban untuk menyebutkan htopkapan saja saya melihat seseorang masih menggunakan top!

pengguna14018
sumber
0

Saya tidak tahu apakah atasan Anda menggabungkan beberapa CPU yang Anda miliki, tetapi itu masih tidak masuk akal.

Apa yang mungkin terjadi adalah bahwa top tidak mendapatkan nilai untuk setiap proses dan total penggunaan CPU pada saat yang sama. Ada sejumlah kecil waktu di mana mysql mungkin berhenti atau mulai menggunakan banyak CPU antara saat info proses dibaca dan global dibaca. Bisa jadi hanya kondisi balapan yang sederhana.

Tentu saja, ini harus terjadi cukup lama bagi Anda untuk memperhatikan, jadi saya kira ini bisa saja bug aneh di suatu tempat di atas atau akuntansi kernel.

David Pashley
sumber
0

kami: userspace - apa yang Anda jalankan di atas kernel sy: system calls - apa yang berjalan di dalam kernel ni: proses yang diubah id: idle wa: menunggu i / o hi: interupsi perangkat keras - berapa banyak waktu yang dihabiskan untuk berurusan dengan perangkat keras si: interupsi perangkat lunak - berapa banyak waktu yang dihabiskan berurusan dengan interupsi yang dibuat oleh perangkat lunak (panggilan sistem, dll.)

Ric
sumber