Перейти к тексту

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

Профиль создается, когда вы в первый раз заходите в developerWorks. Выберите данные в своем профиле (имя, страна/регион, компания) которые будут общедоступными и будут отображаться, когда вы публикуете какую-либо информацию. Вы можете изменить данные вашего ИБМ аккаунта в любое время.

Вся введенная информация защищена.

  • Закрыть [x]

При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

Вся введенная информация защищена.

  • Закрыть [x]

Экономия энергии в Linux : Часть 1. Подсистема CPUfreq

Узнайте обо всех компонентах настройки энергетической отдачи для System x с установленной Linux

Дженифер Хоппер, инженер по программному обеспечению, IBM
author photo - Jenifer Hopper
Дженифер Хоппер (Jenifer Hopper) — программист IBM Linux Performance Group в Остине, штат Техас. В настоящее время она занимается проблемами высокопроизводительных вычислений и рабочих нагрузок для измерения энергопотребления, а также системным профилированием и анализаторами данных.

Описание:  Эта серия из трёх статей содержит вводную информацию по снижению энергопотребления в вашей системе. В первой части представлены начальные сведения, касающиеся системных компонентов и принципов тонкой настройки подсистемы CPUfreq в Linux, рассмотрены режимы C-state и P-state, рассказано, какие из пяти регуляторов в составе ядра (in-kernel governors) можно задействовать для повышения энергоэффективности вашей системы без ущерба для производительности.

Больше статей из этой серии

Дата:  28.12.2010
Уровень сложности:  средний PDF:  A4 and Letter (40KB | 9 страница)Загрузить Adobe® Reader®
Активность:  14505 просмотров
Комментарии:  


Об этой серии статей

В этой серии статей рассказывается о том, как настроить сервер IBM System x с установленной Linux для получения наибольшей энергоэффективности. Вы узнаете о регуляторах в составе ядра (in-kernel governors) и применении их настроек; также показано влияние настроенных регуляторов на производительность и рабочую нагрузку в системах электронной торговли. Практические иллюстрации даются для сервера System x с установленным дистрибутивом Red Hat Enterprise Linux версии 5.2 (RHEL 5.2), но они будут верными для любого ядра версии 2.6.x и любого процессора, поддерживающего частотное масштабирование.

В первой части кратко описываются компоненты и принципы, на основе которых делается настройка производительности системы, в том числе: подсистема Linux CPUfreq, режимы C-state и P-state и пять регуляторов в составе ядра (in-kernel governors).

Во второй части приводятся подробности общих настроек подсистемы CPUfreq в Linux, пяти регуляторов — performance, powersave, userspace, ondemand и conservative — и их настроек.

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

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

Подсистема CPUfreq в Linux

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

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


Режимы C-state и P-state

Перед началом обсуждения CPUfreq рассмотрим режимы C-state и P-state.

Режимы C-state: почти полное бездействие

Режимы C-state, за исключением режима C0 , когда процессор находится в работающем состоянии, — это режимы бездействия, когда процессор перестаёт подавать тактовые импульсы отдельным своим компонентам и отключает их для экономии энергии. Чем выше уровень режима C-state, тем больше компонентов он охватывает (остановка тактирования ядра процессора, прекращение подачи прерываний и т.д.) и тем больше экономия. Во время простоя системы эти режимы помогают сэкономить энергию.

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

Не у всех процессоров есть эти возможности, но для того, чтобы использовать режимы C и C1E и получить значительную экономию энергии при простое, необходимо включить опции CPU C State и C1E (или им подобные) в BIOS. Некоторые системы поддерживают режимы глубокого сна C3 и даже C6.

Помните, чем выше уровень режима C-state, тем больше экономия энергии.

Режимы P-state: рабочее состояние

Режимы P-state — это рабочие состояния, задающие тактовую частоту и напряжение питания процессора. Чем больше номер режима, тем ниже частота и напряжение питания процессора. Регуляторы CPUfreq используют режимы P-state для изменения тактовой частоты и понижения потребления энергии.

Чтобы использовать в системе режимы P-state и регуляторы CPUfreq, необходимо включить опцию Processor Performance States (или ей подобную) в BIOS. На рисунке1 – простая диаграмма режимов C-state и P-state.


Рисунок1: режимы C-state и P-state
Режимы C-state и P-state

Обязательные требования для работы CPUfreq

Чтобы использовать подсистему CPUfreq, необходимы условия, описанные в этом разделе. В RHEL 5.2 подсистема CPUfreq включена по умолчанию (как правило, она включена по умолчанию также и в других дистрибутивах). Чтобы быстро это проверить, посмотрите на файловую систему /sys. Если вы увидите каталог cpufreq в пути /sys/devices/system/cpu/cpu*/cpufreq/, то подсистема CPUfreq в вашей системе сейчас включена. Если каталог отсутствует, то для того, чтобы он появился, следуйте инструкциям, данным ниже.

Сначала нужно убедиться, что процессор поддерживает масштабирование частоты. Ниже в разделе Ресурсы приводится ссылка на список аппаратных платформ, поддерживающих подсистему CPUfreq.

Далее посмотрите на конфигурационный файл ядра. Все необходимые настройки, как правило, отмечены по умолчанию в ядре RHEL 5.2, но для того, чтобы получить желаемое состояние при старте системы, некоторые из этих настроек можно изменить. В разделе CPU Frequency scaling конфигурационного файла ядра располагаются следующие опции:

  CONFIG_CPU_FREQ

Чтобы использовать масштабирование тактовой частоты, эта опция должна иметь значение y.

  CONFIG_CPU_FREQ_GOV_PERFORMANCE, CONFIG_CPU_FREQ_GOV_POWERSAVE,
  CONFIG_CPU_FREQ_GOV_USERSPACE, CONFIG_CPU_FREQ_GOV_ONDEMAND,
  CONFIG_CPU_FREQ_GOV_CONSERVATIVE

Эти опции относятся к каждому из доступных регуляторов CPUfreq. Чтобы использовать нужный регулятор, установите в конфигурации значение y или m. При значении y регулятор будет встроен в ядро, при использовании m модуль ядра нужно будет загружать при каждой загрузке системы с помощью одной из нижеследующих команд:

  modprobe cpufreq_performance
  modprobe cpufreq_powersave
  modprobe cpufreq_userspace
  modprobe cpufreq_ondemand
  modprobe cpufreq_conservative

Кроме того, в случае использовании m модули можно загружать при старте системы, указав их в файле /etc/rc.local. Также заметьте, что включить по умолчанию регулятор userspace или performance можно, установив для CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE или для CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE значение y.

Для использования sched_mc_power_savings и sched_smt_power_savings, которые описаны ниже, опции CONFIG_SCHED_MC и CONFIG_SCHED_SMT в разделе Processor type and features конфигурационного файла ядра также должны иметь значение y.

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


Регуляторы

В подсистеме CPUfreq доступны для использования пять регуляторов. Они устанавливают тактовую частоту процессора согласно определённым критериям; некоторые из них динамически изменяют частоту при изменении входных данных от системы или пользователя. В этой статье рассматривается дистрибутив RHEL 5.2 на основе ядра 2.6.18, в котором все эти регуляторы доступны. Давайте познакомимся с ними; в частях 2 и 3 серии эти регуляторы описываются более подробно.

Регулятор performance (производительность): самая высокая частота

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

Регулятор powersave (энергосбережение): самая низкая частота

Регулятор powersave, в противоположность предыдущему, статически настраивает процессор на самую низкую из доступных частот. В нем также можно настроить диапазон доступных частот. Назначение его – постоянная работа на самой низкой из возможных частот. Очевидно, что в этом случае на производительность влияет тот факт, что система никогда не будет использовать более высокую частоту, независимо от степени занятости процессора(ов).

На практике этот регулятор часто не дает экономии энергии, поскольку самая большая экономия достигается за счет использования режимов C-state. Использование регулятора powersave увеличивает время работы процесса, поскольку он будет использовать наименьшую частоту; в результате система дольше не перейдет в состояние простоя и потому не получит экономию от вхождения в режим C-state.

Регулятор Userspace: ручная настройка частоты пользователем

Далее идёт регулятор userspace, дающий возможность вручную настраивать, выбирать и выставлять частоту. Этот регулятор также работает совместно с демонами частоты процессора, запущенными в пользовательском пространстве для регулирования частоты (мы поговорим про демоны и приведём для них примеры во второй части). Этот регулятор полезен для установки индивидуальной политики энергорегулирования, для которой нет готовых настроек и которая недоступна в других регуляторах. Также этот регулятор можно использовать для экспериментов с политиками.

Заметьте, что сам по себе регулятор userspace не производит динамического изменения частоты; скорее, он даёт возможность пользователю или программе в пользовательском пространстве динамически выбирать частоту процессора.

Регулятор Ondemand: изменение частоты по уровню загрузки процессора

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

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

Регулятор conservative: более плавный вариант ondemand

Регулятор conservative впервые появился в ядре версии 2.6.12, он базируется на регуляторе ondemand. Он тоже динамически настраивает частоты в зависимости от загрузки процессора, однако ведёт себя немного по-другому и даёт возможность увеличивать мощность постепенно. Регулятор conservative проверяет процент использования процессора и в случае, если значение выходит за нижний или верхний порог, постепенно повышает или понижает частоту до следующей возможной, вместо того чтобы сразу установить наивысшую частоту, как это делает регулятор ondemand.

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


Далее

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

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


Ресурсы

Научиться

Получить продукты и технологии

Обсудить

  • Вступайте в сообщество My developerWorks; персональный профиль и индивидуальная домашняя страничка позволяют настроить developerWorks согласно вашим интересам и общаться с другими пользователями developerWorks.(EN)

Об авторе

author photo - Jenifer Hopper

Дженифер Хоппер (Jenifer Hopper) — программист IBM Linux Performance Group в Остине, штат Техас. В настоящее время она занимается проблемами высокопроизводительных вычислений и рабочих нагрузок для измерения энергопотребления, а также системным профилированием и анализаторами данных.

Помощь по сообщениям о нарушениях

Сообщение о нарушениях

Спасибо. Эта запись была помечена для модератора.


Помощь по сообщениям о нарушениях

Сообщение о нарушениях

Сообщение о нарушении не было отправлено. Попробуйте, пожалуйста, позже.


developerWorks: вход


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Выберите ваше отображаемое имя

При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

(Должно содержать от 3 до 31 символа.)


Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Оценить эту статью

Комментарии

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=605280
ArticleTitle=Экономия энергии в Linux : Часть 1. Подсистема CPUfreq
publish-date=12282010
author1-email=jhopper@us.ibm.com
author1-email-cc=