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.
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.
Jawaban:
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.
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.
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.
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.
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.
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%.