Apa persen artinya CPU?

11

Saya menonton penggunaan CPU persen saya melalui proses. Bagaimana proses hanya menggunakan CPU 50%? Bukankah proses menggunakan 100% lalu 0%, lalu 100%? Tidak seperti setiap instruksi lainnya adalah program yang berbeda.

Anthony D
sumber
1
Punya prosesor ganda kebetulan?
Pasti pertanyaan untuk SuperUser.
Noldorin

Jawaban:

16

Hanya polling total sekitar sekali per detik. Anda melihat seberapa banyak detik terakhir yang digunakan.

Jika Anda melihat cpu duduk di 50% untuk sementara waktu, yang mungkin terjadi adalah menggunakan 100% dari satu cpu dalam sistem cpu ganda.

Joel Coehoorn
sumber
4
"satu inti dari sistem dual core" - ... atau bahkan satu CPU dengan 'hyperthreading'.
@ ChrisW: diperbaiki.
Joel Coehoorn
Persentase penggunaan CPU sering dilaporkan keluar dari 100% untuk setiap CPU secara terpisah, sehingga jumlah total daya CPU yang akan digunakan dalam sistem dual core adalah 200%, dalam quad core 400%, dll.
David Z
Tidak di task manager windows mereka tidak.
Joel Coehoorn
11

Secara teknis Anda benar. Pada waktu tertentu, CPU sedang digunakan, atau tidak digunakan. Tetapi menampilkan itu dalam sebuah grafik tidak akan sangat membantu, sehingga grafik tersebut rata-rata menggunakan CPU selama beberapa periode waktu, mungkin setiap detik.

Eric Petroelje
sumber
3

OS menjadwalkan proses untuk periode waktu tertentu. Jadi jika proses dijadwalkan untuk (katakanlah) 1 ms dari 10 ms, maka itu akan menggunakan CPU 10%.

Ini sedikit berlawanan dengan intuisi, karena (dalam sistem single-threaded, single-CPU), prosesnya berjalan, atau tidak berjalan. yaitu menggunakan 100% atau 0%. Persentase yang Anda lihat diukur pada jendela waktu dan merupakan ukuran dari OS yang mengalokasikan slot waktu untuk proses Anda untuk dijalankan.

Perhatikan bahwa proses Anda tidak akan berkontribusi untuk ini jika Anda mengakses I / O. Jadi jika Anda melakukan perhitungan besar, Anda akan mendaftar 100% (dengan asumsi tidak ada yang berjalan). Jika Anda kemudian menunggu paket jaringan / akses disk dll angka CPU Anda akan turun, meskipun proses Anda masih berjalan.

Brian Agnew
sumber
2

Pada level yang sangat rendah, Anda pada dasarnya benar. Setiap saat, prosesor menjalankan instruksi untuk proses tertentu atau tidak.

Tetapi OS Anda berada di antara proses dan prosesor Anda, membuatnya berbagi waktu. Persentase yang Anda lihat adalah persentase waktu pemrosesan baru-baru ini yang diberikan OS pada proses itu.

tim
sumber
1

Itu berdasarkan waktu rata-rata. Meskipun semua utas dapat memiliki paket waktu CPU yang sama (berdasarkan prioritas), utas hanya dapat mengatakan "terima kasih tapi saya menganggur", dan meneruskannya ke utas berikutnya. Itulah sebabnya mengapa program tidak selalu menggunakan% waktu yang sama, dan sebagian besar program menggunakan CPU 0%, dan program yang benar-benar membutuhkan CPU dapat menghabiskan waktu hampir 100% untuk dirinya sendiri.

Mengapa batas maksimal 50%? Anda mungkin memiliki dua core CPU, dan hanya menggunakan satu core.

Atau, seperti yang disarankan, ini menggunakan hyperthreading, tapi saya tidak tahu bagaimana tepatnya yang ini berperilaku.

Havenard
sumber
0

Program Anda mungkin melakukan banyak I / O (disk atau jaringan membaca / menulis). Itu akan membuat program sibuk tetapi perlu sedikit atau tidak ada waktu CPU.

Mike Two
sumber
0

Pemanfaatan sistem disampel dan dirata-rata, yang merupakan satu-satunya hal yang masuk akal untuk dilakukan.

Misalnya, catatan berapa banyak waktu proses / utas yang dihabiskan untuk menjalankan selama 1 detik disimpan. Jika menghabiskan 1 detik pada CPU, itu 100% CPU (atau 50% jika Anda memiliki 2 CPU dan sebagainya), jika menghabiskan 100 ms itu adalah pemanfaatan CPU 10%.

tidak
sumber