Saya punya Intel i7 2700k di sini, dan saya ingin tahu bagaimana saya bisa tahu prosesor mana yang fisik dan mana yang virtual (yaitu: hyperthreading). Saat ini saya sedang menjalankan skrip Conky untuk menampilkan suhu, frekuensi, dan beban CPU saya, tetapi saya tidak yakin saya telah melakukannya dengan benar:
Saya telah menulis skrip saya sendiri untuk mendapatkan suhu dan frekuensi i7z
, tetapi ini hanya sesuai dengan inti fisik. Saat ini saya menampilkan setiap inti seperti ini:
${cpu cpu1} ${lua display_temp 0} ${lua display_load 0}
${cpu cpu2}
${cpu cpu3} ${lua display_temp 1} ${lua display_load 1}
${cpu cpu4}
# ...
Saya tidak yakin ini benar, karena beban dan suhu yang kadang-kadang saya lihat. Di /proc/cpuinfo
, bagaimana core diurutkan? Pertama, semua fisik, lalu semua virtual? Setiap inti fisik lalu inti virtualnya? Bagaimana mereka diurutkan?
ht
bendera hanya menunjukkan bahwa multi-threading (HTT) didukung oleh CPU - tidak jika itu diaktifkan atau tidak. Meskipun demikian, itu tidak selalu dapat diandalkan, misalnya, itu salah mengindikasikan bahwa i5 i5-6500 mendukung HTT: ark.intel.com/content/www/us/en/ark/products/88184/…Jawaban sebelumnya sangat menarik.
Setelah beberapa googling, saya menemukan beberapa mata pelajaran terkait:
/server/235825/disable-hyperthreading-from-within-linux-no-access-to-bios
/programming/7274585/linux-find-out-hyper-threaded-core-id
Memeriksa apakah HyperThreading diaktifkan atau tidak?
Pada tautan terakhir, skrip python tidak berfungsi ketika host Anda memiliki banyak ID fisik. Saya mencoba memodifikasinya dengan kondisi yang berbeda di akhir:
Mengubah:
untuk
Tapi itu tidak berfungsi seperti yang diharapkan, berdasarkan pesan sebelumnya. Omong-omong, Anda dapat melakukan sesuatu yang lebih komprehensif daripada:
dengan:
[...]
Apa yang menarik pada host banyak core dengan mengaktifkan hyperthreading adalah distribusi core logis pada perangkat keras.
Misalnya, di salah satu komputer saya (48 inti logis, 2 prosesor fisik, 24 (12 * 2) 'core nyata' (jadi, juga 24 core virtual)):
Ini berarti cpu0 dan cpu24 berbagi "alamat" perangkat keras fisik yang sama. Hal yang sama untuk cpu1 dan cpu25 ...
Jadi, pada dasarnya, jika saya ingin menonaktifkan hyperthreading dari OS linux saya, saya harus memasukkan '0' di cpu {24..47} / online dengan
Anda akan melihat betapa menariknya sistem saya menghitung inti.
sumber
Anda juga dapat menggunakan lscpu:
di sini core logis 0 dan 4 menuju ke core 0
sumber