Intel i7-1065G7 tidak mencapai frekuensi peningkatan turbo maksimal
Saya memiliki laptop dengan cpu Intel i7-1065G7 . turbostat
laporan
35 * 100.0 = 3500.0 MHz max turbo 8 active cores
35 * 100.0 = 3500.0 MHz max turbo 7 active cores
35 * 100.0 = 3500.0 MHz max turbo 6 active cores
35 * 100.0 = 3500.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
38 * 100.0 = 3800.0 MHz max turbo 2 active cores
39 * 100.0 = 3900.0 MHz max turbo 1 active cores
(ini adalah 4 inti fisik / 8 virtual) Ketika saya melempar beban utas tunggal yang besar (menghitung pi dengan mpfr
) ke cpu, saya mengamati bahwa dua inti (mungkin satu inti fisik?) berjalan tepat pada 3500 MHz sementara yang lain memiliki yang lebih rendah frekuensi. Tapi mereka tidak pernah mencapai frekuensi turbo boost yang lebih tinggi.
Jika saya menonaktifkan beberapa inti cpu (misalnya dengan echo 0 > /sys/devices/system/cpu/cpu[2-7]*/online
) laptop akan mencapai frekuensi turbo boost yang sesuai, menghasilkan peningkatan kinerja (tugas yang memakan waktu rata-rata 18,5 detik sebelumnya sekarang membutuhkan 16,8).
Bagaimana cara agar laptop baru saya mencapai kecepatan jam maksimalnya jika tidak semua core diperlukan?
Saya menggunakan Ubuntu 20.04 dengan kernel 5.4.0 pada laptop HP Envy x360.
Apa yang saya harapkan: Di laptop lama saya dengan i7-4712MQ turbostat
memberi
30 * 100.0 = 3000.0 MHz max turbo 4 active cores
30 * 100.0 = 3000.0 MHz max turbo 3 active cores
32 * 100.0 = 3200.0 MHz max turbo 2 active cores
33 * 100.0 = 3300.0 MHz max turbo 1 active cores
(ini juga merupakan mesin inti 4/8). Pada mesin ini beban inti tunggal membuat satu inti meningkat menjadi hampir 3,3 GHz, di bawah beban dua inti dua jam pada 3,2 GHz dll.
Saya belum memeriksa frekuensi cpu individu di Windows, tetapi pengelola tugas terkadang menampilkan frekuensi di atas 3.7GHz.
Pembaruan: Jadi masalahnya hilang ... Saya tidak tahu mengapa. Saya sudah mencopot pemasangannya linux-cloud-tools
tetapi saya rasa ini bukan alasannya.
Jawaban
Kau menulis...
Ketika saya melempar beban utas tunggal yang besar
Jika program Anda berulir tunggal, maka tidak perlu pergi ke frekuensi maksimum di utas lain sehingga tidak perlu.
Tautan Anda adalah untuk Prosesor Intel® Core ™ i7-1065G7.
Dokumen Intel yang Anda tautkan mengatakan bahwa maks adalah 3900 MHz. Data Anda sepertinya menunjukkan ada inti di 3900 MHz jadi saya tidak tahu mengapa menurut Anda itu tidak mencapai maksimum. Anda memposting ini ...
35 * 100.0 = 3500.0 MHz max turbo 8 active cores
35 * 100.0 = 3500.0 MHz max turbo 7 active cores
35 * 100.0 = 3500.0 MHz max turbo 6 active cores
35 * 100.0 = 3500.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
38 * 100.0 = 3800.0 MHz max turbo 2 active cores
39 * 100.0 = 3900.0 MHz max turbo 1 active cores
Secara umum jika pembacaan bukan pada frekuensi maksimal itu karena hanya terjadi sesekali saja sehingga pengukuran hanya akan muncul sesekali saja atau tidak perlu pada frekuensi maksimal karena ada beberapa kendala seperti IO. Jangan khawatir tentang itu. Jika Anda menulis program yang tidak memiliki batasan, dengan kata lain, itu adalah utas dengan batasan komputasi, saya jamin itu akan pergi ke frekuensi maksimal.
Waktu yang berlalu selama 18,5 detik mungkin tidak berarti karena efek acak yang tidak ingin Anda gunakan untuk menarik kesimpulan. Pekerjaan yang berjalan lama selama 200 detik atau lebih mungkin memberi Anda data yang lebih bermakna.
Saya mengalami hal serupa, pada pengaturan serupa (CPU i7-9700K, Ubuntu 18.04). Dan menurut saya penggunaan mesin saya mungkin serupa: ini adalah mesin desktop yang saya gunakan untuk menjalankan beberapa aplikasi intensif (tetapi satu utas), sementara juga mungkin memiliki browser web dan beberapa aplikasi perpesanan yang terbuka. Saya menemukan saran di komentar di bawah posting asli berfungsi - mengatur afinitas CPU untuk proses. Saya biasa taskset
melakukannya [1].
Tes pertama (tidak ada perubahan pada pengaturan afinitas): 8 core 'idling' pada ~ 10% penggunaan. Saya memulai tugas intensif CPU berulir tunggal. Satu inti melonjak menjadi 100%, saya melihat 3,6 GHz (maks tanpa turbo) pada semua inti yang digunakan i7z
.
Tes kedua: Membatasi semua proses yang berjalan ke CPU core 0 & 1, dengan: . Sekarang 2 core tersebut berada di 30-40%, sisanya di 0% (meskipun beberapa core lain mungkin mulai mendapatkan aktivitas saat OS memulai proses). Kemudian mulai tugas intensif CPU berulir tunggal yang sama. Satu inti melonjak hingga 100%, tetapi sekarang saya melihatnya mencapai frekuensi turbo maksimal 4,9 GHz. Setelah itu saya mengatur afinitas kembali untuk menggunakan semua inti dengan mengganti rentang dengan , dalam kasus saya.for i in `sudo ps -aux | awk '{ print $2 }'`; do sudo taskset -a -p -c 0-1 $i; done
0-1
0-7
[1] http://manpages.ubuntu.com/manpages/focal/man1/taskset.1.html