Потреба в енергії багатоядерного процесора та врівноваження навантаження


10

Мене цікавить балансування навантаження для багатоядерних систем ЦП. Якщо ви використовуєте 1 процесор з декількома ядрами, чи енергоефективніше збалансувати навантаження на декілька ядер, або спробуйте заповнити окремі ядра та залишити інші непрацюючими.
Основне припущення полягає в тому, що обсяг робіт, що виконуються в обох випадках, точно однаковий, за один і той же час. Отже, чи ефективніше використовувати 4 ядра в одному і тому ж процесорі з 25% завантаженням кожного або 1 ядро ​​зі 100% навантаженням.
Я б припустив, що 1 ядро ​​зі 100% завантаженням повинно бути більш ефективним, але, як я можу помилятися, я шукав серйозні відповіді на цю проблему (немає здогадів).


+1 Дійсно цікаве запитання! Ось декілька посилань tomshardware.com/reviews/truth-pc-power-consumption,1707.html tomshardware.com/reviews/intel-cpu-power-consumption,1750.html, проте вони насправді не вирішують ваше питання. У мене є C2D T8100, і на днях я зроблю тестування, щоб побачити, який тип навантаження робить більше тепла.
AndrejaKo

4 ядра на 25%, безумовно, поширюватимуть тепло краще, ніж 1 ядро ​​на 100%.
Брайан Ноблеуч

Якщо обсяг роботи є постійним у всіх випадках використання, накопичення всього навантаження на одне ядро ​​призведе до того, щоб воно було нижчим - це фактично забирає більше часу та молотить. Ви можете втратити миттєву економію енергії, коли для виконання однієї і тієї ж роботи потрібно більше часу. (+1, питання, що провокує думку)
nik

@Brian погодився, що використання більшої кількості ядер поширює тепло, але чи генерує він однакову кількість тепла?
Кевін Панько

AMD оголосила процесори, які зможуть вимкнути невикористані ядра, що дозволять запускати активні ядра з більш високою тактовою частотою
b0fh

Відповіді:


6

ІМО це питання в загальному випадку просто не відповідає.

У мене на столі один із цих новоядерних процесорів Core i7-980x з 6-ядерними процесорами TurboBoost. Якщо ви завантажите одне ядро ​​на цю машину, це збільшить тактову частоту цього ядра, тим самим збільшивши енергоспоживання процесора, що призведе до величезної різниці. Цей процесор, як і інші, більш сучасні процесори можуть частково знеструмлювати неактивні ядра, збільшуючи економію енергії. Це не так справедливо для старих моделей процесора.

Майте на увазі, що робота, яку вам доведеться виконати з одним ядром, обов’язково відрізнятиметься від роботи, яку ви виконуєте з декількома сердечниками. Якщо ви зможете розподілити навантаження на декілька ядер, ви побачите, що багато додаткового часу буде витрачено на одноядерний сервіс, який виконує дорогі контекстні комутатори, і ваша продуктивність постраждає.

У всякому разі, проблема має занадто багато змінних, щоб реально відповісти. Можна продовжувати і про різні типи навантажень, і кожен, хто намагається зробити орієнтир, щоб отримати відповідь, в кінцевому підсумку (можливо, ненароком) зробить порівняння яблук-апельсинів, які не застосовуються в інших випадках використання.

О, і ще одне. Більшість людей, ймовірно, цитують ефективність з точки зору влади . Ви не хочете потрапляти в цю пастку. Оскільки час на обробку навантажень обов’язково відрізнятиметься залежно від збалансованості навантажень, потрібно з часом інтегрувати результат, щоб знайти чисту кількість енергії, яка використовується для виконання завдань, щоб досягти достовірного результату.


LOL Як ти міг сказати? Хокі інженерія, дитино!
Девід Маркл

Береться, щоб знати одного. Ідіть Mizzou
готелі

Зачекайте. Я був неправий. Є один чоловік, який міг би виконати деякі орієнтири та дати нам відповідь у загальному випадку: gizmodo.com/5598885/…
Девід

4

Сьогодні я зробив кілька тестів за допомогою цього комп’ютера (Intel C2D T8100) та використовуючи оптимізовані програми SETI @ Home від установника lunatics 0.36. Я використовував M $ Joulmeter для розрахунку споживання електроенергії. Я вимірював рази споживання дерева. По-перше, я дозволив BOINC зайняти 100% ядер і 100% процесорного часу і дав йому працювати протягом однієї години. Процесор витрачав 20 Вт, а графіки часу процесора від менеджера завдань були рівними на 100%. Середнє споживання електроенергії на моєму комп’ютері склало 45,05 Вт і зростало, і на той момент, коли я припинив тестову енергоспоживання, було 46,18 Вт.

У другому тесті я встановив BOINC взяти 50% доступних ядер і 100% часу процесора і дав йому працювати протягом однієї години. Споживана потужність процесора коливалася між 12 Вт і 13 Вт. Середнє споживання становило 42,72 Вт і зростало. На даний момент я припинив тест, споживання становило 44 Вт. Для того, щоб графік часу CPU для цільового ядра був рівним, я встановив спорідненість програми до одного ядра та пріоритету до високого. Графік для іншого ядра виявився дещо вищим, ніж звичайний час використання процесора.

Для третього тесту я встановив BOINC використовувати 100% доступних ядер та 50% часу процесора. Споживання електроенергії коливалося в великих стрибках між 5 Вт і 17 Вт. Середнє споживання енергії після однієї години тестування становило 39,96 Вт і падає. Часові графіки процесора схожі на зразок /\/\/\/\/\/\/\/\/\/\/\/\/\. Спайки очікували через розмір одиниць часу, який використовував BOINC.

Тому я вважаю, що ефективніше використовувати два ядра, що працюють на половині навантаження, ніж запускати одне ядро ​​при повному навантаженні.

І так, я знаю, що для правильного дослідження потрібно набагато більше зразків, але в той час мені не вистачає комп’ютерів або часу для належної статистики.


1
Тепер було б непогано знайти еквівалент Joulemeter для інших операційних систем, тоді я міг би протестувати частину обладнання, яке я отримав ...
private_meta

Ось щось для ноутбуків GNU / Linux thinkwiki.org/wiki/How_to_measure_power_consumption
AndrejaKo

Ось ще одне цікаве посилання: www.lesswatts.org/ та ще одне susegeek.com/general/… та ще одне publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/… Мабуть, люди не вірять читанням ACPI та переконані що зовнішні лічильники необхідні, тому мало хто з цих посилань обговорює, як використовувати зовнішні лічильники. Мені недостатньо 1337 з іншими операційними системами, щоб мати можливість надати будь-яку допомогу.
AndrejaKo

Дякую. Проблема зовнішніх лічильників полягає в тому, що вони вимірюють все споживання енергії, а не тільки оброблювану потужність. У той час як повне споживання електроенергії було б також важливим (наприклад, алгоритми широко використовують жорсткі диски). Якщо показання ACPI не здаються надійними, вам доведеться використовувати зовнішні показання для комп'ютерів Windows, щоб мати можливість їх порівняти: - /
private_meta

Але все-таки показання ACPI є кращими, ніж відсутні читання, правда? Також, використовуючи тести, які найбільше впливають на процесор, ми можемо встановити базове споживання енергії та побачити, наскільки воно збільшується при навантаженні. Таким чином ми можемо знати, що більша частина змін споживання була пов'язана з завантаженням процесора. Пізніше я можу зробити кілька випробувань за допомогою вольтметра та амперметра. Було б дуже цікаво подивитися, як порівнюються вимірювання ACPI та вимірювання реальних приладів. Дуже погано таке порівняння не можна узагальнити.
AndrejaKo

0

Відповідь на ваше запитання двояка: якщо ви використовуєте паралельний код із сильною векторізацією, балансування навантаження через декілька ядер завжди ефективніше. Сердечники будуть працювати при менших навантаженнях, вивільняючи менше тепла, ніж одне ядро, яке підштовхується до межі. З іншого боку, якщо ваш код не можна паралелізувати, то запуск його на декількох ядрах менш ефективний через кількість пропусків кешу, які трапляться через залежності по коду. Це все ще може генерувати менше тепла, але для виконання вашого завдання, безумовно, знадобиться більше часу, ніж його виконання на одному ядрі.


1
Але якщо у вас є непаралельний код, як ви збираєтеся запускати більше ніж одне ядро?
AndrejaKo

На вашу думку, 4 ядра, що піднімаються на 25% разом, генерують менше тепла (і виробляють більше втрат енергії), ніж 1 ядро, висунуте на 100%.
private_meta

@AndrejaKo Якщо є кілька процесів або потоків, їх легко розкласти по ядрах.
emish

0

У вашому запитуваному запитанні занадто багато невідомих. Ви питаєте про ефективність часу чи енергоефективність? Непаралельний код або паралельний код? Одинична робота або середньостатистичний багатозадачний робочий стіл? Якщо у вас є рахунок на енергію понад 1000 доларів на місяць для ваших комп’ютерів, це БУДЕ турбуватися чи двох. В іншому випадку ви не можете зберегти достатньо, щоб зробити проблему вартим вирішення. Приємно говорити - але якщо у вас серйозна проблема, найкраща відповідь: спробуйте кілька різних речей і подивіться, що працює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.