Вопрос или проблема
Если я выполню grep . /sys/bus/cpu/devices/cpu*/cpufreq/scaling_cur_freq
(что, как я думаю, измеряет ядро), вывод будет приблизительно следующим:
/sys/bus/cpu/devices/cpu0/cpufreq/scaling_cur_freq:399235
/sys/bus/cpu/devices/cpu1/cpufreq/scaling_cur_freq:399239
/sys/bus/cpu/devices/cpu2/cpufreq/scaling_cur_freq:399204
/sys/bus/cpu/devices/cpu3/cpufreq/scaling_cur_freq:399256
Это ниже ожидаемого, так как grep . /sys/bus/cpu/devices/cpu*/cpufreq/scaling_min_freq
показывает:
/sys/bus/cpu/devices/cpu0/cpufreq/scaling_min_freq:1400000
/sys/bus/cpu/devices/cpu1/cpufreq/scaling_min_freq:1400000
/sys/bus/cpu/devices/cpu2/cpufreq/scaling_min_freq:1400000
/sys/bus/cpu/devices/cpu3/cpufreq/scaling_min_freq:1400000
Но иногда один или два правильно работающих процессора (для управляющего алгоритма) прорываются. Я называю их “всплесками”.
sudo grep . /sys/bus/cpu/devices/cpu*/cpufreq/cpuinfo_cur_freq
(что, как я думаю, сообщает оборудование), дает другой вывод (зависит от управляющего алгоритма, который в этом случае performance
):
/sys/bus/cpu/devices/cpu0/cpufreq/cpuinfo_cur_freq:2600000
/sys/bus/cpu/devices/cpu1/cpufreq/cpuinfo_cur_freq:2600000
/sys/bus/cpu/devices/cpu2/cpufreq/cpuinfo_cur_freq:2600000
/sys/bus/cpu/devices/cpu3/cpufreq/cpuinfo_cur_freq:2600000
Даже если я установлю управляющий алгоритм на производительность с помощью cpupower frequency-set --governor performance
, все равно очень медленно (но всплески имеют ожидаемую [максимальную] скорость).
/proc/cpuinfo
:
процессор : 0
vendor_id : AuthenticAMD
cpu family : 23
model : 24
model name : AMD Ryzen 3 3250U with Radeon Graphics
stepping : 1
microcode : 0x810810d
cpu MHz : 399.281
размер кеша : 512 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
флаги : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor smca sev sev_es
ошибки : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso div0
bogomips : 5190.17
TLB size : 2560 4K страница
clflush size : 64
cache_alignment : 64
размеры адресов : 43 бита физически, 48 бит виртуально
энергосбережение: ts ttp tm hwpstate eff_freq_ro [13] [14]
процессор : 1
vendor_id : AuthenticAMD
cpu family : 23
model : 24
model name : AMD Ryzen 3 3250U with Radeon Graphics
stepping : 1
microcode : 0x810810d
cpu MHz : 399.258
размер кеша : 512 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
флаги : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor smca sev sev_es
ошибки : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso div0
bogomips : 5190.17
TLB size : 2560 4K страница
clflush size : 64
cache_alignment : 64
размеры адресов : 43 бита физически, 48 бит виртуально
энергосбережение: ts ttp tm hwpstate eff_freq_ro [13] [14]
процессор : 2
vendor_id : AuthenticAMD
cpu family : 23
model : 24
model name : AMD Ryzen 3 3250U with Radeon Graphics
stepping : 1
microcode : 0x810810d
cpu MHz : 399.218
размер кеша : 512 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
флаги : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor smca sev sev_es
ошибки : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso div0
bogomips : 5190.17
TLB size : 2560 4K страница
clflush size : 64
cache_alignment : 64
размеры адресов : 43 бита физически, 48 бит виртуально
энергосбережение: ts ttp tm hwpstate eff_freq_ro [13] [14]
процессор : 3
vendor_id : AuthenticAMD
cpu family : 23
model : 24
model name : AMD Ryzen 3 3250U with Radeon Graphics
stepping : 1
microcode : 0x810810d
cpu MHz : 399.155
размер кеша : 512 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
флаги : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor smca sev sev_es
ошибки : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso div0
bogomips : 5190.17
TLB size : 2560 4K страница
clflush size : 64
cache_alignment : 64
размеры адресов : 43 бита физически, 48 бит виртуально
энергосбережение: ts ttp tm hwpstate eff_freq_ro [13] [14]
Как видите, это также сообщает о низкой тактовой частоте.
kinfo
:
Операционная система: Kubuntu 24.04
Версия KDE Plasma: 5.27.12
Версия KDE Frameworks: 5.115.0
Версия Qt: 5.15.13
Версия ядра: 6.8.0-55-generic (64-бит)
Графическая платформа: X11
Процессоры: 4 x AMD Ryzen 3 3250U with Radeon Graphics
Память: 13.5 GiB RAM
Графический процессор: AMD Radeon Vega 3 Graphics
sensors
(lm-sensors):
amdgpu-pci-0400
Адаптер: PCI адаптер
vddgfx: N/A
vddnb: N/A
edge: +43.0 C
k10temp-pci-00c3
Адаптер: PCI адаптер
Tctl: +43.2 C
BAT0-acpi-0
Адаптер: ACPI интерфейс
in0: 12.84 V
nvme-pci-0100
Адаптер: PCI адаптер
Composite: +35.9 C (низкий = -5.2 C, высокий = +79.8 C)
(критический = +84.8 C)
ОШИБКА: Не удается получить значение подкритерия temp2_min: ошибка ввода-вывода
ОШИБКА: Не удается получить значение подкритерия temp2_max: ошибка ввода-вывода
Датчик 1: +39.9 C (низкий = +0.0 C, высокий = +0.0 C)
ОШИБКА: Не удается получить значение подкритерия temp3_min: ошибка ввода-вывода
ОШИБКА: Не удается получить значение подкритерия temp3_max: ошибка ввода-вывода
Датчик 2: +35.9 C (низкий = +0.0 C, высокий = +0.0 C)
ОШИБКА: Не удается получить значение подкритерия temp4_min: ошибка ввода-вывода
ОШИБКА: Не удается получить значение подкритерия temp4_max: ошибка ввода-вывода
Датчик 3: +29.9 C (низкий = +0.0 C, высокий = +0.0 C)
ОШИБКА: Не удается получить значение подкритерия temp5_min: ошибка ввода-вывода
ОШИБКА: Не удается получить значение подкритерия temp5_max: ошибка ввода-вывода
Датчик 4: +31.9 C (низкий = +0.0 C, высокий = +0.0 C)
ОШИБКА: Не удается получить значение подкритерия temp6_min: ошибка ввода-вывода
ОШИБКА: Не удается получить значение подкритерия temp6_max: ошибка ввода-вывода
Датчик 5: +32.9 C (низкий = +0.0 C, высокий = +0.0 C)
ОШИБКА: Не удается получить значение подкритерия temp7_min: ошибка ввода-вывода
ОШИБКА: Не удается получить значение подкритерия temp7_max: ошибка ввода-вывода
Датчик 6: +34.9 C (низкий = +0.0 C, высокий = +0.0 C)
acpitz-acpi-0
Адаптер: ACPI интерфейс
температура1: +43.0 C
/sys/class/dmi/id/ec_firmware_release
: 28.23
/sys/class/dmi/id/bios_version
: F.75
Модель: HP Laptop 14-fq0110wm
Веб-страницы также загружаются медленнее, чем раньше, так что scaling_cur_freq
вероятно не так уж неточно отображает практическую тактовую частоту.
Эта низкая скорость возникает только при подключенном зарядном устройстве.
Я знаю о хаках с ec_sys
, которые я могу потенциально использовать для имитации разрядки, но я не знаю обо всех возможных последствиях, и поэтому хочу использовать их как крайнее средство.
Как я могу это исправить?
Правка: я также пробовал sudo cpupower idle-set -d 0
(отключение idlestate 0). Также пробовал отключать idlestate 1 и 2.
.
Ответ или решение
Ваш вопрос о низкой частоте процессора при подключении зарядного устройства — это достаточно распространённая проблема, с которой могут сталкиваться пользователи ноутбуков. Давайте подробно рассмотрим потенциальные причины этой проблемы, основываясь на предоставленных данных и возможных решениях.
Теория
Проблема, которую вы описываете, связана с тем, что текущая частота процессора (scaling_cur_freq
) значительно ниже минимально допустимой (scaling_min_freq
) при подключённой зарядке. Это может быть вызвано рядом факторов, начиная от настроек системы управления питанием до аппаратных ограничений или неисправностей BIOS:
-
Профили управления питанием: Вероятно, в системе активен профиль управления питанием, который снижает производительность процессора при подключении к сети. Это может быть сделано для минимизации перегрева и энергопотребления.
-
BIOS и прошивка: В некоторых случаях обновления BIOS или изменения настроек в BIOS могут повлиять на частоту процессора. Версия прошивки и BIOS, которые вы указали, также могут играть значимую роль.
-
Настройки драйверов: Ваша система может использовать неправильные драйверы для управления питанием и частотой процессора. Это также может вызывать подобные проблемы.
-
Термическое регулирование (Throttling): Когда система достигает определённых температурных пределов, она автоматически снижает производительность для предотвращения перегрева.
Пример
Пользователи сообщали о подобных проблемах, когда их ноутбуки, подключённые к источнику питания, значимо снижали производительность в связи с активированными предустановленными профилями экономии энергии. Например, была ситуация, когда ноутбук при подключении к сети и батарее обрабатывал задачи с пониженной частотой, несмотря на установленный режим "производительности". Это решалось отключением режима "экономии энергии" и использованием максимального режима производительности в BIOS или при помощи утилит управления питанием Linux.
Применение
Вот несколько шагов, которые вы можете предпринять для решения данной проблемы:
-
Проверка и изменение профилей питания:
- Проверьте настройки управления питанием в вашей операционной системе. В KDE и других средах Linux можно переключить профиль питания на "Производительность", используя утилиты, такие как
TLP
илиcpupower
. - Команда для изменения режима:
sudo cpupower frequency-set --governor performance
- Настройте ваш профиль "Производительность" во всех утилитах, которые могут управлять энергопотреблением.
- Проверьте настройки управления питанием в вашей операционной системе. В KDE и других средах Linux можно переключить профиль питания на "Производительность", используя утилиты, такие как
-
Обновление BIOS и EC прошивки:
- Убедитесь, что у вас последняя версия BIOS и EC (Embedded Controller). Производители могут выпускать обновления, которые устраняют подобные проблемы.
- Пожалуйста, проверьте сайт производителя вашего устройства (например, HP) для получения последних обновлений.
-
Включение термического мониторинга:
- Убедитесь, что системы охлаждения работают правильно, и температура не является причиной ограничения. Вы можете использовать
lm-sensors
для мониторинга температур.
- Убедитесь, что системы охлаждения работают правильно, и температура не является причиной ограничения. Вы можете использовать
-
Рассмотрение "хаков" с ec_sys:
- Опасения относительно использования
ec_sys
для изменения статуса энергопотребления обоснованы, однако иногда это может быть единственным способом обойти ограничения при условии, что вы приняли меры предосторожности.
- Опасения относительно использования
-
Форсирование отключения низких уровней простоя:
- Используйте команду:
sudo cpupower idle-set -d 0 # Отключение idle state 0
- Используйте команду:
-
Проверка настроек драйверов и ядра:
- Убедитесь, что все драйвера актуальны и подходят для вашего оборудования, особенно те, что связаны с управлением энергопотреблением.
Если ни одно из указанных решений не помогает, стоит рассмотреть возможность обращения в техническую поддержку вашего производителя или задавать вопросы на тематических форумах, таких как Stack Overflow или Phoronix, где пользователи с аналогичным оборудованием могут поделиться своим опытом и решениями.