lscpu
vous indique que votre architecture est i686 (un processeur Intel 32 bits) et que votre processeur prend en charge les modes de fonctionnement 32 bits et 64 bits. Vous ne pourrez pas installer d'applications construites en x64 puisqu'elles sont conçues spécifiquement pour les architectures x64.
Votre processeur particulier peut gérer les packages construits i386 ou i686. Il existe plusieurs façons de vérifier vos préférences d'architecture et de système d'exploitation.
lscpu
Comme vous le savez déjà, vous pouvez utiliser la commande lscpu. Cela fonctionne bien pour vous donner une idée approximative de ce dont votre CPU est capable.
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 4
Thread(s) per core: 2
Core(s) per socket: 2
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 37
Stepping: 5
CPU MHz: 1199.000
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
/proc/cpuinfo
Ce sont en fait les données fournies par le noyau que la plupart des outils tels que lscpu
utiliser pour afficher. Je trouve cette sortie un peu agréable dans le fait qu'elle vous montre des informations sur le numéro de modèle de votre processeur particulier. Il vous montrera également une section pour chaque cœur que votre CPU peut avoir.
Voici la sortie pour un seul cœur :
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 37
model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
stepping : 5
cpu MHz : 1466.000
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
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 rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid
bogomips : 5319.74
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
Voici à quoi ressemblent les 3 premières lignes de chaque section pour un noyau :
$ grep processor -A 3 /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 37
--
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 37
--
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 37
--
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 37
La sortie de /proc/cpuinfo
peut également vous indiquer le type d'architecture fourni par votre CPU à travers les différents drapeaux qu'il affiche. Notez ces lignes de la commande ci-dessus :
$ grep /proc/cpuinfo | head -1
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 xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid
Les drapeaux qui se terminent par _lm
vous dire que votre processeur prend en charge le "mode long". Le mode long est un autre nom pour 64 bits.
uname
Cette commande peut être utilisée pour déterminer quelle plate-forme votre noyau a été construit pour prendre en charge. Par exemple :
noyau 64 bits
$ uname -a
Linux grinchy 2.6.35.14-106.fc14.x86_64 #1 SMP Wed Nov 23 13:07:52 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
noyau 32 bits
$ uname -a
Linux skinner.bubba.net 2.6.18-238.19.1.el5.centos.plus #1 SMP Mon Jul 18 10:07:01 EDT 2011 i686 i686 i386 GNU/Linux
Cette sortie peut être affinée un peu plus en utilisant les commutateurs, [-m|--machine]
, [-p|--processor]
, et [-i|--hardware-platform]
.
Voici cette sortie pour les mêmes systèmes ci-dessus.
64 bits
$ uname -m; uname -p; uname -i
x86_64
x86_64
x86_64
32 bits
$ uname -m; uname -p; uname -i
i686
i686
i386
REMARQUE : Il existe également une version abrégée de uname -m
que vous pouvez exécuter en tant que commande autonome, arch
. Il renvoie exactement la même chose que uname -m
. Vous pouvez en savoir plus sur le arch
commande dans la documentation coreutils.
extrait
arch imprime le nom du matériel de la machine et équivaut à "uname -m".
hwinfo
Le meilleur outil pour analyser votre matériel doit probablement être hwinfo
. Ce package peut vous montrer à peu près tout ce que vous voudriez / devez savoir sur n'importe lequel de vos matériels, directement depuis le terminal. Cela m'a évité des dizaines de fois lorsque j'avais besoin d'informations sur une puce de la carte mère d'un système ou que j'avais besoin de connaître la révision d'une carte dans un emplacement PCI.
Vous pouvez l'interroger sur les différents sous-systèmes d'un ordinateur. Dans notre cas, nous examinerons le cpu
sous-système.
$ hwinfo --cpu
01: None 00.0: 10103 CPU
[Created at cpu.301]
Unique ID: rdCR.a2KaNXABdY4
Hardware Class: cpu
Arch: X86-64
Vendor: "GenuineIntel"
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
Features: 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,xtopology,nonstop_tsc,aperfmperf,pni,pclmulqdq,dtes64,monitor,ds_cpl,vmx,smx,est,tm2,ssse3,cx16,xtpr,pdcm,sse4_1,sse4_2,popcnt,aes,lahf_lm,ida,arat,tpr_shadow,vnmi,flexpriority,ept,vpid
Clock: 2666 MHz
BogoMips: 5319.74
Cache: 3072 kb
Units/Processor: 16
Config Status: cfg=new, avail=yes, need=no, active=unknown
Encore une fois, similaire à /proc/cpuinfo
cette commande vous montre la composition de chaque cœur individuel dans un système multicœur. Voici la première ligne de chaque section d'un noyau, juste pour vous donner une idée.
$ hwinfo --cpu | grep CPU
01: None 00.0: 10103 CPU
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
02: None 01.0: 10103 CPU
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
03: None 02.0: 10103 CPU
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
04: None 03.0: 10103 CPU
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
getconf
C'est probablement le moyen le plus évident de dire quelle architecture votre CPU présente au système d'exploitation. Utilisation de getconf
, vous interrogez la variable système LONG_BIT. Ce n'est pas une variable d'environnement.
# 64-bit system
$ getconf LONG_BIT
64
# 32-bit system
$ getconf LONG_BIT
32
lshw
Encore un autre outil, similaire en capacités à hwinfo
. Vous pouvez interroger à peu près tout ce que vous voulez savoir sur le matériel sous-jacent. Par exemple :
# 64-bit Kernel
$ lshw -class cpu
*-cpu
description: CPU
product: Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
vendor: Intel Corp.
physical id: 6
bus info: [email protected]
version: Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
slot: None
size: 1199MHz
capacity: 1199MHz
width: 64 bits
clock: 133MHz
capabilities: fpu fpu_exception wp 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 x86-64 constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid cpufreq
configuration: cores=2 enabledcores=2 threads=4
# 32-bit Kernel
$ lshw -class cpu
*-cpu:0
description: CPU
product: Intel(R) Core(TM)2 CPU 4300 @ 1.80GHz
vendor: Intel Corp.
physical id: 400
bus info: [email protected]
version: 6.15.2
serial: 0000-06F2-0000-0000-0000-0000
slot: Microprocessor
size: 1800MHz
width: 64 bits
clock: 800MHz
capabilities: boot fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe x86-64 constant_tsc pni monitor ds_cpl est tm2 ssse3 cx16 xtpr lahf_lm
configuration: id=1
*-logicalcpu:0
description: Logical CPU
physical id: 1.1
width: 64 bits
capabilities: logical
*-logicalcpu:1
description: Logical CPU
physical id: 1.2
width: 64 bits
capabilities: logical
Mode(s) de fonctionnement du processeur ?
Plusieurs des commandes signalent que ce qui semble être un processeur 32 bits prend en charge les modes 32 bits et 64 bits. Cela peut être un peu déroutant et trompeur, mais si vous comprenez l'histoire des processeurs, Intel en particulier, vous saurez qu'ils ont l'habitude de jouer à des jeux avec leurs produits où un processeur peut avoir un jeu d'instructions prenant en charge 16 bits, mais peut adresser plus de RAM que 2 ^ 16.
La même chose se passe avec ces processeurs. La plupart des gens savent qu'un processeur 32 bits ne peut adresser que 2 ^ 32 =4 Go de RAM. Mais il existe des versions de processeurs qui peuvent en traiter davantage. Ces processeurs utilisent souvent un noyau Linux avec le suffixe PAE - Physical Address Extension. L'utilisation d'un noyau compatible PAE avec ce matériel vous permettrait d'adresser jusqu'à 64 Go sur un système 32 bits.
Vous pensez peut-être bien alors pourquoi ai-je besoin d'une architecture 64 bits ? Le problème avec ces processeurs est qu'un seul espace de processus est limité à 2 ^ 32, donc si vous avez un grand programme de simulation ou de calcul qui nécessitait plus que les 2 ^ 32 d'espace adressable dans la RAM, cela ne vous aurait pas aidé. avec ça.
Jetez un œil à la page wikipedia sur la microarchitecture P6 (i686) pour plus d'informations.
TL;DR - Qu'est-ce que c'est que l'architecture de mon processeur ?
En général, cela peut prêter à confusion car un certain nombre de commandes et de méthodologies ci-dessus utilisent le terme "architecture" de manière vague. Si vous souhaitez savoir si le système d'exploitation sous-jacent est 32 bits ou 64 bits, utilisez ces commandes :
- lscpu
- getconf LONG_BIT
- uname
Si par contre vous voulez connaître l'architecture du CPU utilisez ces commandes :
- /proc/cpuinfo
- hwinfo
- lshw
Plus précisément, vous souhaitez rechercher des champs où il est écrit des choses comme "width :64" ou "width :32" si vous utilisez un outil comme lshw
, ou recherchez les drapeaux :
lm
:Mode long (x86-64 :amd64, également connu sous le nom d'Intel 64, c'est-à-dire compatible 64 bits)lahf_lm
:LAHF/SAHF en mode long
La présence de ces 2 drapeaux vous indique que le CPU est en 64 bits. Leurs absences vous indiquent que c'est du 32 bits.
Consultez ces URL pour plus d'informations sur les drapeaux CPU.
- Que signifient les drapeaux dans /proc/cpuinfo ?
- Indicateurs de fonctionnalité du processeur et leur signification
Références
pages de manuel
- page de manuel lscpu
- /proc/cpuinfo page de référence
- page de manuel uname
- page de manuel hwinfo
- page de manuel getconf
articles :
- Vérifier si une machine fonctionne avec un processeur 64 bits ou 32 bits/un système d'exploitation Linux ?
- Découvrez si le processeur est 32 bits ou 64 bits (Linux)
- Besoin d'aide :vérification 32 bits/64 bits pour Linux
Si votre noyau est un noyau Linux 32 bits, vous ne pourrez pas exécuter de programmes 64 bits, même si votre processeur le prend en charge.
Installez un noyau 64 bits (et tout le système d'exploitation bien sûr) pour exécuter 64 bits
Pour être complet :puisque sur la plupart des architectures 64 bits, il est possible d'exécuter du code 32 bits, à la fois dans l'espace noyau et dans l'espace utilisateur, il ne faut pas oublier qu'il existe en fait 4 combinaisons possibles :
- Espace utilisateur 32 bits sur un noyau 32 bits
- Espace utilisateur 64 bits sur un noyau 64 bits
- Espace utilisateur 32 bits sur un noyau 64 bits
- les deux Espace(s) utilisateur 64 bits et 32 bits sur un noyau 64 bits
uname
est la manière habituelle de déterminer la variante du noyau. Pour l'espace utilisateur, file
est assez bon pour reconnaître les exécutables :file $SHELL
ou file /sbin/init
sont des idiomes commodes. Juste l'existence des deux /lib/*.so
et /lib64/*.so
est généralement une bonne indication que le système comporte les deux variantes d'espace utilisateur.