Quelle est la bonne façon d'afficher la vitesse de votre processeur sous Linux?

20

J'ai trouvé deux commandes pour générer des informations sur mon processeur: cat /proc/cpuinfoet lscpu. /proc/cpuinfomontre que ma vitesse CPU est de 2,1 Ghz, alors lspcuqu'elle est de 3167 Mhz. Laquelle est correcte?

C'est ma sortie exacte d' cat /proc/cpuinfoenviron la vitesse de mon processeur:

model name  : Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz

Et cela vient de lscpu:

CPU MHz:               3225.234

(Pour une raison quelconque, les lscpusorties diffèrent à chaque fois, variant entre 3100 et 3300 MHz)

Rohan
la source
3
Votre /proc/cpuinfodevrait également avoir une ligne qui indique cpu MHZ: ...quelle est la vitesse actuelle. Le 2.1 après le @est la vitesse de base (sans turbo boost).
don_crissti
Qu'est-ce que le turbo boost? Et cela signifie-t-il que ma vitesse est en fait d'environ 3,2 GHz?
Rohan
2
C'est la façon d'Intel de "frapper le gaz" en cas de besoin. Je suppose que votre vitesse réelle à l'époque était en effet d'environ 3,2 GHz, vous pouvez également essayer par exemple pour cpu0 avec cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq(en tant que root).
don_crissti
2
Turbo Boost est une technologie qui modifie la fréquence du processeur en fonction du nombre de cœurs que vous utilisez. Si vous utilisez quelques cœurs, la fréquence est augmentée pour augmenter les performances et maintenir une température basse. Vous pouvez consulter les tableaux de fréquences Turbo Boost pour voir comment il augmente.
Jaime

Réponses:

35

Pour voir la vitesse actuelle de chaque cœur, je fais ceci:

watch -n.1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""

Remarque:

Si votre watchcommande ne fonctionne pas avec des intervalles inférieurs à une seconde, modifiez l'intervalle comme suit:

watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""

Cela affiche le cpu speedde chaque cœur en temps réel.

En exécutant la commande suivante, une ou plusieurs fois, à partir d'un autre terminal, on peut voir le changement de vitesse avec la watchcommande ci-dessus , en supposant qu'elle SpeedStepest activée ( Cool'n'Quietpour AMD).

echo "scale=10000; 4*a(1)" | bc -l &

(Cette commande permet bcde calculer pijusqu'à 10000 places.)

Timothy Martin
la source
J'ai dû supprimer le .dans votre première commande pour le faire fonctionner:watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""
n1k31t4
1
c'est une façon astucieuse de le faire, mais je vous déconseille d'exécuter toute commande toutes les 0,1 secondes, ce qui en soi aura un impact sur le rapport de vitesse du processeur. 1 seconde est suffisant.
Lizardx
@Lizardx D'ordinaire, je suis d'accord, mais dans ce cas, la vitesse du processeur peut augmenter et diminuer plus rapidement qu'un intervalle de 1 seconde, entraînant un manque de changements de vitesse visibles. Étant donné que les processeurs modernes sont si rapides, j'ai d'abord pensé que mon SpeedStepne fonctionnait pas lorsque j'utilisais 1 seconde comme intervalle. Au minimum, .5devrait être utilisé si l'on ne veut pas aller aussi vite que .1 second(même si j'ai encore manqué de voir beaucoup de changements de vitesse à ce rythme.
Timothy Martin
1
Essayez de courir en haut avec les minuteries réglées sur moins de 1 seconde, vous pouvez voir visiblement l'utilisation du processeur. Je suppose que ce que vous voyez réellement est le système générant vos informations de vitesse de processeur, c'est-à-dire que la génération de la vitesse de processeur génère le mouvement du processeur. Je trouve que rien de moins qu'une seconde commence à provoquer directement les vitesses de processeur que vous regardez. Par exemple, le sommet à -d5 correspond à 1% du processeur. À -d2, c'est environ 5%. Vous pourriez trouver que vous vous trompez en pensant que le processeur fait quelque chose que vous lui faites faire, hé. La sortie en shell est également chère.
Lizardx
Pourrait essayer watch -n0.1, pourrait fonctionner. A défaut while true; do cat /proc/cpuinfo | grep MHz; sleep 0.1; clear; done, il scintille plus que regarder.
Steven Lu
7

Pour les processeurs basés sur Intel i3, i5 et i7, il existe un outil dédié appelé i7zqui affiche la vitesse actuelle de tous les cœurs de processeur.

Depuis la page de manuel (description):

i7z exécute le programme i7z, basé sur ncurses, sans aucune option. i7z imprimera les états C et la température pour les processeurs Core basés sur i3, i5 et i7 d'Intel (y compris Nehalems, Sandy Bridge et Ivy Bridge).

Pour les distributions basées sur Ubuntu, vous pouvez l'installer en émettant cette commande:

sudo apt-get install i7z

puis lancez-le (l'outil doit être exécuté avec sudo):

sudo i7z
Michal Przybylowicz
la source
4
C'est la meilleure solution si vous avez un processeur Intel. Cat'ing le cpuinfo vous donne des vitesses d'horloge incorrectes. Juste une note, vous avez oublié de mettre le tiret dans "apt-get".
fgblomqvist
Eh bien ... cela fonctionne avec mon processeur Xeon, seule la sortie est tronquée, peut-être parce que j'ai deux processeurs (j'ai une double carte mère Xeon).
Alexis Wilke
4

Le processeur Intel Core i7-4600U prend en charge la technologie Turbo Boost . Il a une fréquence de base de 2,10 GHz et une fréquence turbo maximale de 3,30 GHz. Cela signifie que,

  • Si vous désactivez le Turbo Boost (dans le menu de configuration du BIOS), le CPU fonctionnera à 2.10GHz tout le temps.
  • Lorsque Turbo Boost est activé et qu'un seul des cœurs fonctionne, le processeur fonctionne à un maximum de 3,30 GHz.
  • Si Turbo Boost est activé et que tous les cœurs fonctionnent, le processeur fonctionnera à 2,10 GHz.

Obtention de la fréquence actuelle

Pour déterminer si le Turbo Boost est activé et quelle est la fréquence actuelle, vous pouvez utiliser cpupower frequency-info. Par exemple, pour un ancien Intel Core i5-660 avec Turbo Boost activé, vous obtiendrez les éléments suivants.

$ cpupower frequency-info
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 3.47 GHz
  available frequency steps: 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 1.20 GHz and 3.47 GHz.
              The governor "ondemand" may decide which speed to use
              within this range.
  current CPU frequency is 1.87 GHz.
  cpufreq stats: 3.47 GHz:82,67%, 3.33 GHz:0,00%, 2.53 GHz:0,00%, 1.87 GHz:0,06%, 1.20 GHz:17,28%  (3)
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores

Notez que les informations indiquent les limites matérielles ( 1.20 GHz - 3.47 GHz), les fréquences possibles ( 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz) et la fréquence actuelle ( 1.87 GHz). Vous pouvez trouver les informations techniques de ces fréquences sur le site Web d'Intel .

Fréquence lorsque TurboBoost est désactivé

Notez la différence lorsque vous exécutez la même commande avec Turbo Boost désactivé: Dans la boost state supportsection, les valeurs de Supportedet Activesont no. Ici, le CPU sera toujours à la valeur nominale / minimale (1,20 GHz).

$ cpupower frequency-info
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 3.47 GHz
  available frequency steps: 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 1.20 GHz and 3.47 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1.20 GHz.
  cpufreq stats: 3.47 GHz:40,86%, 3.33 GHz:0,01%, 2.53 GHz:0,06%, 1.87 GHz:0,22%, 1.20 GHz:58,85%  (493)
  boost state support:
    Supported: no
    Active: no
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores

Vous pouvez désactiver le Turbo Boost à l'aide du BIOS ou de certaines options / commandes Linux . Le support du noyau peut être activé / désactivé à l'aide du /sys/devices/system/cpu/cpufreq/boostfichier.

Jaime
la source
Haypo a une entrée de blog avec plus d'informations sur le pilote Intel p-state, les états C, le Turbo Boost et les commandes pour obtenir des informations de fréquence.
Jaime
ce lien est maintenant rompu ...
Mikhail T.
1
Le lien pour l'entrée de blog haypo est rompu. Vous pouvez en trouver une copie dans les notes de Victor Stinner: partie 1 et partie 2 .
Jaime
4

Les fréquences CPU sont conservées dans le noyau mais elles peuvent être un peu "éteintes". Vous pouvez les voir en utilisant:

$ cd /sys/devices/system/cpu
$ paste <(cat cpu*/cpufreq/affected_cpus) <(cat cpu*/cpufreq/scaling_cur_freq) | column -s $'\t' -t
0  833914
1  800021
2  800086
3  800029
4  800036
5  800460
6  800118
7  800141

Si vous n'avez pas besoin de savoir que la méthode la plus courte du CPU # est simplement d'utiliser:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
1396354
800058
800050
800024
800005
800017
800001
1392006
WinEunuuchs2Unix
la source
Cette méthode semble fonctionner sur le Raspberry Pi exécutant Raspbian
Jon
3

Pour obtenir des informations sur votre CPU, tapez la commande suivante:

dmidecode -t 4
GAD3R
la source
2
Cuspy. Maintenant, je vois 4 numéros différents ici ;-)
vonbrand
En outre, la "vitesse actuelle" semble être trompeuse, car la vitesse actuelle est actuellement toujours signalée en grand nombre (3,7 GHz), lorsque la machine est inactive.
ragerdl
@vonbrand Une personne avec une montre sait quelle heure il est. Une personne avec deux montres ne peut jamais être certaine.
Kusalananda
0

Cela dépend de la raison pour laquelle vous utilisez les informations; la ligne de sortie de cat / proc / cpuinfo` est la vitesse "annoncée", la vitesse dans la brochure, etc. Si vous comparez le serveur A au serveur B, cela peut être suffisant. Si vous surveillez les charges de travail sur le système, les commentaires à votre question et la réponse de @ gad3r seront ce qu'il faut regarder.

Mark Stewart
la source