Перейти к содержимому

Как отключить c state asus

  • автор:

Устраняем проблемы электропитания, или не спешите сдавать железку по гарантии

Что может быть не так с настройками питания компонентов компьютера?

Давайте сначала взглянем вот на эту диаграмму:

реклама

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

За последние 8 лет я сталкивался с таким несколько раз на настольных компьютерах. Обнаруженные проблемы можно разложить по следующим категориям:

  1. Внезапное отключение системы из-за высокого уровня c-states процессора
  2. Подвисания системы из-за высокого уровня с-states
  3. Внезапный отвал NVMe диска из-за режима энергопотребления по умолчанию, даже если диск был под нагрузкой
  4. Кратковременное снижение производительности NVMe дисков из-за режима энергопотребления по умолчанию, даже если диск был под нагрузкой.

Проблемы у меня были с разными компонентами разных поколений и производителей: Intel i7-4770k, Ryzen-3900x, NVMe Kingston A2000. Судя по информации от других пользователей, проблемы бывают и со многими другими устройствами.

реклама

Первый раз я столкнулся с этим, когда 7 лет назад новенький компьютер с 4770k на борту начал подтормаживать без какой-либо серьезной нагрузки. Когда внезапно компьютер вырубился, я перебрал и перепроверил все компоненты: от блока питания до материнки. Путем исключения выяснил, что проблема с процессором, и, сначала уже хотел сдавать его по гарантии, но потом выяснил, что он исправен. Под Windows было крайне сложно понять что же происходит. Помог запуск под Linux и изучение его журнала, который оказался очень подробным. Система не вырубалась, но в списке ошибок было что почитать. Гуглю эти ошибки — и я узнаю, что ещё много людей мучаются с такой проблемой. Так я узнал про c-states и, что неким образом при его высоких значениях система сначала пытается снизить энергопотребление, а этого не хватает мощному десктопному процессору даже для простоя. Аналогичная ситуация происходила с Ryzen 3900х. Тоже хотел сдавать по гарантии, думал что два раза в одну воронку снаряд не попадает. Да и за 6 лет индустрия должна была (нет) уже с этим разобраться. Усложнялось все ещё тем, что если в случае с 4770k падения и подвисания происходили достаточно часто — раз в несколько дней и можно было отследить, то 3900х падал раз в месяц, да еще и был в офисе. Но, попробовав изменить c-states, все решилось и работает уже полтора года как часы.

Похожая ситуация была с ssd дисками — их режимы ожидания что под Windows что под Linux похоже целиком пришли из ноутбучного мира, что не совсем дружит с десктопом.

Что такое с-states, какие могут быть проблемы?

реклама

С-states — это режимы энергосбережения процессора. Впервые их ввели еще на 486м Intel’е.
В большинстве систем есть 7 уровней C-states (плюс еще некоторые подуровни для определенных процессоров). В некоторых системах есть и 10 уровней. В других есть пропущенные уровни. Если активирован уровень C0, то все компоненты процессора потребляют энергию. Процессор в полностью рабочем состоянии и никаких проблем не возникает. Уровни C1-C2 соответствуют все еще включенному процессору с рабочим кэшом, но с остановкой либо замедлением одного или нескольких внутренних тактовых генераторов. Начиная с уровня C3 начинается спящий режим, кэш L1 инструкций пустой. Уровни С4-С6 определяют глубину этого спящего режима. Система, отслеживая свою активность, вычисляет на какой уровень c-state надо перейти в данный момент. Если активность снижается, система повышает уровень, снижая энергопотребление.

У операционной системы есть глобальный параметр max_c-state, определяющий максимальное значение c-state в которое может уходить система. По умолчанию он как раз, наследуя ноутбучные правила, близок или равняется C6.

Проблемы могут возникнуть с повышением уровня C-states. Выходя с C0 на С1/C2 может произойти отключение или подвисания там, где этого не ждешь. Объясняется это тем, что современные алгоритмы управления C-states писались практически одинаковыми как для ноутбуков так и для мощных десктопных процессоров. Казалось бы, если установлен максимальный уровень на C3 или больше — то уже без разницы, какой будет конкретно уровень — ведь проблемы начинаются, когда система еще не в спящем режиме, а раньше. Но это не всегда так, у Windows 7 были проблемы как раз когда с C3 повышали максимальный допустимый уровень до C6. Видимо в системе были разные алгоритмы работы с энергопотреблением для разных максимальных уровней энергопотребления, а не только для текущего уровня.

Устраняем проблемы c С-states на Windows

Чтобы устранить проблему с c-states надо понизить его максимальный допустимый уровень до такого, когда система начнет работать стабильно. Если вы (как я) не выключаете компьютер месяцами, то можете сразу выставить C0.

Для этого надо под администратором воспользоваться утилитой командной строки POWERCFG :

  1. Узнаем доступные схемы питания c помощью powercfg /list:
  2. Выбираем схему Высокая производительность и копируем ее идентификатор. В моем случае идентификатор: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
  3. Выполняем команду powercfg /SETACVALUEINDEX 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c SUB_PROCESSOR IDLESTATEMAX 0:Где последняя цифра — максимальный допустимый уровень с-states, который вы хотите задать. В моем случае это 0. Эта команда меняет схему питания «Высокая производительность», задавая новый максимальный уровень для неё.
  4. Активируем схему питания: powercfg /SETACTIVE 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

Устраняем проблемы с C-states на Linux:

  1. открываем под sudo файл /etc/default/grub
  2. ищем секцию GRUB_CMDLINE_LINUX_DEFAULT
  3. прописываем intel_idle.max_cstate=0, где цифра — максимальный допустимый уровень c-state
  4. не смущаемся, что параметр называется intel_idle, для AMD он тоже работает
реклама

Примечание: некоторые BIOS позволяют установить max c-state в своем меню, но не факт, что система не переопределит это значение.

Проблемы с энергосбережением nvme дисков

По аналогии с процессорами NVMe диски имеют несколько уровней энергосбережения.
Данная технология называется Autonomous Power State Transition (APST) и призвана в первую очередь увеличить время работы батареи ноутбука.

Контроллер собирает информацию об активности системы и частоте запросов к диску и выставляет оптимальный с его точки зрения режим энергопотребления. Работа этого алгоритма регулируется выбранной схемой энергопотребления, которая в первую очередь характеризуется величиной таймаута. Если за время более чем таймаут, указанный в схеме к накопителю не было ни одного запроса, то драйвер повышает глубину уровня ожидания NVMe, выходя из уровня S0. На более глубоких уровнях увеличивается максимальное время отклика диска. В настройках этой схемы, в целом беспроблемно работающей на ноутбуках может быть заложено состояние, зайдя в которое десктопная система вызовет сбой и диск отмонтируется из файловой системы. Более того, если ОС загружена с этого диска, то с большой вероятностью она умрёт, а испуганный пользователь захочет сдать диск или все остальные девайсы по гарантии. У меня отвал диска с системой был только под Линуксом, но сам этот диск отваливался и из под Windows (Windows была на SATA). Основная проблема была конечно не отвал, а подвисания.
Ниже приведены стандартные настройки таймаутов NVMe для разных схем питания под Windows:

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

Меняем схему энергосбережения NVMe под Windows 10

Есть два способа исправить проблему с схемой энергосбережения NVMe — через команду powercfg или через реестр + настройки питания. Мы рассмотрим второй способ, так как он более нагляден
Через реестр:

  1. Открываем реестр
  2. Проходим в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\0012ee47-9041-4b5d-9b77-535fba8b1442\d639518a-e56d-4345-8af2-b9f32fb26109:
  3. Меняем значение в поле Attributes c 1 на 0:
  4. Теперь у нас доступна опция регулировки таймаута в настройках электропитания
  5. Win+X -> Управление электропитанием -> Дополнительные параметры питания -> Настройка схемы электропитания (для вашей текущей схемы) -> Изменить дополнительные параметры питания
  6. В открывшемся окне меняем таймаут на больший, если мы хотим, чтобы накопитель был активен почти всегда, и его не вырубало (я поставил 1000 когда были проблемы и они исчезли):

Меняем схему энергосбережения на Linux:

  1. Открываем /etc/default/grub под sudo
  2. под секцией GRUB_CMDLINE_LINUX_DEFAULT прописываем nvme_core.default_ps_max_latency_us=0

Как альтернатива — можно полностью отключить APST, но мне не удалось найти параметр.

Как отключить c state asus

Reddit and its partners use cookies and similar technologies to provide you with a better experience.

By accepting all cookies, you agree to our use of cookies to deliver and maintain our services and site, improve the quality of Reddit, personalize Reddit content and advertising, and measure the effectiveness of advertising.

By rejecting non-essential cookies, Reddit may still use certain cookies to ensure the proper functionality of our platform.

For more information, please see our Cookie Notice and our Privacy Policy .

[AIOT] How do you change CPU State Limit?

Scan QR code to open this page with your smart phone.

[AIOT] How do you change CPU State Limit?

1. Access BIOS setting at system boot

2. Access "Advanced menu"

3. Access "CPU Configuration"

4. Access "CPU – Power Management Control"

6. Switch to the C state setting you want to use

7. Switch the Menu option to "Exit Menu"

8. Tap "Save Changes and Reset" then reboot the system

Was this information helpful?

What we can do to improve the article?

  • Above information might be partly or entirely quoted from exterior websites or sources. please refer to the information based on the source that we noted. Please directly contact or inquire the sources if there is any further question and note that ASUS is neither relevant nor responsible for its content/service
  • This information may not suitable for all the products from the same category/series. Some of the screen shots and operations could be different from the software versions.
  • ASUS provides the above information for reference only. If you have any questions about the content, please contact the above product vendor directly. Please note that ASUS is not responsible for the content or service provided by the above product vendor.
  • Brand and product names mentioned are trademarks of their respective companies.
  • Support
  • Laptops
  • Phone
  • Motherboards
  • Tower PCs
  • Monitors
  • Networking
  • Show All Products

    Item_other —>
  • Tablets
  • AIoT & Industrial Solutions
  • Gaming handhelds
  • Power Supply Unit
  • Gaming Case
  • Cooling
  • Graphics Cards
  • ROG — Republic Of Gamers
  • Projectors
  • Single Board Computer
  • VivoWatch
  • Mini PCs
  • Business Networking
  • Sound Cards
  • Vivobaby
  • Stick PCs
  • Headphones & Headsets
  • Optical Drives & Storage
  • All-in-One PCs
  • Gaming Networking
  • Commercial

[SOLVED] TUF B550M Plus — Global C States?

In Asus’ gaming B550 motherboards. does anyone know where Global C-states is enable/disabled?

Lutfij
Lutfij
Titan
  • May 6, 2021
  • Solution
  • #2
drea.drechsler
Champion
  • May 6, 2021
  • #3

That also shows CPPC settings right below it. but my BIOS only has the Global C States setting. I learned, though, that the "search" works (F9 key). So search for it and the settings appear for me to change. Just no clue what area of BIOS they’re in!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

From $34/Day — Car Rental HPN With Zero Terminal Shuttle