Caractéristique, pilotage, test de performances et de charge des processeurs
Création : Debian Stretch
lscpu et cat /proc/cpu fournissent un grand nombre d'informations sur le processeur, telles que
l'architecture : dans le cas d'un PC : X86_64 ou i686 etc....
le mode opératoire : 32 bits ou 64 bits
le nombre de processeurs : 1, 4, 8, ..
le fabriquant et le nom du modèle
les fréquences min, max
Exemples :
Cas d'un processeur 32 bits "ancien" :
$ lscpu |grep -E "Arch|Mode|Proc|Nom|max|min"
Architecture : i686
Mode(s) opératoire(s) des processeurs : 32-bit
Processeur(s) : 1
Nom de modèle : Intel(R) Celeron(R) M processor 900MHz
Cas d'un processeur 64 bits "récent" :
$ lscpu |grep -E "Arch|Mode|Proc|Nom|max|min"
Architecture : ls x86_64
Mode(s) opératoire(s) des processeurs : 32-bit, 64-bit
Processeur(s) : 8
Nom de modèle : Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz
Vitesse maximale du processeur en MHz : 3800,0000
Vitesse minimale du processeur en MHz : 400,0000
A noter que la vitesse maximale indiquée (3800 MHz) est supérieure à la vitesse nominale du modèle (2300 MHz) (fonction "boost" de intel_pstate)
Le fichier /proc/cpuinfo fournit les caractéristiques de chaque processeur :
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 142
model name : Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz
stepping : 10
microcode : 0x9e
cpu MHz : 740.743
cache size : 6144 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
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 pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp flush_l1d
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
bogomips : 4608.00
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 1
......
GENERATION ARCHITECTURE
- NetBurst
- Core
- Nehalem
2 Sandy Bridge
3 Ivy Bridge 4 Haswell
5 Broadwell
6 Skylake
7 Kaby Lake
8/9 Coffee Lake
$ lscpu |grep "Nom de modèle"
Nom de modèle : Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz
La signification de la numérotation est indiquée en https://www.intel.com/content/www/us/en/processors/processor-numbers.html.
Dans le cas présent, i5-8259U correspond à un processeur i5 de 8ème génération, la lettre U correspondant à la version Ultra-low-Power.
Dans le cas présent, https://ark.intel.com/content/www/us/en/ark/products/135935/intel-core-i5-8259u-processor-6m-cache-up-to-3-80-ghz.html
Nom de code : Coffee Lake
Processeur graphique : Intel® Iris® Plus Graphics 655
Le répertoire /sys/devices/system/cpu contient des informations détaillées sur le processeur et son pilotage. Son contenu dépend du type de processeur, de pilote, etc..... Par exemple, pour un proceseur multi-coeur, avec pilote intel_pstate :
$ ls /sys/devices/system/cpu/
cpu0 cpu3 hotplug kernel_max offline power
cpu1 cpufreq intel_pstate microcode online present
cpu2 cpuidle isolated modalias possible uevent
Dans l'exemple ci-dessus, le processeur possède 4 cœurs et les répertoires /sys/devices/system/cpu/cpuX/cpufreq (X de 0 à 3) contiennent les paramètres liées au pilotage en fréquence.
$ ls /sys/devices/system/cpu/cpu0/cpufreq
affected_cpus related_cpus scaling_max_freq
cpuinfo_cur_freq scaling_available_governors scaling_min_freq
cpuinfo_max_freq scaling_cur_freq scaling_setspeed
cpuinfo_min_freq scaling_driver
cpuinfo_transition_latency scaling_governor
Par exemple, liste des régulateurs disponibles :
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
performance powersave
L'installation du paquet linux-cpupower permet d'afficher plus facilement ces informations.
# apt install linux-cpupower
Liste des régulateurs disponibles
$ cpupower frequency-info -g
analyse du CPU 0 :
régulateurs disponibles : performance powersave
Régulateur actuellement utilisé
$ cpupower frequency-info -p
analyse du CPU 0 :
tactique actuelle : la fréquence doit être comprise entre 3.10 GHz et 3.10 GHz.
Le régulateur "performance" est libre de choisir la vitesse
dans cette plage de fréquences.
Fréquences fournies respectivement par appel au hardware (nécessite droit administrateur) et par appel au noyau
# cpupower frequency-info -w && cpupower frequency-info -f
analyse du CPU 0 :
current CPU frequency: 2940332 (asserted by call to hardware)
analyse du CPU 0 :
current CPU frequency: 2940332 (asserted by call to kernel)
Fréquence du processeur en unité "humaine" :
$ cpupower frequency-info -fm
analyse du CPU 0 :
current CPU frequency: 1.09 GHz (asserted by call to kernel)
Caractéristiques globales
$ cpupower frequency-info
analyse du CPU 0 :
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: Cannot determine or is not supported.
limitation matérielle : 800 MHz - 3.10 GHz
régulateurs disponibles : performance powersave
tactique actuelle : la fréquence doit être comprise entre 3.10 GHz et 3.10 GHz.
Le régulateur "performance" est libre de choisir la vitesse
dans cette plage de fréquences.
current CPU frequency: 2.12 GHz (asserted by call to hardware)
boost state support:
Supported: yes
Active: yes
2900 MHz max turbo 4 active cores
2900 MHz max turbo 3 active cores
2900 MHz max turbo 2 active cores
3100 MHz max turbo 1 active cores
L'état C0 correspond au temps passé en activité, les états suivants C1, ... C10 sont des états d'inactivité et de consommation de plus en plus réduite.
Répartition du temps par états
$ cpupower monitor -m Idle_Stats
|Idle_Stats
CPU | POLL | C1-S | C1E- | C3-S | C6-S | C7-S
0| 0,00| 0,00| 0,38| 0,02| 0,00| 95,84
2| 0,00| 0,00| 0,03| 0,03| 0,00| 95,63
1| 0,00| 0,00| 0,21| 1,54| 0,00| 93,91
3| 0,00| 0,00| 0,15| 0,05| 0,00| 96,39
Dans l'exemple ci-dessus, le processeur 0 est à 95,84% dans l'état C7-S (Sommeil profond!)
Temps passé en activité (maximale) :
# cpupower monitor -m Mperf
|Mperf
CPU | C0 | Cx | Freq
0| 4,41| 95,59| 2242
2| 1,26| 98,74| 2166
1| 5,50| 94,50| 1834
3| 2,06| 97,94| 2785
Dans le cas présent, le temps d'activité du processeur 0 sur la période de mesure a été de 4,41%.
Le plugin xfce4-cpufreq-plugin permet d'afficher dans la barre de menu la fréquence et le régulateur de chaque processeur :
# apt install xfce4-cpufreq-plugin
Installer le plugin dans la barre de menus
Un clic droit sur le plugin donne accès à un menu déroulant, sélectionner l'option Préférences pour paramétrer l'affichage.:
En double cliquant sur le plugin dans la barre de menus, toutes les informations disponibles sont affichées :
Le plugin xfce4-cpugraph-plugin affiche la charge de chaque processeur, ainsi qu'un petit graphe
# apt install xfce4-cpugraph-plugin
Un clic droit sur le plugin donne accès à un menu déroulant, sélectionner l'option Préférences pour paramétrer l'affichage.
Le plugin xfce4-systemload-plugin affiche la charge globale, ainsi que l'occupation mémoire et swap.
# apt install xfce4-systemload-plugin
Un clic droit sur le plugin donne accès à un menu déroulant, sélectionner l'option Préférences pour paramétrer l'affichage.
sysbench fournit des tests pour comparer la performance d'un processeur d'une installation ou d'une configuration à une autre
$ curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
$ sudo aptitude install sysbench
$ sysbench --version
sysbench 1.0.17
Le test répète le calcul d'un nombre donné (max 20 000) de nombres premiers pendant un temps donné (par défaut 10 secondes), la performance est indiquée par le nombre de répétitions par seconde (events). Le nombre de "threads" ,par défaut 1, est paramétrable (entre 1 et le nombre de cœurs du processeur)
$ sysbench cpu --threads=8 --cpu-max-prime=15000 run
sysbench 1.0.17 (using bundled LuaJIT 2.1.0-beta2)
.....
CPU speed:
events per second: 4759.00
....
Le paquet stress fournit des utilitaires pour le test de charge processeur, des entrées/sorties, ...
# apt install stress
Stress processeur : charge à 100% de 4 processeurs (surveiller la température du processeur!!) pendant 100s
# stress -c 4 --timeout 100
stress: info: [10800] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
stress: info: [10800] successful run completed in 100s
Si plus de processeurs sont disponibles que de processeurs chargés, la charge tourne entre les processeurs.
Autres tests : options -m (mémoire), -i (entrées/sorties), -d