Потребление энергии многоядерным процессором и балансировка нагрузки

10

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

private_meta
источник
+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%.
Brian Knoblauch
Если объем работы постоянен во всех сценариях использования, накопление всей нагрузки на одном и том же ядре приведет к снижению производительности, что потребует больше времени и затрат. Вы можете потерять мгновенную экономию энергии, если для выполнения той же работы требуется больше времени. (+1, вопрос, вызывающий мысли)
nik
@ Брайан согласился, что использование большего количества ядер распределяет тепло, но генерирует ли оно такое же количество тепла в целом?
Kevin Panko
AMD анонсировала процессоры, которые смогут отключать неиспользуемые ядра, позволяя запускать активные ядра с более высокой тактовой частотой
b0fh

Ответы:

6

ИМО этот вопрос просто неопровержим в общем случае.

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

Помните, что работа с одним ядром обязательно будет отличаться от работы с несколькими ядрами. Если это так, что вы Можно Распределив нагрузку на несколько ядер, вы обнаружите, что много времени будет потрачено на одно ядро, выполняющее дорогостоящие переключения контекста, и ваша производительность пострадает.

Во всяком случае, проблема имеет слишком много переменных, чтобы действительно ответить. Можно было бы продолжать и рассказывать о различных типах нагрузок, и любой, кто попытается провести сравнительный анализ, чтобы получить ответ, в конечном итоге (вероятно, случайно) сделает сравнение яблок с апельсинами, которое не применяется в других случаях использования.

Да, и еще одна вещь. Большинство людей, вероятно, процитируют эффективность с точки зрения мощность , Вы не хотите попасть в эту ловушку. Поскольку время обработки нагрузок обязательно будет различным в зависимости от того, как нагрузки сбалансированы, вы должны интегрировать результат с течением времени, чтобы найти чистую сумму энергия используется для завершения работы, чтобы получить надежный результат.

David Markle
источник
LOL Как ты мог сказать? Хоки Инжиниринг, детка!
David Markle
Рыбак рыбака видит из далека. Go Mizzou
hotei
Ой, подожди. Я был неправ. Есть один человек, который может выполнить некоторые тесты и дать нам ответ в общем случае: gizmodo.com/5598885/...
David Markle
4

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

Во втором тесте я настроил BOINC так, чтобы он занимал 50% доступных ядер и 100% процессорного времени, и он работал в течение одного часа. Потребляемая мощность процессора варьировалась от 12 Вт до 13 Вт. Среднее потребление было 42,72 Вт и растет. В тот момент, когда я остановил тест, потребление было 44 Вт. Чтобы график времени процессора для целевого ядра был плоским, я установил привязку программы к одному ядру и приоритету к высокому. График для другого ядра показывает несколько большее, чем обычно, использование ЦП.

Для третьего теста я настроил BOINC на использование 100% доступных ядер и 50% процессорного времени. Потребление энергии варьировалось большими скачками от 5 Вт до 17 Вт. Средняя потребляемая мощность после одного часа испытаний составила 39,96 Вт и падала. Графики времени процессора зациклены как /\/\/\/\/\/\/\/\/\/\/\/\/\, Пики были ожидаемы из-за размера единиц времени, используемых BOINC.

Поэтому я считаю, что более эффективно использовать два ядра, работающие с половинной нагрузкой, чем одно ядро ​​с полной нагрузкой.

И да, я знаю, что для правильного изучения нужно гораздо больше образцов, но в то время у меня не хватает компьютеров или времени для правильной статистики.

AndrejaKo
источник
1
Теперь было бы неплохо найти эквивалент джоулометра для других операционных систем, тогда я мог бы протестировать некоторое оборудование, которое я получил ...
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

Ответ на ваш вопрос имеет два аспекта: если вы используете параллельный код с высокой степенью векторности, балансировка нагрузки между несколькими ядрами всегда более эффективна. Ядра будут работать при более низких нагрузках, выделяя меньше тепла, чем одно ядро, которое выдвигается до своего предела. С другой стороны, если ваш код не распараллеливается, то запуск его на нескольких ядрах менее эффективен из-за количества ошибок в кеше, которые могут возникнуть из-за зависимостей по всему коду. Это может по-прежнему генерировать меньше тепла, но это определенно займет больше времени для выполнения вашей задачи по сравнению с работой на одном ядре.

emish
источник
1
Но если у вас есть непараллельный код, как вы собираетесь работать на более чем одном ядре?
AndrejaKo
По вашему мнению, 4 ядра, соединенные на 25% вместе, генерируют меньше тепла (и производят больше потерь энергии), чем 1 ядро, доведенное до 100%.
private_meta
@AndrejaKo Если есть несколько процессов или потоков, их легко распределить по ядрам.
emish
0

В вашем вопросе слишком много неизвестных. Вы спрашиваете об эффективности времени или энергоэффективности? Непараллельный код или параллельный код? Отдельная работа или обычная настольная многозадачность? Если у вас есть счет за электроэнергию более 1000 долларов в месяц для ваших компьютеров, то это может стоить беспокойства или двух. В противном случае вы не сможете накопить достаточно денег, чтобы решить проблему. Об этом интересно говорить, но если у вас серьезная проблема, лучший ответ: попробуйте разные вещи и посмотрите, что работает.

hotei
источник