Kebutuhan energi CPU multicore dan penyeimbangan beban

10

Saya tertarik pada load balancing untuk sistem CPU multicore. Jika Anda menggunakan 1 CPU dengan banyak core, apakah lebih hemat energi untuk menyeimbangkan beban pada beberapa core, atau mencoba mengisi satu core dan membiarkan orang lain menganggur.
Asumsi dasarnya adalah bahwa jumlah pekerjaan yang dilakukan dalam kedua kasus persis sama, dalam waktu yang bersamaan. Jadi, apakah lebih efisien menggunakan 4 core dalam CPU yang sama dengan masing-masing beban 25% atau 1 inti dengan beban 100%.
Saya akan menganggap 1 inti dengan beban 100% harus lebih efisien, tetapi karena saya mungkin salah, saya sedang mencari jawaban serius tentang masalah ini (tanpa tebakan).

private_meta
sumber
+1 Pertanyaan yang sangat menarik! Berikut adalah beberapa tautan tomshardware.com/reviews/truth-pc-power-consumption.1707.html tomshardware.com/reviews/intel-cpu-power-cumption , 1750.html namun mereka tidak benar-benar menjawab pertanyaan Anda. Saya memiliki C2D T8100 dan suatu hari saya akan melakukan beberapa pengujian untuk melihat jenis beban mana yang menghasilkan lebih banyak panas.
AndrejaKo
4 core pada 25% pasti akan menyebarkan panas lebih baik dari 1 core pada 100%.
Brian Knoblauch
Jika jumlah pekerjaan konstan di seluruh use case, menumpuk semua beban pada core yang sama akan membuatnya bekerja lebih rendah - secara efektif membutuhkan lebih banyak waktu dan meronta-ronta. Anda mungkin kehilangan penghematan energi instan ketika pekerjaan yang sama membutuhkan waktu lebih lama untuk diselesaikan. (+1, pertanyaan yang memancing pemikiran)
nik
@ Brian setuju bahwa menggunakan lebih banyak inti menyebarkan panas, tetapi apakah itu menghasilkan jumlah panas yang sama secara total?
Kevin Panko
AMD telah mengumumkan CPU yang akan dapat mematikan core yang tidak digunakan, memungkinkan untuk menjalankan core yang aktif pada kecepatan clock yang lebih tinggi
b0fh

Jawaban:

6

IMO pertanyaan ini tidak bisa dijawab dalam kasus umum.

Di meja saya, saya memiliki salah satu CPU yang diaktifkan Core i7-980x 6-core TurboBoost diaktifkan baru. Jika Anda memuat satu inti pada mesin ini, itu akan meningkatkan kecepatan clock inti itu, sehingga meningkatkan konsumsi daya CPU, sehingga akan membuat perbedaan besar. CPU ini dan juga CPU lainnya yang lebih modern dapat mengurangi daya inti yang tidak aktif, meningkatkan penghematan daya. Itu tidak benar pada model CPU yang lebih lama.

Perlu diingat bahwa pekerjaan yang harus Anda lakukan dengan satu inti tentu akan berbeda dari pekerjaan yang Anda lakukan dengan beberapa inti. Jika Anda dapat menyebarkan beban ke beberapa inti, Anda akan menemukan bahwa banyak waktu ekstra akan dihabiskan untuk inti tunggal yang melakukan pengalihan konteks mahal, dan kinerja Anda akan berkurang.

Bagaimanapun, masalahnya memiliki terlalu banyak variabel untuk dijawab. Seseorang dapat terus-menerus membahas tentang berbagai jenis muatan, dan siapa pun yang mencoba membuat tolok ukur untuk mendapatkan jawaban akan berakhir (mungkin secara tidak sengaja) membuat perbandingan apel dengan jeruk yang tidak berlaku pada kasus penggunaan lainnya.

Oh, dan satu hal lagi. Kebanyakan orang mungkin akan mengutip efisiensi dalam hal kekuatan . Anda tidak ingin jatuh ke dalam perangkap itu. Karena waktu untuk memproses beban tentu akan berbeda tergantung pada bagaimana beban seimbang, Anda harus mengintegrasikan hasilnya dari waktu ke waktu untuk menemukan jumlah bersih energi yang digunakan untuk menyelesaikan pekerjaan untuk mencapai hasil yang kredibel.

David Markle
sumber
LOL Bagaimana kamu bisa tahu? Hokie Engineering, sayang!
David Markle
Membutuhkan seseorang untuk mengetahuinya. Go Mizzou
hotei
Oh tunggu. Saya salah. Ada satu orang yang dapat menjalankan beberapa tolok ukur dan memberi kami jawaban dalam kasus umum: gizmodo.com/5598885/…
David Markle
4

Saya melakukan beberapa tes hari ini menggunakan komputer ini (Intel C2D T8100) dan menggunakan aplikasi SETI @ Home yang dioptimalkan dari penginstal bahasa gila 0.36. Saya menggunakan M $ Joulmeter untuk menghitung konsumsi daya. Saya mengukur kali pohon konsumsi. Pertama, saya membiarkan BOINC mengambil core 100% dan waktu CPU 100% dan membiarkannya berjalan selama satu jam. Prosesor menghabiskan 20W dan grafik waktu CPU dari task manager datar pada 100%. Konsumsi daya rata-rata komputer saya adalah 45,05W dan naik dan saat ini saya berhenti menguji konsumsi daya adalah 46,18W.

Pada pengujian kedua, saya menetapkan BOINC untuk mengambil 50% dari core yang tersedia dan 100% dari waktu CPU dan membiarkannya berjalan selama satu jam. Konsumsi daya CPU bervariasi antara 12W dan 13W. Konsumsi rata-rata adalah 42,72 W dan terus meningkat. Saat ini saya menghentikan tes, konsumsi 44W. Untuk membuat grafik waktu CPU untuk inti yang ditargetkan menjadi garis datar, saya menetapkan afinitas program ke satu inti dan prioritas ke tinggi. Grafik untuk core lain menunjukkan penggunaan waktu CPU yang agak lebih tinggi dari biasanya.

Untuk pengujian ketiga saya mengatur BOINC untuk menggunakan 100% dari core yang tersedia dan 50% dari waktu CPU. Konsumsi daya bervariasi dalam lompatan besar antara 5W dan 17W. Konsumsi daya rata-rata setelah satu jam pengujian adalah 39,96W dan turun. Grafik waktu CPU seperti looled /\/\/\/\/\/\/\/\/\/\/\/\/\. Paku diperkirakan karena ukuran unit waktu yang digunakan oleh BOINC.

Jadi saya percaya bahwa lebih efisien untuk menggunakan dua core yang berjalan pada setengah beban daripada menjalankan satu inti pada beban penuh.

Dan ya, saya tahu bahwa untuk penelitian yang tepat diperlukan lebih banyak sampel, tetapi pada saat itu saya tidak memiliki cukup komputer atau waktu untuk melakukan statistik yang tepat.

AndrejaKo
sumber
1
Sekarang akan menyenangkan untuk menemukan yang setara dengan Joulemeter untuk sistem operasi lain, maka saya dapat menguji beberapa peralatan yang saya dapatkan ...
private_meta
Berikut ini sesuatu untuk laptop GNU / Linux thinkwiki.org/wiki/How_to_measure_power_consumption
AndrejaKo
Berikut ini tautan menarik lainnya: www.lesswatts.org/ dan satu lagi susegeek.com/general/... dan satu lagi publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/... Tampaknya orang tidak percaya bacaan ACPI dan diyakinkan bahwa meter eksternal diperlukan, sangat sedikit tautan yang membahas cara menggunakan meter eksternal. Saya tidak cukup 1337 dengan sistem operasi lain untuk dapat memberikan bantuan.
AndrejaKo
Terima kasih. Masalah dengan meter eksternal adalah mereka mengukur semua konsumsi daya, tidak hanya daya pemrosesan. Sementara konsumsi daya secara keseluruhan juga penting (mis. Algoritma banyak menggunakan hard drive). Jika bacaan ACPI tampaknya tidak dapat dipercaya, Anda harus menggunakan bacaan eksternal untuk Komputer Windows juga untuk dapat membandingkannya: - /
private_meta
Tapi tetap saja pembacaan ACPI lebih baik daripada tidak ada pembacaan, kan? Selain itu, dengan menggunakan tes yang berdampak paling besar pada CPU, kita dapat menetapkan konsumsi daya dasar dan melihat seberapa banyak peningkatan dengan beban. Dengan cara ini kita dapat mengetahui bahwa sebagian besar perubahan konsumsi berasal dari beban CPU. Saya mungkin akan melakukan beberapa pengujian lagi nanti dengan voltmeter dan amperemeter. Akan sangat menarik untuk melihat bagaimana pengukuran ACPI dan pengukuran instrumen nyata dibandingkan. Sayang sekali perbandingan seperti itu tidak dapat digeneralisasi.
AndrejaKo
0

Jawaban atas pertanyaan Anda ada dua: Jika Anda menjalankan kode paralel yang sangat dapat diubah, maka menyeimbangkan beban lebih dari beberapa core selalu lebih efisien. Core akan berjalan pada beban yang lebih rendah melepaskan lebih sedikit panas daripada satu inti yang didorong ke batas itu. Di sisi lain, jika kode Anda tidak dapat diparalelkan, maka menjalankannya pada banyak core kurang efisien karena jumlah cache yang hilang yang akan terjadi karena ketergantungan antar kode. Ini mungkin masih menghasilkan lebih sedikit panas, tetapi pasti akan memakan waktu lebih lama untuk menyelesaikan tugas Anda dibandingkan menjalankannya pada satu inti.

emish
sumber
1
Tetapi jika Anda memiliki kode yang tidak dapat diparalelkan, bagaimana Anda akan menjalankan lebih dari satu inti?
AndrejaKo
Menurut Anda, 4 core yang disatukan hingga 25% secara bersamaan menghasilkan lebih sedikit panas (dan menghasilkan lebih banyak energi yang hilang) dari 1 core yang didorong hingga 100%.
private_meta
@AndrejaKo Jika ada beberapa proses atau utas, mudah untuk menyebarkannya ke seluruh inti.
emish
0

Pertanyaan Anda saat ditanyakan memiliki terlalu banyak hal yang tidak diketahui. Apakah Anda bertanya tentang efisiensi waktu atau efisiensi energi? Kode tidak paralel atau kode paralel? Pekerjaan tunggal atau desktop multi-tasking? Jika Anda memiliki tagihan energi lebih dari $ 1000 / bulan untuk komputer Anda, maka mungkin perlu satu atau dua kekhawatiran. Kalau tidak, Anda tidak bisa menabung cukup untuk membuat masalah ini layak untuk diselesaikan. Menyenangkan untuk dibicarakan - tetapi jika Anda memiliki masalah serius, jawaban terbaik adalah: coba beberapa hal berbeda dan lihat apa yang berhasil.

hotei
sumber