- Настройка управления питанием процессора (PPM) для схемы управления питанием с балансировкой сетевой нагрузки Windows Server Processor Power Management (PPM) Tuning for the Windows Server Balanced Power Plan
- Методология настройки питания процессора Windows Windows Processor Power Tuning Methodology
- Протестированные рабочие нагрузки Tested workloads
- Конфигурации оборудования Hardware configurations
- Метрики Metrics
- Результаты настройки Tuning results
- Настраиваемые предложения по настройке Customized Tuning Suggestions
- Общие сведения о высокой производительности и требованиях к питанию Understand high-level performance and power requirements
- Общие сведения о характеристиках базовой рабочей нагрузки Understand underlying workload characteristics
- Общие сведения о периодических поведении Understand periodic behaviors
- Краткое руководство по управлению питанием процессора
- Особенности CPU
- Как снизить энергопотребление процессора во время его работы?
- Каков предел энергопотребления процессора?
- Состояния питания (C-states) vs состояния производительности (P-states)
- С-состояния
- Состояния питания ACPI
- Комбинации состояний ACPI G/S и С-состояний процессора
- Как программно запросить переход в энергосберегающее С-состояние?
- Что вынуждает ядро входить в определенное С-состояние?
- Возможно ли отключить С-состояния (всегда использовать С0)?
- Как прерывания влияют на процессор\ядро в состоянии сна?
- P-состояния
- P-состояния, управляемые операционной системой
- P-состояния, управляемые оборудованием
- Заметки про Intel® Turbo Boost
- Применима ли эта информация о C-состояниях и P-состояниях к мобильным и встраиваемым процессорам?
- Как это все работает, например, на Linux?
- Как я могу узнать состояние процессора?
Настройка управления питанием процессора (PPM) для схемы управления питанием с балансировкой сетевой нагрузки Windows Server Processor Power Management (PPM) Tuning for the Windows Server Balanced Power Plan
Начиная с Windows Server 2008, Windows Server предоставляет три схемы управления питанием: сбалансированная, Высокая производительностьи экономия энергии. Starting with Windows Server 2008, Windows Server provides three power plans: Balanced, High Performance, and Power Saver. Сбалансированная схема управления питанием — это выбор по умолчанию, нацеленный на наилучшее энергопотребление для набора типичных серверных рабочих нагрузок. The Balanced power plan is the default choice that aims to give the best energy efficiency for a set of typical server workloads. В этом разделе описываются рабочие нагрузки, которые использовались для определения параметров по умолчанию для схемы с балансировкой нагрузки в прошлых нескольких выпусках Windows. This topic describes the workloads that have been used to determine the default settings for the Balanced scheme for the past several releases of Windows.
При запуске серверной системы, которая сильно различает характеристики рабочей нагрузки или требования к производительности и питанию, можно настроить параметры управления питанием по умолчанию (т. е. создать настраиваемую схему управления питанием). If you run a server system that has dramatically different workload characteristics or performance and power requirements than these workloads, you might want to consider tuning the default power settings (i.e., create a custom power plan). Одним из источников полезной информации о настройке является Серверная информация о питании оборудования. One source of useful tuning information is the Server Hardware Power Considerations. Кроме того, вы можете решить, что высокопроизводительная схема управления питанием является оптимальным выбором для вашей среды. Это означает, что, скорее всего, потребуется значительное снижение энергии в обмен на некоторый уровень скорости реагирования. Alternately, you may decide that the High Performance power plan is the right choice for your environment, recognizing that you will likely take a significant energy hit in exchange for some level of increased responsiveness.
Следует использовать политики управления питанием, включенные в Windows Server, если нет особой необходимости создавать собственный пользователь и иметь очень хорошее представление о том, что результаты будут зависеть от характеристик рабочей нагрузки. You should leverage the power policies that are included with Windows Server unless you have a specific need to create a custom one and have a very good understanding that your results will vary depending on the characteristics of your workload.
Методология настройки питания процессора Windows Windows Processor Power Tuning Methodology
Протестированные рабочие нагрузки Tested workloads
Рабочие нагрузки выбираются, чтобы охватить наиболее интенсивный набор рабочих нагрузок Windows Server. Workloads are selected to cover a best-effort set of «typical» Windows Server workloads. Очевидно, что этот набор не должен представлять себе всю среду реальных серверных сред. Obviously this set is not intended to be representative of the entire breadth of real-world server environments.
Настройка в каждой политике питания — это данные, управляемые следующими пятью рабочими нагрузками: The tuning in each power policy is data driven by the following five workloads:
Рабочая нагрузка веб-сервера IIS IIS Web Server workload
Внутренний тест производительности, называемый веб-основами, используется для оптимизации энергоэкономичности платформ, на которых работает веб-сервер IIS. A Microsoft internal benchmark called Web Fundamentals is used to optimize the energy efficiency of platforms running IIS Web Server. Программа установки содержит веб-сервер и несколько клиентов, имитирующих трафик веб-доступа. The setup contains a web server and multiple clients that simulate the web access traffic. Распределение динамической, статичной (в памяти) и статичной (необходимой для доступа к диску) веб-страниц основано на статистических исследованиях рабочих серверов. The distribution of dynamic, static hot (in-memory), and static cold (disk access required) web pages is based on statistical studies of production servers. Для принудительной передачи ПРОЦЕССОРных ядер сервера в полную загрузку (один конец протестированного спектра) программа установки требует достаточно быстрых сетевых и дисковых ресурсов. To push the server’s CPU cores to full utilization (one end of the tested spectrum), the setup needs sufficiently fast network and disk resources.
Рабочая нагрузка базы данных SQL Server SQL Server Database workload
Тест производительности TPC-E — это популярный тестовый контроль над производительностью базы данных. The TPC-E benchmark is a popular benchmark for database performance analysis. Он используется для создания рабочей нагрузки OLTP для оптимизации настройкой стр/мин. It is used to generate an OLTP workload for PPM tuning optimizations. Эта Рабочая нагрузка требует значительных дисковых операций ввода-вывода и, следовательно, требует высокой производительности для системы хранения и размера памяти. This workload has significant disk I/O, and hence has a high performance requirement for the storage system and memory size.
Рабочая нагрузка файлового сервера File Server workload
Спекповер — Рабочая нагрузка JAVA SPECpower – JAVA workload
Спекповер _ ssj2008 — это первый промышленный эталонный тест, который совместно оценивает характеристики мощности и производительности. SPECpower_ssj2008 is the first industry-standard SPEC benchmark that jointly evaluates power and performance characteristics. Это рабочая нагрузка Java на стороне сервера с различными уровнями загрузки ЦП. It is a server-side Java workload with varying CPU load levels. Он не требует много дисковых или сетевых ресурсов, но имеет определенные требования к пропускной способности памяти. It doesn’t require many disk or network resources, but it has certain requirements for memory bandwidth. Почти все действия ЦП выполняются в пользовательском режиме. действие режима ядра не оказывает существенного влияния на производительность и характеристики производительности, за исключением решений по управлению питанием. Almost all of the CPU activity is performed in user-mode; kernel-mode activity does not have much impact on the benchmarks’ power and performance characteristics except for the power management decisions.
Рабочая нагрузка сервера приложений Application Server workload
Все тесты производительности, за исключением Спекповер, изначально разрабатывались для анализа данных, поэтому они были созданы для запуска на пиковых уровнях нагрузки. All of the benchmarks except SPECpower were originally designed for performance analysis and were therefore created to run at peak load levels. Однако средние и легкие уровни нагрузки наиболее распространены для реальных рабочих серверов и более интересны для оптимизации сбалансированных планов. However, medium to light load levels are more common for real-world production servers and are more interesting for Balanced plan optimizations. Мы намеренно выполняли тесты на разных уровнях нагрузки с 100% на 10% (в течение 10% шагов), используя различные методы регулирования (например, путем уменьшения числа активных пользователей и клиентов). We intentionally run the benchmarks at varying load levels from 100% down to 10% (in 10% steps) by using various throttling methods (e.g., by reducing the number of active users/clients).
Конфигурации оборудования Hardware configurations
Для каждого выпуска Windows в процессе анализа и оптимизации схемы управления питанием используются наиболее актуальные рабочие серверы. For each release of Windows, the most current production servers are used in the power plan analysis and optimization process. В некоторых случаях тесты были выполнены в подготовительных системах, расписание выпуска которых соответствует следующему выпуску Windows. In some cases, the tests were performed on pre-production systems whose release schedule matched that of the next Windows release.
Учитывая, что большинство серверов продаются с 1 до 4 сокетов процессоров, и, так как масштабируемые серверы менее подвержены энергосбережению в качестве основной проблемы, тесты оптимизации схемы управления питанием в первую очередь выполняются в системах с 2 процессорами и 4 процессорами. Given that most servers are sold with 1 to 4 processor sockets, and since scale-up servers are less likely to have energy efficiency as a primary concern, the power plan optimization tests are primarily run on 2-socket and 4-socket systems. Объем оперативной памяти, диска и сетевых ресурсов для каждого теста выбирается для того, чтобы каждая система выполнялась вплоть до полной емкости, в то же время принимая во внимание ограничения по затратам, которые обычно применяются для реальных серверных сред, например для обеспечения разумных конфигураций. The amount of RAM, disk, and network resources for each test are chosen to allow each system to run all the way up to its full capacity, while taking into account the cost restrictions that would normally be in place for real-world server environments, such as keeping the configurations reasonable.
Несмотря на то, что система может работать с пиковой нагрузкой, мы обычно оптимизированы для более низких уровней нагрузки, так как серверы, которые постоянно выполняются на пиковых нагрузках, хорошо привыкли использовать высокопроизводительную схему управления питанием, если энергопотребление не является высоким приоритетом. Even though the system can run at its peak load, we typically optimize for lower load levels, since servers that consistently run at their peak load levels would be well-advised to use the High Performance power plan unless energy efficiency is a high priority.
Метрики Metrics
Все протестированные тестовые тесты используют пропускную способность в качестве метрики производительности. All of the tested benchmarks use throughput as the performance metric. Время отклика рассматривается как требование соглашения об уровне обслуживания для этих рабочих нагрузок (за исключением SAP, где это основная метрика). Response Time is considered as an SLA requirement for these workloads (except for SAP, where it is a primary metric). Например, тестовый запуск считается допустимым, если среднее или максимальное время отклика меньше определенного значения. For example, a benchmark run is considered «valid» if the mean or maximum response time is less than certain value.
Таким образом, в качестве метрики производительности также используется пропускная способность для анализа настройки на стр. Therefore, the PPM tuning analysis also uses throughput as its performance metric. На высшем уровне нагрузки (100% использования ЦП) Наша цель заключается в том, что пропускная способность не должна снижаться более чем на несколько процентов из-за оптимизации управления питанием. At the highest load level (100% CPU utilization), our goal is that the throughput should not decrease more than a few percent due to power management optimizations. Но основное внимание заключается в максимально эффективном энергопотреблении (как определено ниже) на средних и низких уровнях нагрузки. But the primary consideration is to maximize the power efficiency (as defined below) at medium and low load levels.
Использование ядер ЦП с низкими частотами сокращает энергопотребление. Running the CPU cores at lower frequencies reduces energy consumption. Однако низкие частоты обычно уменьшают пропускную способность и увеличивают время отклика. However, lower frequencies typically decrease throughput and increase response time. Для сбалансированной схемы управления питанием предусмотрено преднамеренное соотношение скорости реагирования и эффективности питания. For the Balanced power plan, there is an intentional tradeoff of responsiveness and power efficiency. Тестирование рабочей нагрузки SAP, а также время отклика на соглашения об уровне обслуживания на других рабочих нагрузках убедитесь, что увеличение времени отклика не превышает определенный порог (5% в качестве примера) для этих конкретных рабочих нагрузок. The SAP workload tests, as well as the response time SLAs on the other workloads, make sure that the response time increase doesn’t exceed certain threshold (5% as an example) for these specific workloads.
Если в рабочей нагрузке в качестве метрики производительности используется время отклика, система должна либо переключиться на высокопроизводительную схему управления питанием, либо изменить сбалансированную схему управления питанием, как описано в рекомендациях по рекомендуемому сбалансированному тарифному плану. If the workload uses response time as the performance metric, the system should either switch to the High Performance power plan or change Balanced power plan as suggested in Recommended Balanced Power Plan Parameters for Quick Response Time.
Результаты настройки Tuning results
Начиная с Windows Server 2008 Корпорация Майкрософт работала с корпорацией Intel и AMD, чтобы оптимизировать параметры в PPM для самых последних версий серверных процессоров для каждого выпуска Windows. Starting with Windows Server 2008, Microsoft worked with Intel and AMD to optimize the PPM parameters for the most up-to-date server processors for each Windows release. Для каждой из ранее обсуждаемых рабочих нагрузок было протестировано значительное количество сочетаний параметров в минуту, чтобы найти оптимальную эффективность энергопотребления на разных уровнях нагрузки. A tremendous number of PPM parameter combinations were tested on each of the previously-discussed workloads to find the best power efficiency at different load levels. Так как алгоритмы программного обеспечения были улучшены и были изменены архитектурные аппаратные мощности, каждый новый сервер Windows Server всегда имеет лучшую или экономичную мощность, чем предыдущие версии в рамках ряда протестированных рабочих нагрузок. As software algorithms were refined and as hardware power architectures evolved, each new Windows Server always had better or equal power efficiency than its previous versions across the range of tested workloads.
На следующем рисунке приведен пример эффективности энергопотребления в различных уровнях нагрузки TPC-E на 4-процессорном рабочем сервере под управлением Windows Server 2008 R2. The following figure gives an example of the power efficiency under different TPC-E load levels on a 4-socket production server running Windows Server 2008 R2. В нем показан уровень улучшения в 8% на средних уровнях загрузки по сравнению с Windows Server 2008. It shows an 8% improvement at medium load levels compared to Windows Server 2008.
Настраиваемые предложения по настройке Customized Tuning Suggestions
Если характеристики основной рабочей нагрузки значительно отличаются от пяти рабочих нагрузок, используемых для настройки сбалансированного плана питания по умолчанию, можно поэкспериментировать, изменив один или несколько параметров в минуту, чтобы найти оптимальное соответствие для вашей среды. If your primary workload characteristics differ significantly from the five workloads used for the default Balanced power plan PPM tuning, you can experiment by altering one or more PPM parameters to find the best fit for your environment.
Из-за количества и сложности параметров это может быть сложной задачей, но если вы ищете лучший компромисс между энергопотреблением и рабочей нагрузкой, эффективность в конкретной среде, возможно, стоит потратить усилия. Due to the number and complexity of parameters, this may be a challenging task, but if you are looking for the best tradeoff between energy consumption and workload efficacy for your particular environment, it may be worth the effort.
Полный набор параметров, настроенных на PPM, можно найти в окне » Настройка управления питанием процессора». The complete set of tunable PPM parameters can be found in Processor power management tuning. Вот некоторые простейшие параметры питания, с которыми можно начинать с: Some of the simplest power parameters to start with could be:
Увеличение производительности процессора пороговое значение и увеличение производительности процессора — большие значения замедляют реагирование производительности на повышение активности. Processor Performance Increase Threshold and Processor Performance Increase Time – larger values slow the perf response to increased activity
Порог уменьшения производительности процессора — большие значения. Processor Performance Decrease Threshold – large values quicken the power response to idle periods
Время уменьшения производительности процессора — большие значения более постепенно снижают производительность во время периодов простоя. Processor Performance Decrease Time – larger values more gradually decrease perf during idle periods
Политика увеличения производительности процессора — «единственная» политика снижает производительность ответа на повышение и устойчивую активность; политика «Rocket» быстро реагирует на повышение активности Processor Performance Increase Policy – the «Single» policy slows the perf response to increased and sustained activity; the «Rocket» policy reacts quickly to increased activity
Политика уменьшения производительности процессора — «единственная» политика постепенно сокращает производительность до более длительных периодов бездействия; политика «Rocket» снижает энергопотребление при входе в период простоя Processor Performance Decrease Policy – the «Single» policy more gradually decreases perf over longer idle periods; the «Rocket» policy drops power very quickly when entering an idle period
Прежде чем приступать к экспериментам, необходимо сначала понять рабочие нагрузки, что поможет вам выбрать правильные параметры и сократить усилия по настройке. Before starting any experiments, you should first understand your workloads, which will help you make the right PPM parameter choices and reduce the tuning effort.
Общие сведения о высокой производительности и требованиях к питанию Understand high-level performance and power requirements
Если ваша рабочая нагрузка — «реальное время» (например, подвержена ошибкам или другим видимым конечным пользователям) или имеет очень тесное требование на реагирование (например, брокер фондовой биржи), и если энергопотребление не является основным критерием для вашей среды, то, вероятно, следует просто переключиться на высокопроизводительную схему управления питанием. If your workload is «real time» (e.g., susceptible to glitching or other visible end-user impacts) or has very tight responsiveness requirement (e.g., a stock brokerage), and if energy consumption is not a primary criteria for your environment, you should probably just switch to the High Performance power plan. В противном случае следует понимать требования к времени отклика рабочих нагрузок, а затем настраивать параметры для максимальной эффективности, которая по-прежнему соответствует этим требованиям. Otherwise, you should understand the response time requirements of your workloads, and then tune the PPM parameters for the best possible power efficiency that still meets those requirements.
Общие сведения о характеристиках базовой рабочей нагрузки Understand underlying workload characteristics
Вам следует ознакомиться с рабочими нагрузками и спроектировать наборы параметров эксперимента для настройки. You should know your workloads and design the experiment parameter sets for tuning. Например, если частоты ядер ЦП необходимо быстро увеличить (возможно, у вас есть Пакетная нагрузка с значительными периодами бездействия, но при появления новой транзакции требуется очень быстро реагировать на запросы, поэтому для политики увеличения производительности процессора может потребоваться задать значение «Rocket» (которое, как предполагается в названии), позволяет прокрутить частоту ядра ЦП к максимальному значению, а не по пошаговому выполнению в течение определенного периода времени. For example, if frequencies of the CPU cores need to be ramped very fast (perhaps you have a bursty workload with significant idle periods, but you need very quick responsiveness when a new transaction comes along), then the processor performance increase policy might need to be set to «rocket» (which, as the name implies, shoots the CPU core frequency to its maximum value rather than stepping it up over a period of time).
Если Рабочая нагрузка очень интенсивна, интервал проверки PPM можно уменьшить, чтобы начать работу с пошаговым выполнением с последовательной частотой загрузки. If your workload is very bursty, the PPM check interval can be reduced to make the CPU frequency start stepping up sooner after a burst arrives. Если в рабочей нагрузке не используется высокая степень параллелизма потоков, то можно включить приостановка ядра, чтобы принудительно выполнить рабочую нагрузку на меньшем числе ядер, что также может улучшить коэффициенты попаданий в кэш процессора. If your workload doesn’t have high thread concurrency, then core parking can be enabled to force the workload to execute on a smaller number of cores, which could also potentially improve processor cache hit ratios.
Если вы просто хотите увеличить частоту ЦП на средних уровнях загрузки (т. е. не в светлых уровнях рабочей нагрузки), пороговые значения увеличения и уменьшения производительности процессора можно изменить, чтобы не реагировать на определенные уровни активности. If you just want to increase CPU frequencies at medium utilization levels (i.e., not light workload levels), then processor performance increase/decrease thresholds can be adjusted to not react until certain levels of activity are observed.
Общие сведения о периодических поведении Understand periodic behaviors
Могут существовать разные требования к производительности для постоянную и ночь или выходных дней. Кроме того, могут существовать разные рабочие нагрузки, выполняемые в разное время. There may be different performance requirements for daytime and nighttime or over the weekends, or there may be different workloads that run at different times. В этом случае один набор параметров PPM может быть неоптимальным для всех периодов времени. In this case, one set of PPM parameters might not be optimal for all time periods. Поскольку можно разрабатывать несколько пользовательских схем управления питанием, вы можете даже настроить их для различных периодов времени и переключаться между схемами управления питанием с помощью сценариев или других средств динамической конфигурации системы. Since multiple custom power plans can be devised, it is possible to even tune for different time periods and switch between power plans through scripts or other means of dynamic system configuration.
Опять же, это увеличивает сложность процесса оптимизации, поэтому это вопрос о том, какой объем данных будет получен из этого типа настройки, который, скорее всего, придется повторять при значительных обновлениях оборудования или рабочей нагрузке. Again, this adds to the complexity of the optimization process, so it is a question of how much value will be gained from this type of tuning, which will likely need to be repeated when there are significant hardware upgrades or workload changes.
Именно поэтому Windows предоставляет сбалансированную схему управления питанием в первую очередь, поскольку во многих случаях это не стоит тратить усилий на настройку конкретной рабочей нагрузки на определенном сервере. This is why Windows provides a Balanced power plan in the first place, because in many cases it is probably not worth the effort of hand-tuning for a specific workload on a specific server.
Краткое руководство по управлению питанием процессора
Как центральный процессор может сокращать собственное энергопотребление? Основы этого процесса — в статье.
Центральный процессор (CPU) спроектирован на бесконечно долгую работу при определенной нагрузке. Практически никто не проводит вычисления круглые сутки, поэтому большую часть времени он не работает на расчетном максимуме. Тогда какой смысл держать его включенным на полную мощность? Здесь стоит задуматься об управлении питанием процессора. Эта тема включает в себя оперативную память, графические ускорители и так далее, но я собираюсь рассказать только про CPU.
Если вы знаете про C-состояния (C-states), P-состояния (P-states) и то, как процессор переходит между ними, то, возможно, в этой статье вы не увидите ничего нового. Если это не так, продолжайте читать.
Я планировал добавить реальные примеры из ОС Linux, но статья становилась все больше, так что я решил приберечь это для следующей статьи.
Основные источники информации, использованные в этом тексте:
Особенности CPU
Согласно официальной странице продукта, мой процессор поддерживает следующие технологии:
Теперь выясним, что значит каждое из этих определений.
Как снизить энергопотребление процессора во время его работы?
На процессорах для массового использования (мы не берем в расчет вещи, которые возможны при их проектировании) для снижения потребляемой энергии можно реализовать один из сценариев:
Второй вариант требует чуть больше объяснений. Энергопотребление интегральной схемы, которой является процессор, линейно пропорционально тактовой частоте и квадратично напряжению.
Примечание для тех, кто разбирается в цифровой электронике: Pcpu = Pdynamic + Pshort circuit + Pleak. При работающем процессоре Pdynamic является наиболее важной составляющей, именно эта часть зависит линейно от частоты и квадратично от напряжения. Pshort circuit пропорционально частоте, а Pleak — напряжению.
Более того, напряжение и тактовая частота связаны линейной зависимостью.
Высокая производительность требует повышенной тактовой частоты и увеличения напряжения, что еще больше влияет на энергопотребление.
Каков предел энергопотребления процессора?
Это во многом зависит от процессора, но для процессора E3-1245 v5 @ 3.50 ГГц расчетная тепловая мощность (Thermal Design Power, TDP) составляет 80 ватт. Это среднее значение, которое процессор может выдерживать бесконечно долго (Power Limit, PL1 на изображении ниже). Системы охлаждения должны быть рассчитаны на это значение, чтобы быть надежными. Фактическое энергопотребление процессора может быть выше в течение короткого промежутка времени (состояния PL2, PL3, PL4 на изображении ниже). TDP измеряется при нагрузке высокой вычислительной сложности (худший случай), когда все ядра работают на базовой частоте (3.5 ГГц).
Как видно на изображении выше, процессор в состоянии PL2 потребляет больше энергии, чем заявлено в TDP. Процессор может находиться в этом состоянии до 100 секунд, а это достаточно долго.
Состояния питания (C-states) vs состояния производительности (P-states)
Состояния питания (C-states) vs состояния производительности (P-states)
Вот два способа снизить энергопотребление процессора:
P-состояния описывают второй случай. Подсистемы процессора работают, но не требуют максимальной производительности, поэтому напряжение и/или тактовая частота для этой подсистемы может быть снижена. Таким образом, P-состояния, P[X], обозначают, что некоторая подсистема (например, ядро), работает на заданной паре (частота, напряжение).
Так как большинство современных процессоров состоит из нескольких ядер, то С-состояния разделены на С-состояния ядра (Core C-states, CC-states) и на С-состояния процессора (Package C-states, PC-states). Причина появления PC-состояний очень проста. Существуют компоненты с общим доступом (например, общий кэш), которые могут быть отключены только после отключения всех ядер, имеющих доступ к этому компоненту. Однако мы в роли пользователя или программиста не можем взаимодействовать с состояниями пакета напрямую, но можем управлять состояниями отдельных ядер. Таким образом, управляя CC-состояниями, мы косвенно управляем и PC-состояниями.
Состояния нумеруются от нуля по возрастанию, то есть C0, C1… и P0, P1… Большее число обозначает большее энергосбережение. C0 означает, что все компоненты включены. P0 означает максимальную производительность, то есть максимальные тактовую частоту, напряжение и энергопотребление.
С-состояния
Вот базовые С-состояния (определенные в стандарте ACPI).
Примечание: Из-за технологии Intel® Hyper-Threading существуют также С-состояния потоков. Хотя отдельный поток может работать с С-состояниями, изменения в энергопотреблении происходят, только когда ядро входит в нужное состояние. В данной статье тема C-состояний на потоках рассматриваться не будет.
Вот описание состояний из даташита:
Примечание: LLC обозначает Last Level Cache, кэш последнего уровня и обозначает общий L3 кэш процессора.
Визуальное представление состояний:
Источник: Software Impact to Platform Energy-Efficiency White Paper
Последовательность C-состояний простыми словами:
Однако если ядро работает (C0), то единственное состояние, в котором может находиться процессор, — C0. С другой стороны, если ядро полностью выключено (C8), процессор может находиться в C0, если другое ядро работает.
Примечание: Intel Software Developer’s Manual упоминает про суб-C-состояния (sub C-state). Каждое С-состояние состоит из нескольких суб-С-состояний. После изучения исходного кода модуля ядра intel_idle я понял, что состояния C1 и C1E являются состоянием С1 с подтипом 0 и 1 соответственно.
Число подтипов для каждого из восьми С-состояний (0..7) определяется с помощью инструкции CPUID. Для моего процессора утилита cpuid выводит следующую информацию:
Замечание из инструкции Intel: «Состояния C0..C7 для расширения MWAIT — это специфичные для процессора C-состояния, а не ACPI C-состояния». Поэтому не путайте эти состояния с ACPI C-состояниями, они явно связаны и между ними есть соответствие, но это не одно и то же.
Я создал гистограмму, представленную ниже, из исходного кода драйвера intel_idle для моего процессора (модель 0x5e). Подписи горизонтальной оси:
Имя C-состояния: специфичное для процессора состояние: специфичное суб-состояние.
Вертикальная ось обозначает задержку выхода и целевые резидентные значения из исходного кода. Задержка выхода используется для оценки влияния данного состояния в реальном времени (то есть сколько времени потребуется для возвращения в С0 из этого состояния). Целевое резидентное значение обозначает минимальное время, которое ядро должно находиться в данном состоянии, чтобы оправдать энергетические затраты на переход в это состояние и обратно. Обратите внимание на логарифмический масштаб вертикальной оси. Задержки и минимальное время нахождения в состоянии увеличивается экспоненциально с увеличением номера состояния.
Константы задержок выхода и целевых резидентных значении C-состояний в исходном коде intel_idle
Примечание: Хотя состояния С9 и С10 включены в таблицу, они имеют 0 суб-состояний и поэтому не используются в моем процессоре. Остальные процессоры из семейства могут поддерживать эти состояния.
Состояния питания ACPI
Прежде чем говорить про P-состояния, стоит упомянуть про состояния питания ACPI. Это то, что мы, пользователи, знаем, когда используем компьютер. Так называемые глобальные системные состояния (G[Х]) перечислены в таблице ниже.
Источник: ACPI Specification v6.2
Также существует специальное глобальное состояние G1/S4, Non-Volatile Sleep, когда состояние системы сохраняется на энергонезависимое хранилище (например, диск) и затем производится выключение. Это позволяет достичь минимального энергопотребления, как в состоянии Soft Off, но возвращение в состояние G0 возможно без перезагрузки. Оно более известно как гибернация.
Существует несколько состояний сна (Sx). Всего таких состояний шесть, включая S0 — отсутствие сна. Состояния S1-S4 используются в G1, а S5, Soft Off, используется в G2. Краткий обзор:
Вот поддерживаемые состояния ACPI.
Комбинации состояний ACPI G/S и С-состояний процессора
Приятно видеть все комбинации в таблице:
В состоянии G0/S0/C8 системы процессора запущены, но все ядра отключены.
В G1 (S3 или S4) некорректно говорить про С-состояния (это касается как CC-состояний, так и PC-состояний), так как процессор полностью обесточен.
Для G3 не существует S-состояний. Система не спит, она физически отключена и не может проснуться. Ей необходимо сначала получить питание.
Как программно запросить переход в энергосберегающее С-состояние?
Современный (но не единственный) способ запросить переход в энергосберегающее состояние — это использовать инструкцию MWAIT или инструкцию HLT. Это инструкции привилегированного уровня, и они не могут быть выполнены пользовательскими программами.
Инструкция MWAIT (Monitor Wait) заставляет процессор перейти в оптимизированное состояние (C-состояние) до тех пор, пока по указанному (с помощью другой инструкции, MONITOR) адресу не будет произведена запись. Для управления питанием MWAIT работает с регистром EAX. Биты 4-7 используются для указания целевого С-состояния, а биты 0-3 указывают суб-состояние.
Примечание: Я думаю, что на данный момент только AMD обладает инструкциями MONITORX/MWAITX, которые, помимо мониторинга записи по адресу, работают с таймером. Это еще называется Timed MWAIT.
Инструкция HLT (halt) останавливает выполнение, и ядро переходит в состояние HALT до тех пор, пока не произойдет прерывание. Это означает, что ядро переходит в состояние C1 или C1E.
Что вынуждает ядро входить в определенное С-состояние?
Как отмечалось ранее, переходы между глубокими С-состояниями имеют высокие задержки и высокие энергетические затраты. Таким образом, такие переходы должны выполняться с осторожностью, особенно на устройствах, работающих от аккумуляторов.
Возможно ли отключить С-состояния (всегда использовать С0)?
Это возможно, но не рекомендуется. В даташите (секция 4.2.2, страница 64) есть примечание: «Долгосрочная надежность не гарантируется, если все энергосберегающие состояния простоя не включены». Поэтому вам не стоит отключать С-состояния.
Как прерывания влияют на процессор\ядро в состоянии сна?
Когда происходит прерывание, соответствующее ядро пробуждается и переходит в состояние С0. Однако, например Intel® Xeon® E3-1200 v5, поддерживает технологию Power Aware Interrupt Routing (PAIR), у которой есть два достоинства:
P-состояния
P-состояния подразумевают, что ядро в состоянии С0, потому что ему требуется питание, чтобы выполнять инструкции. P-состояния позволяют изменять напряжение и частоту ядра (другими словами рабочий режим), чтобы снизить энергопотребление. Существует набор P-состояний, каждое из которых соответствует разных рабочим режимам (пары напряжение-частота). Наиболее высокий рабочий режим (P0) предоставляет максимальную производительность.
Процессор Intel® Xeon® E3–1200 v5 позволяет контролировать P-состояния из операционной системы (Intel® SpeedStep Technology) или оставить это оборудованию (Intel® Speed Shift Technology). Вся информация ниже специфична для семейства Intel® Xeon® E3-1200 v5, но я полагаю, это в той или иной степени актуально и для других современных процессоров.
P-состояния, управляемые операционной системой
В этом случае операционная система знает о P-состояниях и конкретном состоянии, запрошенным ОС. Проще говоря, операционная система выбирает рабочую частоту, а напряжение подбирается процессором в зависимости от частоты и других факторов. После того, как P-состояние запрошено записью в моделезависимый регистр (подразумевается запись 16 бит в регистр IA32_PERF_CTL), напряжение изменяется до автоматически вычисленного значения и тактовый генератор переключается на заданную частоту. Все ядра имеют одно общее P-состояние, поэтому невозможно установить P-состояние эксклюзивно для одного ядра. Текущее P-состояние (рабочий режим) можно узнать, прочитав информацию из другого моделезависимого регистра — IA32_PERF_STATUS.
Смена P-состояния мгновенна, поэтому в секунду можно выполнять множество переходов. Это отличает от переходов C, которые выполняются дольше и требуют энергетических затрат.
P-состояния, управляемые оборудованием
В этом случае ОС знает об аппаратной поддержке P-состояний и отправляет запросы с указанием нагрузки. В запросах не указывается конкретное P-состояние или частота. На основе информации от ОС, а также других факторов и ограничений оборудование выбирает подходящее P-состояние.
Я хочу рассказать об этом подробнее в следующей статье, но сейчас я поделюсь с вами своими мыслями. Мой домашний компьютер работает в этом режиме, я узнал это, проверив IA32_PM_ENABLE. Максимальный (но не гарантированный) уровень производительности — 39, минимальный — 1. Можно предположить, что существует 39 P-состояний. На данный момент уровень 39 установлен ОС как минимальный и как максимальный, потому что я отключил динамическое изменение частоты процессора в ядре.
Заметки про Intel® Turbo Boost
Поскольку TDP (расчетная тепловая мощность) — это максимальная мощность, которую процессор может выдержать, то процессор может повышать свою частоту выше базовой, при условии что энергопотребление не превысит TDP. Технология Turbo Boost может временно повышать энергопотребление до границы PL2 (Power Limit 2) на короткий промежуток времени. Поведение Turbo Boost может быть изменено через подсказки оборудованию.
Применима ли эта информация о C-состояниях и P-состояниях к мобильным и встраиваемым процессорам?
Для примера, недавний MacBook Air с процессором i5-5350U в основном поддерживает возможности, описанные выше (но я не уверен про P-состояния, контролируемые оборудованием). Я также смотрел документацию ARM Cortex-A, и, хотя там применяются другие термины, механизмы управления питанием выглядят похоже.
Как это все работает, например, на Linux?
На этот вопрос я отвечу в другой статье.
Как я могу узнать состояние процессора?
Существует не так много приложений, которые могут выводить эту информацию. Но вы можете использовать, например, CoreFreq.
Вот какую информацию можно получить (это не весь вывод).
Вот информация о ядре, включая информацию о драйвере idle.
Мониторинг счетчиков С-состояний (для ядра):