Program single-threaded membutuhkan CPU terlalu rendah?

2

Saya menggunakan Windows 7 Professional, Intel i7 CPU. Saya tahu i7 memiliki Hyper-Threading dan saya menganggap ini adalah alasannya.

Saat menjalankan program single-threaded, saya melihat bahwa ia hanya menggunakan CPU 12-13% di Task Manager, yang merupakan 1/8 dari waktu CPU pada CPU quad-core. Apakah itu masalah di Task Manager karena HT, atau apakah itu benar-benar hanya menggunakan setengah inti?

K.Steff
sumber
Ini sebenarnya menggunakan lebih dari setengah inti. Sistem operasi tidak memiliki cara untuk menentukan itu. Diasumsikan bahwa karena satu inti virtual idle, hanya setengah inti yang digunakan. Tapi itu tidak benar. Satu inti virtual dapat menggunakan semua sumber daya eksekusi pada inti fisik jika mampu. Jika tidak, hyper-threading akan menggandakan kinerja CPU dan hanya menambah 10-15%.
David Schwartz
Yah, hanya saja saya berasumsi OS akan mencari tahu penggunaan CPU yang tepat, karena memiliki dukungan untuk HT ...
K.Steff
Masalahnya adalah tidak ada garis dasar. Bahkan ketika sebuah core memproses instruksi secepat mungkin, beberapa unit eksekusi tidak digunakan. (Misalnya, jika Anda hanya melakukan bilangan bulat matematika, unit floating point menganggur.) Pemanfaatan pada tingkat itu tidak didefinisikan dengan baik. Semua OS tahu adalah bahwa ia dapat menjalankan delapan utas dan menjalankan satu, sehingga 12%. HT-aware hanya berarti ia tahu inti mana yang menjadwalkan utas dan kapan inti fisik menganggur. Dan jika itu benar-benar mengukur pemanfaatan unit eksekusi, Anda tidak akan pernah mendekati 100% tidak peduli apa pun beban yang Anda jalankan.
David Schwartz

Jawaban:

2

Jika HyperThreading diaktifkan, Anda akan melihat delapan grafik CPU terpisah di Task Manager. Jadi 100% dari salah satu core virtual ini akan menjadi 12-13%. (Salah satu alasan saya lebih suka cara Mac / Linux melakukannya: setiap core adalah 100%, jadi mesin delapan-core - nyata atau virtual - dapat memiliki penggunaan CPU hingga 800%.)

Hanya saja cara penggunaannya dilaporkan. Menonaktifkan HyperThreading di BIOS / EFI mungkin membuat Anda sedikit lebih baik kinerjanya.

Ken
sumber