Caractéristiques processeur

Caractéristique, pilotage, test de performances et de charge des processeurs

Création : Debian Stretch

1 - Caractéristiques statiques

1.1 - Caractéristiques processeur

lscpu et cat /proc/cpu fournissent un grand nombre d'informations sur le processeur, telles que

Exemples :

$ 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
$ 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)

$ 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
......

1.2 - Processeurs Intel Core

1.3.1 Présentation générale

GENERATION           ARCHITECTURE
- NetBurst
- Core
- Nehalem
2 Sandy Bridge
3 Ivy Bridge 4 Haswell
5 Broadwell
6 Skylake
7 Kaby Lake
8/9 Coffee Lake

1.3.2 Documentation constructeur

$ lscpu |grep "Nom de modèle"
Nom de modèle : Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz

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

2 - Pilotage

2.1 - Utilisation de /sys/devices/system/cpu

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
$ 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
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
performance powersave

2.2 - Utilisation de linux-cpupower

L'installation du paquet linux-cpupower permet d'afficher plus facilement ces informations.

# apt install linux-cpupower

2.2.1 Caractéristiques du pilotage en fréquence

$ cpupower frequency-info -g
analyse du CPU 0 :
régulateurs disponibles : performance powersave
$ 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.
# 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)
$ cpupower frequency-info -fm
analyse du CPU 0 :
current CPU frequency: 1.09 GHz (asserted by call to kernel)
$ 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

2.2.2 États du processeur

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.

$ 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!)

# 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%.

3 - Interface graphique

3.1 - Fréquence et régulateur

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

Plugin

Configuration plugin fréquence

Informations sur les processeurs

3.2 - Activité processeurs

3.2.1 Taux de charge de chaque processeur

Le plugin xfce4-cpugraph-plugin affiche la charge de chaque processeur, ainsi qu'un petit graphe

# apt install xfce4-cpugraph-plugin

Plugin CPU graph

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.

Paramétrage de CPU graph

3.2.2 Taux de charge moyen

Le plugin xfce4-systemload-plugin affiche la charge globale, ainsi que l'occupation mémoire et swap.

# apt install xfce4-systemload-plugin

plugin charge système

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.

Moniteur charge système

4 - Test de performances (mise à jour Debian 10 Buster)

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

5 - Test de charge

Le paquet stress fournit des utilitaires pour le test de charge processeur, des entrées/sorties, ...

# apt install stress
# 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.