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


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%.
— Brian Knoblauch

Если объем работы постоянен во всех сценариях использования, накопление всей нагрузки на одном и том же ядре приведет к снижению производительности, что потребует больше времени и затрат. Вы можете потерять мгновенную экономию энергии, если для выполнения той же работы требуется больше времени. (+1, вопрос, вызывающий мысли)
— nik

@ Брайан согласился, что использование большего количества ядер распределяет тепло, но генерирует ли оно такое же количество тепла в целом?
— Kevin Panko

AMD анонсировала процессоры, которые смогут отключать неиспользуемые ядра, позволяя запускать активные ядра с более высокой тактовой частотой
— b0fh

Ответы:


6

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

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

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

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

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


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.

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

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


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

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


1
Но если у вас есть непараллельный код, как вы собираетесь работать на более чем одном ядре?
— AndrejaKo

По вашему мнению, 4 ядра, соединенные на 25% вместе, генерируют меньше тепла (и производят больше потерь энергии), чем 1 ядро, доведенное до 100%.
— private_meta

@AndrejaKo Если есть несколько процессов или потоков, их легко распределить по ядрам.
— emish

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.