Назад | Перейти на главную страницу

Влияет ли управление питанием процессора на производительность сервера?

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

Некоторое время назад я включил «Сбалансированный» план энергосбережения на всех наших серверах, потому что полагал, что они далеки от высокой загрузки, и таким образом мы могли сэкономить немного энергии.

Я предполагал, что это не окажет значительного, измеримого влияния на производительность. Тем не мение, если функции энергосбережения процессора являются влияние на типичную производительность - особенно на сервере общей базы данных - тогда я не уверен, что оно того стоит!

Я был немного удивлен, что наш веб-уровень, даже при загрузке 35-40%, понижается с 2,8 ГГц при 1,25 В до 2,0 ГГц при 1,15 В.

Я полностью ожидаю, что понижение частоты позволит сэкономить электроэнергию, но этот уровень нагрузки кажется мне достаточно высоким, поэтому он должен увеличиваться до полной тактовой частоты.

У нашего сервера баз данных с 8 процессорами очень много трафика, но чрезвычайно низкая загрузка ЦП (просто из-за природы наших SQL-запросов - их много, но действительно простые запросы). Обычно он составляет 10% или меньше. Так что я ожидаю, что это было даже больше, чем на скриншоте выше. Тем не мение, когда я переключил управление питанием на «высокую производительность», я увидел, что мой простой тест SQL-запросов улучшился примерно на 20% и стал очень стабильным от запуска к запуску.

Полагаю, я думал, что управление питанием на слабо загруженных серверах было беспроигрышным - без потери производительности и значительной экономии энергии, потому что ЦП обычно является потребителем энергии №1 или №2 на большинстве серверов. Что делает не кажется, так; вы потеряете некоторую производительность при включенном управлении питанием ЦП, если только ваш сервер не всегда находится под такой большой нагрузкой, что управление питанием фактически отключилось. Этот результат меня удивил.

Есть ли у кого-нибудь другой опыт или рекомендации по управлению питанием ЦП для серверов? Это то, что вы включаете или выключаете на своих серверах? Вы измерили много энергии, которую вы экономите? Вы тестировали его включение и выключение?

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

Я всегда отключал любые типы управления питанием на серверах. Мне любопытно, что испытали другие, но я всегда предполагал, что, если сервер работает с недостаточной тактовой частотой, всегда будет некоторая задержка для `` увеличения '' ЦП до 100%, а в центре обработки данных любая задержка, подобная этой недопустимо.

Представленные вами данные подтверждают это предположение. Итак, я не проводил какого-либо специального тестирования, но, похоже, вам не следует использовать какие-либо энергосберегающие технологии в Windows или BIOS. Я даже отключил настройки сети и карты PCI, чтобы быть сверхконсервативным.

Сколько энергии это на самом деле сэкономит ты:
Если вы все же решите, что эта функция может поставить под угрозу стабильность ваших серверов (у меня есть опыт в этом), вы можете поискать в другом месте для экономии энергии.

Я бы попытался узнать сколько энергии это может сэкономить для того количества серверов, которые у вас есть (Хотя, возможно, вы это уже сделали). Поскольку график, который вы разместили в своем ответе, представляет собой проценты, для вашей компании фактическая экономия может быть очень небольшой. Если у вас не так много серверов, на самом деле их может быть не так много, и установка освещения, активируемого движением, или чего-то подобного в вашем офисе может сэкономить больше энергии (хотя это не так востребовано).

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

Не забывайте диски:
Кроме того, вы можете проверить, что эта функция энергосбережения не замедляет работу диска (ов), если они не используются. Может быть, на какое-то время все результаты SQL-запроса будут в ОЗУ, диск будет использован и перейдет в спящий режим (хотя не уверен, работает ли он так)? Если это может произойти, производительность будет сильно снижена, пока все снова заработает.

вы потеряете некоторую производительность при включенном управлении питанием ЦП, если только ваш сервер не всегда находится под такой большой нагрузкой, что управление питанием фактически отключилось. Этот результат меня удивил.

Предисловие: Я делаю несколько шагов / обобщений относительно Intel Xeon и их энергосберегающих характеристик с помощью SpeedStep. Читая о Intel Xeon "Yorkfield«45-нм процессоры, технология Enhanced Intel SpeedStep (EIST) и Enhanced Halt State (C1E) кажутся настоящими виновниками ситуации. Я согласен с вашим утверждением, полагая, что включение таких функций управления питанием поможет сберечь энергию, но когда процессорам потребовалась энергия под нагрузкой, чтобы система вернулась к нормальным настройкам тактовой частоты напряжения. Похоже, что EIST и C1E имеют некоторые побочные эффекты, которые интуитивно не подразумеваются при использовании опции либо / или в BIOS. После обхода На многочисленных сайтах, посвященных разгону, похоже, что эти две настройки в BIOS вызывают немалое разочарование.

Из http://www.overclock.net/intel-cpus/376099-speedstep-guide-why-does-my-processor.html:

C1E (улучшенное состояние остановки): C1E - более простой из двух компонентов. Его можно включить или отключить в BIOS, и он работает независимо от операционной системы. C1E имеет две конфигурации - холостую и нагрузочную. Когда загрузка ЦП относительно низкая, эта функция снижает множитель вашего процессора до минимального значения (обычно 6x) и немного снижает его виртуальное ядро. Во время приложения, интенсивно использующего ЦП, он поднимает мультипликатор до максимального значения и обеспечивает небольшой прирост vCore для компенсации. В нашем примере C1E сделает ваш процессор работать с 6-кратным или 9-кратным увеличением FSB.

EIST (усовершенствованная технология Intel SpeedStep): Это очень надежная функция, имеющая широкий спектр возможностей энергосбережения. Как и его более простой родственник, EIST может влиять как на напряжение вашего процессора, так и на его множитель, однако он имеет гораздо больше уровней конфигурации. Вместо простой настройки «медленно или быстро» SpeedStep может использовать все доступные множители. В нашем примере EIST позволит вашему процессору бегать с множителем 6, 7, 8 или 9, и выбирает, какой из них использовать, в зависимости от нагрузки на ваш процессор. EIST управляется Windows и использует различные «схемы питания», которые вы, возможно, видели на своей панели управления.

Хотя настройка параметров производительности для "высокой производительности", вероятно, является лучшей настройкой для сервера базы данных, я вполне уверен, что либо EIST и / или C1E привели к тому, что процессоры под выполнять даже если они должен вернулись к нормальным настройкам, когда нагрузка существенно увеличилась. Мне кажется, что большой нюанс состоит в том, "что такое существенная нагрузка?" Согласно сайту overclockers.net, они утверждают, что EIST использует эти настройки «схем питания» для управления настройками вашего процессора. Но нет указания на процент нагрузки или на то, как долго можно узнать, когда вернуть CPU к нормальному напряжению.

Опять же, я ни в коем случае не эксперт по предмету для процессоров Intel, но я готов поспорить, что изменение этих двух настроек мощь получить желаемую экономию энергии и производительность вы должен получить, но сохранение настройки «максимальная производительность» столь же эффективно без необходимости перезагрузки.

Быстрый ответ: конечно, экономия энергии повлияет на производительность.

Более длинный ответ - это не весело. По сути, попробуйте настройку, протестируйте производительность и решите, с чем вы можете жить.

Приложения и системы настолько сложны, что здесь нет однозначного ответа, кроме «да, это повлияет на время реакции и другие скорости системы». Если он намного медленнее, чем жесткий диск или сеть - ну, вы поняли. Испытайте в реальности.

Я всегда стараюсь установить на виртуальную машину как можно больше серверов, но там, где мне нужно «голое железо» сервера, это обычно так, как мне нужно или я хочу полностью стабильной производительности. Итак, для этих критически важных для бизнеса машин я НИКОГДА Включите все, что связано с энергосбережением, именно по той причине, с которой вы столкнулись.

*** бах идет-мой-зеленый-учетные данные *

Несколько вещей:

  1. Проверьте BIOS, чтобы убедиться, что управление питанием находится под контролем ОС. Возможно, он настроен на управление с помощью прошивки и, следовательно, с использованием глупого, неоптимального управления питанием процессора.

  2. Проверьте, есть ли какие-либо исправления, связанные с управлением питанием, которые могут отсутствовать. Когда вышла Vista / Server 2008, их было немало.

  3. Проверьте подробную конфигурацию для Balanced. Возможно, снижение производительности вызвано другой функцией энергосбережения. Теоретически снижение производительности от EIST должно быть незначительным, хотя, опять же, база данных SQL имеет уникальный след, и вполне возможно, что на нее непропорционально влияет управление питанием процессора.

Некоторая информация от Microsoft (к сожалению, формат Word Doc)

Повышение энергоэффективности и управление энергопотреблением с помощью Windows Server 2008 R2

Windows Server 2008 в целом более энергоэффективен, чем его предшественник Windows Server 2003. По умолчанию Windows Server 2008 использует «Сбалансированный» план энергосбережения., цель которого - поддерживать высокую производительность при экономии энергии, когда это возможно. Это означает, что Windows Server 2008 потребляет меньше энергии, чем базовая установка Windows Server 2003. Поскольку «Сбалансированный» режим обеспечивает максимальную эффективность энергопотребления (OOB), Microsoft настоятельно рекомендует оставить выбранными по умолчанию «Сбалансированные» настройки. в большинстве случаев.

Windows Server 2008 включает в себя два дополнительных режима по умолчанию, «Энергосбережение» и «Высокая производительность», которые имеют разные цели по мощности и производительности и могут быть уместными в некоторых ситуациях. Режим «Высокая производительность» может быть подходящим для серверов, которые работают с очень высокой загрузкой и должны обеспечивать максимальную производительность, независимо от стоимости электроэнергии. Режим энергосбережения можно использовать для малоиспользуемых серверов, которые обладают большей производительностью, чем им действительно нужно; использование «Энергосбережения» в этой ситуации может обеспечить дополнительную экономию энергии.

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

График энергосбережения при отсутствии управления питанием ЦП в сравнении с управлением питанием ЦП:

Нам ясно, что (и этот график показывает это) при высоких уровнях использования управление питанием ЦП автоматически отключается. Однако я не понимаю, влияет ли низкий уровень использования на общую производительность сервера, например время обработки простых запросов SQL Server.

Вы никогда не должны прибегать к использованию настроек Windows или Bios Speedstep, который поставляется с процессорами Intel, а также есть эквивалент AMD. Это может вызвать проблемы, и я видел такие проблемы, когда с Speedstep часы ЦП продолжали беспорядочно повышаться и понижаться, даже если использование ресурсов ЦП было постоянным.

Если вы хотите быть экологичнее и экономить электроэнергию, используйте процессоры с низким энергопотреблением, обозначенные буквой L перед названием модели, например L54XX серии и LСерия 55XX от Intel.

РЕДАКТИРОВАТЬ: Мне очень жаль, если у меня создалось впечатление, что эта функция всегда будет терпеть неудачу, я просто обгорел от нее, и в критически важной системе у меня не может произойти такого рода вещи, поэтому я просто стараюсь остаться подальше от него.

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

Некоторые версии Windows Server поставляются с включенными по умолчанию настройками сбалансированного питания. Как указал Джефф. Windows 2008 R2 - одна из них. В наши дни очень немногие процессоры являются одноядерными, поэтому это объяснение применимо почти ко всем серверам Windows, с которыми вы столкнетесь, за исключением одноядерных виртуальных машин. (подробнее об этом позже).

Когда активна сбалансированная схема управления питанием, ЦП пытается уменьшить количество потребляемой мощности. Это делается путем отключения половины ядер ЦП в процессе, известном как «парковка». Только половина ЦП будет доступна одновременно, поэтому он потребляет меньше энергии в периоды низкого трафика. Это не проблема сама по себе.

Проблема заключается в том, что когда ЦП не припаркован, вы удвоили доступные циклы ЦП, доступные системе, и внезапно разбалансировали нагрузку на систему, увеличив ее (например) с 70% до 35%. Система смотрит на это и после обработки пика трафика думает: «Эй, я должен немного уменьшить это, чтобы сберечь энергию». Так оно и есть.

Вот и плохая часть. Чтобы предотвратить неравномерное распределение тепла и мощности в ядрах ЦП, он имеет тенденцию парковать ЦП, которые недавно не парковались. И для того, чтобы это работало должным образом, ЦП должен сбрасывать все из регистров ЦП (кеш L1, L2 и L3) в какое-то другое место (скорее всего, в основную память).

В качестве гипотетического примера предположим, что у вас есть 8-ядерный процессор с C1-C8.

  • Активные: C1, C3, C5, C7
  • На стоянке: C2, C4, C6, C8

Когда это происходит, все они становятся активными на некоторое время, а затем система запаркует их следующим образом:

  • Активные: C2, C4, C6, C8
  • На стоянке: C1, C3, C5, C7

Но при этом возникает много накладных расходов, связанных с очисткой всех данных из кеша L1-L3, чтобы это произошло, чтобы странные ошибки не происходили с программами, которые были сброшены из конвейера ЦП.

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

Если у вас есть какое-либо приложение, которому требуется низкая задержка для своих запросов, вам необходимо отключить настройки сбалансированной мощности. Если вы не уверены, что это проблема, сделайте следующее:

  1. Откройте «Диспетчер задач»
  2. Щелкните вкладку «Производительность».
  3. Нажмите "Открыть монитор ресурсов".
  4. Выберите вкладку "CPU"
  5. Посмотрите в правой части окна на различные процессоры.

Если вы увидите, что кто-то из них припаркован, вы заметите, что половина из них припаркована в любой момент времени, все они срабатывают, а затем другая половина припарковывается. Он чередуется вперед и назад. Таким образом, системные процессоры ломаются.

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

Если у вас есть 16-ядерное оборудование, вы можете запускать виртуальные машины, используя более 16 ядер, но для каждого временного интервала только до 16 виртуальных ЦП будут иметь право на этот временной отрезок, а гипервизор должен соответствовать всем ядрам для виртуальной машины. в этот временной интервал. Его нельзя распределить по нескольким временным отрезкам. (Временной интервал - это, по сути, набор из X циклов ЦП. Это может быть 1000 или 100 тыс. Циклов)

Пример: 16-ядерное оборудование с 8 виртуальными машинами. 6 имеют 4 виртуальных процессора (4C), а 2 - 8 виртуальных процессоров (8C).

Временной интервал 1: 4x4C Временной интервал 2: 2x8C Временной интервал 3: 2x4C + 1x8C Временной интервал 4: 1x8C + 2x4C

Что гипервизор не может сделать, так это разделить половину выделения временного кванта между первыми 4 ЦП виртуальной машины из 8 виртуальных ЦП, а затем в следующем временном интервале передать оставшуюся часть другим 4 виртуальным ЦП этой виртуальной машины. Все или ничего в пределах квоты.

Если вы используете Microsoft Hyper-V, настройки управления питанием могут быть включены в ОС хоста, то есть они будут распространяться на клиентские системы, что также повлияет на них.

Как только вы увидите, как это работает, легко увидеть, как использование настроек сбалансированного управления питанием вызывает проблемы с производительностью и вялость серверов. Одна из основных проблем заключается в том, что входящий запрос должен ждать завершения процесса парковки / снятия парковки ЦП, прежде чем сервер сможет ответить на входящий запрос, будь то запрос к базе данных, запрос веб-сервера или что-то еще. .

Иногда система припарковывает или снимает парковку ЦП в середине запроса. В этих случаях запрос запускается в конвейер ЦП, выгружается из него, а затем другой ядро ​​ЦП забирает процесс оттуда. Если это достаточно объемный запрос, это может произойти несколько раз на протяжении всего запроса, изменяя то, что должно было быть 5-секундным запросом к базе данных, на 15-секундный запрос к базе данных.

Самое большое, что вы увидите при использовании Balanced Power, - это то, что системы будут медленнее реагировать практически на каждый ваш запрос.