Разные термальные настройки для батареи и переменного тока.

Вопрос или проблема

Я использую thermald, чтобы предотвратить перегрев моего Surface Pro 7, используя драйвер intel powercap rapl (rapl_controller в thermald). Я также хотел бы использовать тот же драйвер rapl, чтобы снизить расход энергии при работе от батареи, но я не могу найти способ сделать это, кроме как копировать и вставлять в терминал каждый раз:

sudo systemctl stop thermald && sudo powercap-set intel-rapl -z 0 -c 0 -l 5000000 -s 12000000 && sudo powercap-set intel-rapl-mmio -z 0 -c 0 -l 5000000 -s 12000000

Есть ли способ заставить thermald изменить TargetState для rapl_controller на 5000000 при работе от батареи?

Вот мой текущий thermal-conf.xml для справки:

<ThermalConfiguration>
<Platform>
        <Name>Surface Pro Intel Thermal Workaround</Name>
        <ProductName>*</ProductName>
        <Preference>QUIET</Preference>
        <PPCC>
                <PowerLimitMaximum>16750</PowerLimitMaximum> <!-- милливатты -->
                <PowerLimitMinimum>4000</PowerLimitMinimum>
                <TimeWindowMinimum>12000</TimeWindowMinimum> <!-- миллисекунды -->
                <TimeWindowMaximum>12000</TimeWindowMaximum>
        </PPCC>
        <ThermalZones>
                <ThermalZone>
                        <Type>cpu</Type>
                        <TripPoints>
                                <TripPoint>
                                        <SensorType>x86_pkg_temp</SensorType>
                                        <Temperature>67000</Temperature> <!-- тысячные части ºc -->
                                        <type>пассивный</type>
                                        <ControlType>SEQUENTIAL</ControlType>
                                        <CoolingDevice>
                                                <index>1</index>
                                                <type>rapl_controller</type>
                                                <SamplingPeriod>1</SamplingPeriod>
                                                <TargetState>12750000</TargetState> <!-- microwatts -->
                                        </CoolingDevice>
                                </TripPoint>
                        </TripPoints>
                </ThermalZone>
        </ThermalZones>
</Platform>
</ThermalConfiguration>

Ответ или решение

Современные устройства, такие как Surface Pro 7, обеспечивают значительную производительность, но также требуют эффективного управления теплом и энергопотреблением, особенно при смене источника питания — от сети (AC) к батарее. Используя thermald с драйвером intel powercap rapl, вы можете оперативно регулировать параметры энергопотребления вашего устройства на основании его температуры и других факторов. В этой статье мы рассмотрим, как настраивать различные термальные параметры для работы от батареи и сети.

Управление термическими настройками в thermald

Структура вашего thermal-conf.xml

Представленный вами файл конфигурации thermal-conf.xml содержит нужные элементы для настройки управления теплом. Однако, чтобы добиться автоматизации регулировки TargetState для rapl_controller в зависимости от источника питания, необходимо внести некоторые изменения.

Внедрение условия для разных состояний питания

Для того чтобы thermald автоматически изменял состояние целевой мощности (TargetState) в зависимости от того, подключено ли устройство к сети или работает от батареи, вам нужно внести изменения в конфигурацию thermald. Можно использовать комбинацию триггеров и скриптов.

Предложенное решение

  1. Добавление триггеров (triggers) в конфигурацию thermald:
    Вы можете использовать секцию <Trigger> для мониторинга состояния аккумулятора. Например, добавьте следующий код в ваш thermal-conf.xml:

    <Triggers>
       <Trigger>
           <Type>battery</Type>
           <Action>
               <CoolingDevice>
                   <index>1</index>
                   <type>rapl_controller</type>
                   <TargetState>5000000</TargetState>
               </CoolingDevice>
           </Action>
       </Trigger>
       <Trigger>
           <Type>ac</Type>
           <Action>
               <CoolingDevice>
                   <index>1</index>
                   <type>rapl_controller</type>
                   <TargetState>12750000</TargetState>
               </CoolingDevice>
           </Action>
       </Trigger>
    </Triggers>
  2. Организация правильного уровня прав:
    Убедитесь, что thermald запущен с достаточными привилегиями, чтобы изменять настройки powercap. Обычно для этого используется sudo в командной строке.

  3. Проверка и тестирование:
    После внесения изменений перезапустите thermald:

    sudo systemctl restart thermald

    Затем протестируйте поведение устройства, переключая его между состоянием питания от сети и от батареи. Убедитесь, что target state изменяется корректно.

Заключение

Использование thermald для автоматической настройки целевого состояния RAPL контроллера в зависимости от источника питания — это эффективный способ снижения энергопотребления и предотвращения перегрева вашего Surface Pro 7. Важно помнить, что любые изменения в konfiguratsii должны быть тщательно протестированы, чтобы гарантировать надежность работы устройства как в режиме зарядки, так и в режиме автономной работы. Воспользуйтесь предложенными рекомендациями, и ваше устройство будет работать оптимально в любых условиях.

Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за более детальной поддержкой.

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

Капча загружается...