Solusi 1:
Waktu CPU dialokasikan dalam diskrit irisan waktu (kutu). Untuk sejumlah irisan waktu tertentu, CPU sibuk, di lain waktu tidak (yang diwakili oleh proses menganggur). Pada gambar di bawah CPU sedang sibuk untuk 6 dari 10 irisan CPU. 6/10 =0,60 =60% dari waktu sibuk (dan karena itu akan ada 40% waktu diam).
Sebuah persentase didefinisikan sebagai "angka atau tingkat yang dinyatakan sebagai sejumlah bagian tertentu dari sesuatu yang dibagi menjadi 100 bagian". Jadi dalam hal ini, bagian-bagian tersebut adalah irisan waktu yang terpisah dan sesuatu adalah irisan waktu sibuk vs irisan waktu tidak ada aktivitas -- laju dari irisan waktu sibuk ke tidak ada aktivitas.
Karena CPU beroperasi dalam GHz (miliar siklus per detik). Sistem operasi mengiris waktu itu dalam unit yang lebih kecil yang disebut kutu. Mereka tidak benar-benar 1/10 detik. Tingkat kutu di windows adalah 10 juta kutu dalam satu detik dan di Linux adalah sysconf(_SC_CLK_TCK)
(biasanya 100 tik per detik).
Dalam sesuatu seperti top
, siklus CPU yang sibuk selanjutnya dipecah menjadi persentase hal-hal seperti waktu pengguna dan waktu sistem. Di top
di Linux dan perfmon di Windows, Anda akan sering mendapatkan tampilan yang melebihi 100%, itu karena totalnya 100% * the_number_of_cpu_cores.
Dalam sistem operasi, ini adalah penjadwal tugas untuk mengalokasikan irisan berharga ini ke proses, jadi penjadwallah yang melaporkan ini.
Solusi 2:
Waktu CPU adalah waktu proses menggunakan CPU - mengubahnya menjadi persentase dilakukan dengan membaginya dengan jumlah waktu nyata yang berlalu.
Jadi, jika saya memiliki proses yang menggunakan 1 detik waktu CPU selama 2 detik, proses tersebut menggunakan 50% CPU.
Dalam kasus proses MATLAB Anda, 217% menunjukkan bahwa proses tersebut menggunakan 2,17 detik waktu CPU per detik selama interval sampel terakhir - secara efektif, memonopoli 2 inti CPU dan mengambil sebagian dari sepertiga.