La fréquence du processeur est toujours au minimum, même si son utilisation est à 100%

15

Je ne sais pas quand ce problème a commencé à se produire, c'était peut-être depuis le moment où j'ai installé Ubuntu (16.04, frais). J'observais qu'Ubuntu était inhabituellement lent, l'environnement était instable et l'utilisation du processeur était élevée même lorsqu'il était inactif, au début, je pensais qu'un programme le ralentissait.

Après un certain temps, j'ai compris ce qui en était la cause, la fréquence du processeur est réglée sur 800 MHz, sans arrêt, quelles que soient les circonstances. La fréquence maximale est censée être 3100 MHz avec Turbo-boost et 2000 MHz généralement. J'ai délibérément réglé l'utilisation du processeur (sur les 4 threads sur 2 cœurs) à 100% en faisant en sorte que Blender rende certaines choses sur le processeur, il reste toujours à 800 MHz.

J'ai essayé de définir un profil de performances maximales, mais il reste faible. J'ai testé la température, elle semble être de 60 ° C tout le temps, quand 87 ° C est considéré comme élevé et 105 ° C critique. Je fonctionne tout le temps sur secteur, la batterie ne semble pas se recharger depuis un certain temps.

Voici ce que rapporte cpufreq-info:

 driver: intel_pstate
 CPUs which run at the same hardware frequency: 0
 CPUs which need to have their frequency coordinated by software: 0
 maximum transition latency: 0.97 ms.
 hardware limits: 800 MHz - 3.10 GHz
 available cpufreq governors: performance, powersave
 current policy: frequency should be within 2.00 GHz and 3.10 GHz.
                 The governor "performance" may decide which speed to use
                 within this range
 current CPU frequency is 800 MHz (asserted by call to hardware).

Il en va de même pour les 3 autres CPU.

Voici ce que lscpu rapporte:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 58
Model name:            Intel(R) Core(TM) i7-3537U CPU @ 2.00GHz
Stepping:              9
CPU MHz:               799.921
CPU max MHz:           3100,0000
CPU min MHz:           800,0000
BogoMIPS:              3990.99
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              4096K
NUMA node0 CPU(s):     0-3
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts

En mode d'économie d'énergie, il se comporte de manière identique. Si je déconnecte l'alimentation secteur et que je fonctionne sur batterie, la fréquence du processeur monte en flèche à 2800 MHz, il semble donc que ce soit un problème uniquement sur l'alimentation secteur (ce qui est tout à fait le contraire de ce qu'il est censé faire).

J'ai essayé de modifier les profils de processeur, j'ai essayé de désactiver la mise à l'échelle des fréquences ( Comment puis-je désactiver la mise à l'échelle des fréquences du processeur et définir les performances du système? ), J'ai essayé de définir la mise à l'échelle_min_freq dans / sys / devices / system / cpu / cpu [0-3] / cpufreq à une valeur plus élevée, mais aucun d'eux n'a rien fait. La fréquence reste minimale.

Le type de processeur est un processeur Intel (R) Core (TM) i7-3537U à 2,00 GHz, l'ordinateur est Dell Inspiron 15z Touch.

J'ai également un problème avec la batterie qui ne se charge pas même si l'ordinateur est alimenté par l'adaptateur secteur.

Plus de diagnostics:

$ sudo rdmsr --bitfield 15:8 -d -a 0x198
8
8
8
8
$ sudo rdmsr --bitfield 15:8 -d -a 0x199
9
8
9
9

Dans le cas de 0x199, les numéros 8 et 9 semblent être permutés de façon aléatoire entre les appels consécutifs.

Dugi
la source
Il y a eu quelques rapports similaires récemment, et souvent pour le modèle de processeur 58. hmmm ... Quelle marque est votre ordinateur? Jetez un œil à cela , où quelque chose d'extérieur au pilote de fréquence CPU intel_pstate maintient la fréquence basse. Tout en insistant sur votre CPU de charge à 100%, pourriez - vous regarder sudo rdmsr --bitfield 15:8 -d -a 0x198et sudo rdmsr --bitfield 15:8 -d -a 0x199et ajouter la sortie à votre question. Remarque rdmsrest fournie par le package msr-toolset nécessite que le module msr soit chargé en premier via sudo modprobe msr.
Doug Smythies
Veuillez utiliser le gouverneur PowerSave pour le test.
Doug Smythies
J'ai ajouté les informations demandées au message initial. En bref, mon ordinateur est un Dell Inspiron 15z Touch, il semble être une instance du bogue 118751 (car le problème disparaît lors de l'exécution sur batterie). L'utilisation du gouverneur PowerSave ne change rien.
Dugi
J'ai remarqué qu'exactement comme avec Marcin Nowak dans la discussion sur ce bug, ma batterie semble ne pas se charger du tout ou extrêmement lentement (même si l'ordinateur est éteint). Cependant, le courant alternatif ne semble en aucun cas faible.
Dugi
Voulez-vous continuer via le rapport de bug? Quelque chose d'extérieur au pilote de fréquence CPU intel_pstate maintient les fréquences CPU à leurs pstates les plus bas. Si vous démarrez à l'aide du pilote de fréquence CPU acpi_cpufreq, pourquoi obtenez-vous cat /sys/devices/system/cpu/cpufreq/policy0/bios_limit?
Doug Smythies

Réponses:

12

Il s'est avéré que ce problème n'était pas lié au pilote intel_pstate, car acpi_cpufreq, l'autre pilote, a signalé de meilleures valeurs mais ne les a jamais définies. L'OS n'avait probablement aucun contrôle sur cela.

Il s'agit d'un problème qui se produit avec certains ordinateurs portables Dell lorsque la charge est interrompue de manière à ce que l'ordinateur portable soit alimenté en courant alternatif mais pas chargé. La résolution du problème matériel supprime le problème. Dans ce cas, c'était un morceau de tissu presque invisible dans le connecteur d'alimentation qui empêchait le contact électrique.

Dugi
la source
1
Mais que faire, si en ce moment je ne peux pas remplacer le matériel (chargeur)?
Vedavrat
Je vérifierais le connecteur, il y a une chance que quelque chose ne fonctionne pas et il peut être corrigé manuellement. Sinon, vous devrez probablement souffrir des problèmes (non fatals) avec un processeur lent. Il s'agit d'un problème matériel non lié au système d'exploitation ou aux pilotes.
Dugi
Mon Dell Inspiton 15R N5110 Intel i7-2860QM était avec une pâte mourante jusqu'au moment où il s'arrête pour se charger, me laissant avec 800 MHz. J'ai ouvert le BIOS et désactivé Charger Behavioret Adapter Warnings. Retirez et retournez la pâte. Également sous Windows, mais mis en profil haute performance. Et récupéré mon CPU et obtenu 2500 MHz. Il est donc possible de surmonter le problème sans remplacement.
dzmitry.lahoda
1
Pour clarifier, votre batterie n'était pas en charge? Donc, si j'ai le même problème que l'OP, mais que ma batterie semble bien se charger (l'ordinateur portable dure plusieurs heures sur batterie), alors j'ai un problème différent?
Garrett
1
@Garrett La batterie n'était pas en cours de charge. Si le frappeur charge, ce n'est pas ce problème. Le problème était que le BIOS est entré dans une situation inattendue où l'ordinateur portable était alimenté en courant alternatif, mais la batterie n'était pas chargée.
Dugi
3

Cela mettra votre fréquence CPU à la vitesse maximale à partir de n'importe quel terminal:

sudo cpufreq-set -f `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq`

Modifiez le fichier /etc/init.d/ondemand pour l'ajouter définitivement. ondemand est utilisé pour modifier votre fréquence lors de la connexion. La valeur par défaut est le gouverneur «ondemand». En d'autres termes, vous commencez à 800 MHz et montez au besoin.

Roger Lawhorn
la source
2
Ça aide. Je vous remercie! Mais ensuite, nous changeons simplement la fréquence du processeur de minimale (800 MHz) à maximale (3200 MHz), et comment configurer pour ajuster (varier) la fréquence du processeur entre 0,8 et 3,2 GHz selon les besoins en fonction du chargement, s'il vous plaît? Je vous remercie.
Vedavrat
2

J'ai eu le même problème - le processeur freq coincé dans ubuntu ainsi que dans les fenêtres, après un arrêt surchauffé dans la mallette de transport avec l'ordinateur portable toujours sous tension.

Je suis allé au BIOS, et désactivé la gestion de l'alimentation du processeur en "puissance", et j'ai mis tout le reste à plein régime (performances maximales). Redémarré, de retour à pleine vitesse, puis de nouveau au BIOS, et à nouveau activé la gestion du processeur, et corrigé les autres paramètres que j'ai modifiés auparavant. Et voilà!

EDIT: Il s'avère que c'est un problème de batterie. Si la batterie est vraiment faible, le processeur n'accélèrera pas (je suppose pour économiser de l'énergie). Sur mon Thinkpad, je dois charger la batterie pendant quelques minutes, jusqu'à ce que le voyant de charge cesse de clignoter rapidement AVANT de rallumer la machine.

Joerg Baach
la source
J'ai fait la même chose sur mon XPS 15, mais je n'ai jamais réactivé la gestion de l'alimentation. Depuis, il fonctionne rapidement et constamment. (La batterie est maintenant un peu affectée mais ce n'est pas trop important pour moi)
pandaadb
2

Parfois, mon ordinateur portable ignore complètement les paramètres cpufreq. J'ai trouvé cela fonctionne:

Débranchez le cordon d'alimentation et rebranchez-le. Fixé :)

Je suppose que la raison en est que la machine est devenue confuse: elle pense qu'elle est sur batterie, et elle pense que la batterie est faible, donc elle sous-charge le CPU pour économiser de l'énergie.

Nous devons simplement lui faire savoir qu'il est en fait branché et qu'il fonctionne bien.

(Ordinateur portable Asus x453m ici, Ubuntu 14.04) YouTube: Avez-vous essayé de l'éteindre et de le rallumer?

joeytwiddle
la source
Wow, yep cela a fonctionné pour moi!
Tim
0

J'ai eu le même problème avec mon ThinkPad T520. Après avoir essayé toutes les solutions trouvées sur Internet, j'étais prêt à réinstaller Ubuntu. Mais ensuite, j'ai vérifié la fréquence du processeur dans Windows et je l'ai trouvée limitée à 800 MHz également.

Cela ressemblait donc à un problème matériel. Il n'était pas évident qu'il y ait des problèmes de refroidissement du processeur, car les RPM plus froids étaient faibles et le boîtier de l'ordinateur portable n'était ni chaud ni même chaud.

Puisqu'il n'y avait aucune autre option de toute façon, j'ai démonté l'ordinateur portable et changé l'interface thermique en puces CPU et GPU. Et tu sais quoi? Ça m'a aidé!

Les tests unitaires sur l'un de mes projets Django duraient 45 minutes, maintenant c'est 11 minutes.

Donc, si vous rencontrez le même problème, en particulier sur un ordinateur portable - c'est probablement parce que l'interface thermique du stock séché - après 3-5 ans, il cesse souvent de faire son travail. Et ne vous laissez pas berner par le radiateur propre, la glacière silencieuse et le corps d'ordinateur portable cool.

Igor Pomaranskiy
la source
0

Solution de contournement

# Determinate CPU capabilities
MAX_CPU=$(cpupower frequency-info -l | tail -n1 | cut -d' ' -f2)

# Disable "BD PROCHOT" 
wrmsr -a 0x1FC 262238;

# Set and apply frequencies
cpupower frequency-set \
  -d $(expr $MAX_CPU / 2) \
  -u $MAX_CPU \
  -r \
  -g performance; 
eSlider
la source
0

Parfois, il ne s'agit pas uniquement de définir le régulateur de mise à l'échelle. Les stratégies de mise à l'échelle sont parfois définies entre MIN_FREQ et MIN_FREQ. J'ai dû écrire un script pour tout régler en une seule fois:

#!/bin/bash
echo "Setting all CPUs to " "$@"
CPUINFO_MIN_FREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq)
CPUINFO_MAX_FREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq)
MIN=$(echo "scale=1; $CPUINFO_MIN_FREQ / 1000000" | bc)"G"
MAX=$(echo "scale=1; $CPUINFO_MAX_FREQ / 1000000" | bc)"G"

echo "Minimum frequency: " $MIN ", Maximum frequency: " $MAX

GOVERNOR=@0
if [ $# -eq 0 ]
    then
        echo "No arguments supplied, using ONDEMAND governor"
        GOVERNOR="ondemand"
    else
        echo "Governor " $1 " supplied"
        GOVERNOR=$1
fi

for ((i=0;i<$(nproc);i++));
    do cpufreq-set -c $i -r -g $GOVERNOR  --min $MIN --max $MAX;
done
jsaddwater
la source