ЦП не снижает частоту при высоких температурах и перегревается.

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

У меня есть Thinkpad T430 с процессором i7-3520M. Он работает на частоте 2,90 ГГц, но может разгоняться до 3,5 ГГц.

Ранее я использовал Windows 10. Это старая модель ноутбука, и температура процессора может достигать довольно высоких уровней, но на Windows он никогда не перегревался до выключения. Вместо этого он переставал разгоняться и снижал тактовую частоту, чтобы компенсировать высокий нагрев, если я правильно помню. Когда ноутбук подключен к док-станции, из-за менее идеальной системы охлаждения он нагревается быстрее, но на Windows 10 всё равно не перегревался.

Когда я использую Kubuntu 24.04 (ядро 6.8.0-51), я заметил, что температура процессора может достигать очень высоких значений около 95°C при высокой нагрузке на процессор. Тактовая частота также, похоже, постоянно разгоняется до 3,5 ГГц, несмотря на высокие температуры. При высоких температурах я заметил в top, что есть некоторые процессы под названием “idle_inject”, которые имеют высокую загрузку процессора. После поиска в Google стало ясно, что ядро использует эти процессы для внедрения ожиданий бездействия, чтобы заставить процессор перейти в режим ожидания для охлаждения, если я правильно понимаю. Однако, похоже, это не помогает, и тактовая частота процессора остаётся на 3,5 ГГц.

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

Примечание: Я понимаю, что мог бы сделать аппаратные решения, такие как очистка/замена вентилятора, замена термопасты и т.д. Но факт в том, что процессор разгоняется, когда не должен, и я считаю, что это контролируется программным обеспечением, и этого не происходило на Windows. Так что должен быть способ это исправить.

На первом этапе следует определить программу/процесс, который вызывает высокую загрузку процессора. Откройте терминал и выполните top. Это покажет все работающие процессы, включая их загрузку процессора и использование оперативной памяти. Если список не отсортирован по загрузке процессора, нажмите клавишу t, чтобы отсортировать соответственно. Если есть какой-либо процесс, который можно безопасно завершить и который потребляет много времени процессора – сделайте это и проверьте улучшения.

На втором этапе можно вручную проверить настройки ядра Linux для процессора. В /sys псевдофайловой системе есть директория для каждого ядра процессора, которая содержит соответствующую информацию. Перейдите в директорию для CPU0 (она должна быть идентичной для всех процессоров) cd /sys/devices/system/cpu/cpu0/cpufreq/ и проверьте файл scaling_governor: cat scaling_governor. Вывод должен быть либо “ondemand”, либо “intel_pstate”. Поддерживаемые управляющие программы для вашего процессора указаны в файле scaling_available_governors. Вы можете вручную установить управляющую программу для каждого ядра процессора. Следующая команда устанавливает управляющую программу “powersave” для первого ядра процессора (при условии, что она поддерживаются для данного процессора):

echo powersave | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

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

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

В директории /sys/devices/system/cpu/cpu0/cpufreq/ также будет, в зависимости от процессора и его возраста, либо директория под названием stats, либо несколько директорий с именами stateX, где X — это число, самое низкое число — 0. Число представляет состояние бездействия процессора, поэтому есть директория для каждого состояния бездействия.
Если директория stats существует, перейдите в нее и посмотрите файл time_in_state: cat time_in_state. Файл содержит информацию о том, сколько миллисекунд ядро процессора работало на какой частоте.
Если существуют директории stateX, перейдите в директорию cpu0 и проверьте файл time: cat time. Файл содержит информацию для данного ядра процессора о том, сколько миллисекунд ядро провело в этом состоянии бездействия. Состояние 0 — это когда ядро полностью используется, более высокие числа представляют состояния бездействия/спящие состояния. Чем выше число, тем выше/глубже состояние сна. Сравните вывод time в директории cpu0 с значениями в более высоких состояниях бездействия.

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

Проблема перегрева процессора при высоких температурах в Kubuntu

Ваши жалобы на перегрев процессора при использовании Kubuntu 24.04 вполне обоснованы, и их следует рассмотреть с точки зрения программного обеспечения и управления частотой процессора. Процессор Intel i7-3520M имеет возможность увеличивать тактовую частоту до 3.5 ГГц благодаря технологии Turbo Boost, однако, при высоких температурах эта функция должна активироваться с осторожностью.

Причины перегрева

  1. Отсутствие динамического уменьшения частоты. В Windows 10 система управления частотой процессора, вероятно, функционировала должным образом, чтобы предотвращать перегрев, понижая частоту в ответ на высокие температуры. В случае Kubuntu, возможно, настройка управления частотой не оптимизирована, что приводит к тому, что процессор продолжает работать на уровне 3.5 ГГц, даже когда температуры достигают опасных значений.

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

  3. Проблемные процессы. Использование процессов, таких как idle_inject, может не объяснять причины перегрева. Если система не уходит в более глубокие состояния ожидания, это может указывать на необходимость анализа загруженности системы и смещения на ненужные процессы.

Шаги по устранению проблемы

  1. Мониторинг нагрузки процессора. Используйте команду top в терминале для выявления процессов, которые загружают процессор. Это позволит вам определить, какие задания наиболее ресурсоемкие, и, возможно, исключить их или оптимизировать.

  2. Настройки ядра Linux. Взгляните на настройки управления частотой процессора, находясь в директории /sys/devices/system/cpu/cpu0/cpufreq/. Проверьте файл scaling_governor. Если он установлен на performance, попробуйте изменить его на ondemand или powersave, как показано ниже:

    echo ondemand | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

    Это позволит системным процессам динамически управлять частотой процессора в зависимости от нагрузки.

  3. Проверка статистики частоты. Изучите файл time_in_state или директории stateX для анализа времени работы процессора на различных частотах и состояний ожидания. Это поможет понять, как часто ваша система использует более высокие частоты и требует ли это изменений.

Заключение

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

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

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

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