Vous n'avez pas besoin catavant awk, de toute façon: il suffit awk '<script>' /proc/cpuinfo, comme ça: awk '/^processor/{n+=1}END{print n}' /proc/cpuinfo. Et vous entrez sans "moins un".
Tomasz Gandor
Pour répondre directement à la question, canalisez celle vers tail -n 1laquelle prend la dernière ligne et imprimez-la.
Notez que les deux finiront par compter deux fois plus de cœurs qu'il en existe réellement si vous êtes sur un système avec hyperthreading (par exemple, P4 ou Core i7).
duskwuff -inactive-
24
@duskwuff: c'est précisément ce que vous voulez dans la plupart des cas.
Frank Kusters
8
grep -c '^processor' /proc/cpuinfosur zsh.
Steven Lu
40
cat /proc/cpuinfo | awk '/^processor/{print $3}' | tail -1retournera également le mauvais numéro si les numéros de CPU sont basés sur 0.
Phazor
3
La première ligne renvoie 1 noyau de moins qu'existant. Mieux cat / proc / cpuinfo | awk '/ ^ processor / {print $ 3}' | wc -l
Mirko Ebert
650
Le traitement du contenu /proc/cpuinfoest inutilement baroque. Utilisez nproc qui fait partie de coreutils, il devrait donc être disponible sur la plupart des installations Linux.
La commande nprocimprime le nombre d'unités de traitement disponibles pour le processus en cours, qui peut être inférieur au nombre de processeurs en ligne.
Pour trouver le nombre de tous les cœurs / processeurs installés, utilisez nproc --all
Sur mon ancien ubuntu (10.10), nproc n'est pas disponible. Ce doit être un ajout nouveau.
bukzor
3
Malheureusement, nprocne fait pas partie de boot2docker
kgadek
269
La solution la plus portable que j'ai trouvée est la getconfcommande:
getconf _NPROCESSORS_ONLN
Cela fonctionne à la fois sur Linux et Mac OS X. Un autre avantage de cela par rapport à certaines des autres approches est que getconf existe depuis longtemps. Certaines des anciennes machines Linux sur lesquelles je dois faire du développement n'ont pas les commandes nprocou lscpudisponibles, mais elles ontgetconf .
Note de l'éditeur: bien que l' getconfutilitaire soit mandaté par POSIX , les valeurs spécifiques _NPROCESSORS_ONLNet _NPROCESSORS_CONFne le sont pas. Cela dit, comme indiqué, ils fonctionnent sur les plates-formes Linux ainsi que sur macOS; sur FreeBSD / PC-BSD, vous devez omettre le début _.
Cela a fonctionné pour moi sur Red Hat Entreprise Linux 5.4, Centos 6.5 et 7 et Mac OSX 10.9 (Mavericks). Il semble que ce soit le plus portable, car lscpu n'est pas installé par défaut sur ces systèmes. Merci!
@BCran Je n'ai pas pu trouver _NPROCESSORS_ONLNdans POSIX. Pouvez-vous y accéder?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
3
@CiroSantilli 六四 事件 法轮功 纳米比亚 威 视 Sur github.com/gstrauss/plasma/blob/master/plasma_sysconf.c il me semble que j'avais tort: ce n'est que facultatif. "sysconf _SC_NPROCESSORS_ONLN et _SC_NPROCESSORS_CONF ne sont pas requis par les normes, mais sont fournis sur de nombreuses plates-formes Unix et documentés en option par Open Group."
BCran
100
Préface:
Le problème avec les /proc/cpuinforéponses basées sur le fait qu'elles analysent les informations destinées à la consommation humaine et n'ont donc pas de format stable conçu pour l'analyse de la machine : le format de sortie peut différer d'une plate-forme à l'autre et de conditions d'exécution; l'utilisation lscpu -psur Linux (et sysctlsur macOS) contourne ce problème .
getconf _NPROCESSORS_ONLN/ getconf NPROCESSORS_ONLNne fait pas de distinction entre les processeurs logiques et physiques .
Voici un shextrait (compatible POSIX) qui fonctionne sur Linux et macOS pour déterminer le nombre de processeurs logiques ou physiques - en ligne - ; voir les commentaires pour plus de détails.
Utilise lscpupour Linux et sysctlpour macOS.
Note terminologique : CPU désigne la plus petite unité de traitement vue par le système d'exploitation. Les cœurs non hyper-threading correspondent chacun à 1 CPU, tandis que les cœurs hyper-threading contiennent plus de 1 (généralement: 2) - logique - CPU.
Linux utilise la taxonomie suivante [1] , en commençant par la plus petite unité: CPU < core < socket < book < node
avec chaque niveau comprenant 1 ou plusieurs instances du niveau inférieur suivant.
#!/bin/sh# macOS: Use `sysctl -n hw.*cpu_max`, which returns the values of # interest directly.# CAVEAT: Using the "_max" key suffixes means that the *maximum*# available number of CPUs is reported, whereas the# current power-management mode could make *fewer* CPUs # available; dropping the "_max" suffix would report the# number of *currently* available ones; see [1] below.## Linux: Parse output from `lscpu -p`, where each output line represents# a distinct (logical) CPU.# Note: Newer versions of `lscpu` support more flexible output# formats, but we stick with the parseable legacy format # generated by `-p` to support older distros, too.# `-p` reports *online* CPUs only - i.e., on hot-pluggable # systems, currently disabled (offline) CPUs are NOT# reported.# Number of LOGICAL CPUs (includes those reported by hyper-threading cores)# Linux: Simply count the number of (non-comment) output lines from `lscpu -p`, # which tells us the number of *logical* CPUs.
logicalCpuCount=$([ $(uname)='Darwin']&&
sysctl -n hw.logicalcpu_max ||
lscpu -p | egrep -v '^#'| wc -l)# Number of PHYSICAL CPUs (cores).# Linux: The 2nd column contains the core ID, with each core ID having 1 or# - in the case of hyperthreading - more logical CPUs.# Counting the *unique* cores across lines tells us the# number of *physical* CPUs (cores).
physicalCpuCount=$([ $(uname)='Darwin']&&
sysctl -n hw.physicalcpu_max ||
lscpu -p | egrep -v '^#'| sort -u -t,-k 2,4| wc -l)# Print the values.
cat <<EOF
# of logical CPUs: $logicalCpuCount# of physical CPUS: $physicalCpuCount
EOF
Notez que les systèmes dérivés de BSD autres que macOS - par exemple, FreeBSD - ne prennent en charge que la hw.ncpuclé pour sysctl, qui sont obsolètes sur macOS; Je ne suis pas clair sur lequel des nouvelles clés hw.npucorrespond à: hw.(logical|physical)cpu_[max].
Astuce du chapeau à @teambob pour aider à corriger la commande Physical-CPU-count lscpu.
Attention : la lscpu -psortie n'inclut PAS de colonne "livre" (la manpage mentionne "livres" comme une entité entre socket et nœud dans la hiérarchie taxonomique). Si des "livres" sont en cours de lecture sur un système Linux donné ( est-ce que quelqu'un sait quand et comment? ), La commande physical-CPU-count peut sous- signaler (ceci est basé sur l'hypothèse que les lscpuID de rapports qui ne sont pas uniques sur des niveaux supérieurs entités de niveau ; par exemple: 2 cœurs différents de 2 sockets différents pourraient avoir le même ID).
Si vous enregistrez le code ci-dessus en tant que, par exemple, un script shellcpus , le rendez exécutable avec chmod +x cpuset le placez dans un dossier dans votre $PATH, vous verrez une sortie telle que la suivante:
$ cpus
logical 4
physical 4
[1] Xaekai met en lumière ce qu'est un livre : "un livre est un module qui contient une carte de circuit imprimé avec des sockets CPU, des sockets RAM, des connexions IO le long du bord et un crochet pour l'intégration du système de refroidissement. Ils sont utilisés dans les mainframes IBM . Pour plus d'informations: http://ewh.ieee.org/soc/cpmt/presentations/cpmt0810a.pdf "
Oui, désolé, vous avez raison sur la commande de tri. Je ne trouve aucune information sur les livres au-delà du manuel lscpu. Je pense qu'il est lié à NUMA en.wikipedia.org/wiki/Non-uniform_memory_access
teambob
2
Je pense que la plupart des solutions ici ignorent les machines multiprises, contrairement à celle-ci. Merci!
dividebyzero
1
En termes de Linux, il existe de nombreux contextes où lscpu n'est pas disponible, comme les images d'installation. Je l'aime .. souhaite qu'il soit omniprésent.
Brian Chrisman
43
lscpu rassemble le formulaire d'informations sur l'architecture du processeur / proc / cpuinfon dans un format lisible par l'homme:
# lscpuArchitecture: x86_64
CPU op-mode(s):32-bit,64-bit
ByteOrder:LittleEndian
CPU(s):8On-line CPU(s) list:0-7Thread(s) per core:1Core(s) per socket:4
CPU socket(s):2
NUMA node(s):1Vendor ID:GenuineIntel
CPU family:6Model:15Stepping:7
CPU MHz:1866.669BogoMIPS:3732.83Virtualization: VT-x
L1d cache:32K
L1i cache:32K
L2 cache:4096K
NUMA node0 CPU(s):0-7
est "^ core id" pour le nombre total de cœurs physiques ou simplement les p-cœurs sur un processeur?
Richard
1
il y a une ligne d'identification de cœur par cœur physique unique dans le système. Je ne sais pas si les chiffres recommenceront à zéro pour un deuxième processeur physique, cependant ...
lunixbochs
1
si vous avez plus d'un processeur physique, vous devrez également regarder "id physique".
Anne
La première ligne n'a pas fonctionné pour moi. Cela fonctionne pour moi. cat /proc/cpuinfo | awk '/^processor/{print $3}'| wc -let montre le bon numéro.
jaylweb
11
Pour le nombre total de cœurs physiques:
grep '^core id'/proc/cpuinfo |sort -u|wc -l
Sur les machines à plusieurs sockets (ou toujours), multipliez le résultat ci-dessus par le nombre de sockets:
L'utilisation de getconf est en effet le moyen le plus portable, mais la variable a des noms différents dans BSD et Linux pour getconf, vous devez donc tester les deux, comme le suggère cet essentiel:
https://gist.github.com/jj1bdx/5746298
(comprend également un correctif Solaris utilisant ksh)
Quant à nproc, il fait partie de GNU Coreutils, donc non disponible dans BSD par défaut. Il utilise également sysconf () après quelques autres méthodes.
Sur le mien, cela renvoie le nombre d'hyperthreads. J'aurais également besoin de connaître le nombre de cœurs physiques et le nombre de sockets.
user2465201
OK - la même commande exacte avec hw.physicalcpu donne le nombre de cœurs. Pas encore sûr du nombre de sockets ... Il y a aussi un nombre de processeurs "logique" et "actif", mais je ne sais pas ce que cela signifie.
user2465201
Mise à jour rapide - cela ne semble pas si portable. Je l'ai essayé sur une boîte Linux, et il semble simplement lire les répertoires / proc, qui sont tous différents pour le système Linux et Mac - par exemple, il n'y a pas de sous-répertoire hw. Cela étant dit, vous pouvez toujours analyser / proc / cpuinfo
user2465201
5
C'est très simple. Utilisez simplement cette commande:
Comptez le nombre de CPU logiques uniques utilisés par le noyau Linux. L' -poption génère une sortie pour une analyse facile et est compatible avec les versions antérieures de lscpu.
Déterminer le nombre d'unités de traitement disponibles (pas nécessairement le même que le nombre de cœurs). Ceci est sensible à l'hyperthreading.
nproc
Je ne veux pas aller trop loin dans le lapin, mais vous pouvez également déterminer le nombre de processeurs configurés (par opposition aux processeurs simplement disponibles / en ligne) via getconf _NPROCESSORS_CONF. Pour déterminer le nombre total de CPU (hors ligne et en ligne) dont vous souhaitez analyser la sortie lscpu -ap.
c'est la bonne réponse si vous voulez des cœurs physiques.
Dinesh
3
J'ai également pensé que cat /proc/cpuinfocela me donnerait la bonne réponse, mais j'ai récemment vu que mon système ARM quad core Cortex A53 ne montrait qu'un seul cœur. Il semble que / proc / cpuinfo ne montre que les cœurs actifs, alors que:
cat /sys/devices/system/cpu/present
est une meilleure mesure de ce qui existe. Vous pouvez également
cat /sys/devices/system/cpu/online
pour voir quels cœurs sont en ligne, et
cat /sys/devices/system/cpu/offline
pour voir quels cœurs sont hors ligne. Les online, offlineet presentsysfs entrées renvoient l'index des CPU, de sorte qu'une valeur de retour de 0tout moyen de base 0, alors une valeur de retour des 1-3moyens noyaux 1,2 et 3.
Ce qui suit devrait vous donner le nombre de "vrais" cœurs sur un système hyperthreadé et non hyperthreadé. Au moins, cela a fonctionné dans tous mes tests.
-1, cela revient 0sur un seul cœur avec un Opteron 4170 HE, mais revient 4sur une boîte à huit cœurs avec un Opteron 3280. ... une partie de moi souhaite vraiment que cette monoplace fonctionne!
Cela a bien fonctionné. Quand j'ai essayé la première réponse, j'ai eu 3 processeurs en sortie. Je sais que j'ai 4 processeurs sur le système, donc je viens de faire un grepprocesseur et la sortie ressemblait à ceci:
Version: CPU Intel (R) Xeon (R) E5-2667 v4 à 3,20 GHz
Version: CPU Intel (R) Xeon (R) E5-2667 v4 à 3,20 GHz
Quel est le nombre de prises correct - en recherchant le E5-2667me dit que chaque prise a 8 cores, alors multipliez et finissez avec à 16 corestravers 2 sockets.
Où lscpume donner 20 CPUs- ce qui est totalement incorrect - je ne sais pas pourquoi. (il en va de même cat /proc/cpu- finit par20 .
Existe-t-il un moyen de faire fonctionner cela comme une commande en python? Par exemple, j'ai essayé python -m numexpr.ncores mais cela ne fonctionne pas.
MonsieurBeilto
1
@MonsieurBeilto Veuillez jeter un œil à la réponse mise à jour!
kmario23
Le nombre renvoyé par cpu_countest incorrect, il ne renvoie pas le nombre de cœurs mais simplement le nombre d'hyperthreads sur les processeurs Intel
Antti Haapala
1
Si vous voulez simplement compter les cœurs physiques, cette commande l'a fait pour moi.
Le comptage physique du processeur ne fonctionne pas avec les ordinateurs multiprises; pour cela, vous devez associer chaque «identifiant principal» à son «identifiant physique».
cat
avantawk
, de toute façon: il suffitawk '<script>' /proc/cpuinfo
, comme ça:awk '/^processor/{n+=1}END{print n}' /proc/cpuinfo
. Et vous entrez sans "moins un".tail -n 1
laquelle prend la dernière ligne et imprimez-la.Réponses:
comptera le nombre de lignes commençant par "processeur" dans
/proc/cpuinfo
Pour les systèmes avec hyper-threading, vous pouvez utiliser
qui devrait retourner (par exemple)
8
(alors que la commande ci-dessus retournerait16
)la source
grep -c '^processor' /proc/cpuinfo
sur zsh.cat /proc/cpuinfo | awk '/^processor/{print $3}' | tail -1
retournera également le mauvais numéro si les numéros de CPU sont basés sur 0.Le traitement du contenu
/proc/cpuinfo
est inutilement baroque. Utilisez nproc qui fait partie de coreutils, il devrait donc être disponible sur la plupart des installations Linux.La commande
nproc
imprime le nombre d'unités de traitement disponibles pour le processus en cours, qui peut être inférieur au nombre de processeurs en ligne.Pour trouver le nombre de tous les cœurs / processeurs installés, utilisez
nproc --all
Sur ma machine à 8 cœurs:
la source
nproc
ne fait pas partie de boot2dockerLa solution la plus portable que j'ai trouvée est la
getconf
commande:Cela fonctionne à la fois sur Linux et Mac OS X. Un autre avantage de cela par rapport à certaines des autres approches est que getconf existe depuis longtemps. Certaines des anciennes machines Linux sur lesquelles je dois faire du développement n'ont pas les commandes
nproc
oulscpu
disponibles, mais elles ontgetconf
.Note de l'éditeur: bien que l'
getconf
utilitaire soit mandaté par POSIX , les valeurs spécifiques_NPROCESSORS_ONLN
et_NPROCESSORS_CONF
ne le sont pas. Cela dit, comme indiqué, ils fonctionnent sur les plates-formes Linux ainsi que sur macOS; sur FreeBSD / PC-BSD, vous devez omettre le début_
.la source
_NPROCESSORS_ONLN
dans POSIX. Pouvez-vous y accéder?Préface:
Le problème avec les
/proc/cpuinfo
réponses basées sur le fait qu'elles analysent les informations destinées à la consommation humaine et n'ont donc pas de format stable conçu pour l'analyse de la machine : le format de sortie peut différer d'une plate-forme à l'autre et de conditions d'exécution; l'utilisationlscpu -p
sur Linux (etsysctl
sur macOS) contourne ce problème .getconf _NPROCESSORS_ONLN
/getconf NPROCESSORS_ONLN
ne fait pas de distinction entre les processeurs logiques et physiques .Voici un
sh
extrait (compatible POSIX) qui fonctionne sur Linux et macOS pour déterminer le nombre de processeurs logiques ou physiques - en ligne - ; voir les commentaires pour plus de détails.Utilise
lscpu
pour Linux etsysctl
pour macOS.Note terminologique : CPU désigne la plus petite unité de traitement vue par le système d'exploitation. Les cœurs non hyper-threading correspondent chacun à 1 CPU, tandis que les cœurs hyper-threading contiennent plus de 1 (généralement: 2) - logique - CPU.
Linux utilise la taxonomie suivante [1] , en commençant par la plus petite unité:
CPU < core < socket < book < node
avec chaque niveau comprenant 1 ou plusieurs instances du niveau inférieur suivant.
[1] documentation macOS
sysctl (3)
Notez que les systèmes dérivés de BSD autres que macOS - par exemple, FreeBSD - ne prennent en charge que la
hw.ncpu
clé poursysctl
, qui sont obsolètes sur macOS; Je ne suis pas clair sur lequel des nouvelles cléshw.npu
correspond à:hw.(logical|physical)cpu_[max]
.Astuce du chapeau à @teambob pour aider à corriger la commande Physical-CPU-count
lscpu
.Attention : la
lscpu -p
sortie n'inclut PAS de colonne "livre" (laman
page mentionne "livres" comme une entité entre socket et nœud dans la hiérarchie taxonomique). Si des "livres" sont en cours de lecture sur un système Linux donné ( est-ce que quelqu'un sait quand et comment? ), La commande physical-CPU-count peut sous- signaler (ceci est basé sur l'hypothèse que leslscpu
ID de rapports qui ne sont pas uniques sur des niveaux supérieurs entités de niveau ; par exemple: 2 cœurs différents de 2 sockets différents pourraient avoir le même ID).Si vous enregistrez le code ci-dessus en tant que, par exemple, un script shell
cpus
, le rendez exécutable avecchmod +x cpus
et le placez dans un dossier dans votre$PATH
, vous verrez une sortie telle que la suivante:[1] Xaekai met en lumière ce qu'est un livre : "un livre est un module qui contient une carte de circuit imprimé avec des sockets CPU, des sockets RAM, des connexions IO le long du bord et un crochet pour l'intégration du système de refroidissement. Ils sont utilisés dans les mainframes IBM . Pour plus d'informations: http://ewh.ieee.org/soc/cpmt/presentations/cpmt0810a.pdf "
la source
lscpu
rassemble le formulaire d'informations sur l'architecture du processeur / proc / cpuinfon dans un format lisible par l'homme:Voir également /unix/468766/understanding-output-of-lscpu .
la source
Cela a fonctionné pour moi.
tail -nX
vous permet de saisir uniquement les dernières lignes X.Si vous avez un hyperthreading, cela devrait fonctionner pour saisir le nombre de cœurs physiques .
la source
cat /proc/cpuinfo | awk '/^processor/{print $3}'| wc -l
et montre le bon numéro.Pour le nombre total de cœurs physiques:
Sur les machines à plusieurs sockets (ou toujours), multipliez le résultat ci-dessus par le nombre de sockets:
@ mklement0 a une assez bonne réponse ci-dessous en utilisant lscpu. J'ai écrit une version plus succincte dans les commentaires
la source
Vous pouvez également utiliser Python! Pour obtenir le nombre de cœurs physiques:
Pour obtenir le nombre de cœurs hyperthreadés:
la source
Solution multiplateforme pour Linux, MacOS, Windows:
la source
Voici la façon dont j'utilise pour compter le nombre de cœurs physiques qui sont en ligne sur Linux:
ou en bref:
Exemple (1 socket):
Exemple (2 prises):
Exemple (4 prises):
la source
L'utilisation de getconf est en effet le moyen le plus portable, mais la variable a des noms différents dans BSD et Linux pour getconf, vous devez donc tester les deux, comme le suggère cet essentiel: https://gist.github.com/jj1bdx/5746298 (comprend également un correctif Solaris utilisant ksh)
J'utilise personnellement:
Et si vous le souhaitez en python, vous pouvez simplement utiliser le syscall getconf utilise en important le module os:
Quant à
nproc
, il fait partie de GNU Coreutils, donc non disponible dans BSD par défaut. Il utilise également sysconf () après quelques autres méthodes.la source
Si vous voulez le faire pour qu'il fonctionne sur Linux et OS X, vous pouvez faire:
la source
C'est très simple. Utilisez simplement cette commande:
la source
CPU(s):
.Vous pouvez utiliser l'une des méthodes suivantes pour déterminer le nombre de cœurs CPU physiques .
Comptez le nombre d'ID de noyau uniques (à peu près équivalents à
grep -P '^core id\t' /proc/cpuinfo | sort -u | wc -l
).awk '/^core id\t/ {cores[$NF]++} END {print length(cores)}' /proc/cpuinfo
Multipliez le nombre de «cœurs par socket» par le nombre de sockets.
lscpu | awk '/^Core\(s\) per socket:/ {cores=$NF}; /^Socket\(s\):/ {sockets=$NF}; END{print cores*sockets}'
Comptez le nombre de CPU logiques uniques utilisés par le noyau Linux. L'
-p
option génère une sortie pour une analyse facile et est compatible avec les versions antérieures delscpu
.lscpu -p | awk -F, '$0 !~ /^#/ {cores[$1]++} END {print length(cores)}'
Pour réitérer ce que d'autres ont dit, il existe un certain nombre de propriétés connexes.
Pour déterminer le nombre de processeurs disponibles:
Déterminer le nombre d'unités de traitement disponibles (pas nécessairement le même que le nombre de cœurs). Ceci est sensible à l'hyperthreading.
Je ne veux pas aller trop loin dans le lapin, mais vous pouvez également déterminer le nombre de processeurs configurés (par opposition aux processeurs simplement disponibles / en ligne) via
getconf _NPROCESSORS_CONF
. Pour déterminer le nombre total de CPU (hors ligne et en ligne) dont vous souhaitez analyser la sortielscpu -ap
.la source
J'ai également pensé que
cat /proc/cpuinfo
cela me donnerait la bonne réponse, mais j'ai récemment vu que mon système ARM quad core Cortex A53 ne montrait qu'un seul cœur. Il semble que / proc / cpuinfo ne montre que les cœurs actifs, alors que:cat /sys/devices/system/cpu/present
est une meilleure mesure de ce qui existe. Vous pouvez également
cat /sys/devices/system/cpu/online
pour voir quels cœurs sont en ligne, et
cat /sys/devices/system/cpu/offline
pour voir quels cœurs sont hors ligne. Les
online
,offline
etpresent
sysfs entrées renvoient l'index des CPU, de sorte qu'une valeur de retour de0
tout moyen de base 0, alors une valeur de retour des1-3
moyens noyaux 1,2 et 3.Voir https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-devices-system-cpu
la source
Ce qui suit devrait vous donner le nombre de "vrais" cœurs sur un système hyperthreadé et non hyperthreadé. Au moins, cela a fonctionné dans tous mes tests.
la source
0
sur un seul cœur avec un Opteron 4170 HE, mais revient4
sur une boîte à huit cœurs avec un Opteron 3280. ... une partie de moi souhaite vraiment que cette monoplace fonctionne!Pas ma page Web, mais cette commande de http://www.ixbrian.com/blog/?p=64&cm_mc_uid=89402252817914508279022&cm_mc_sid_50200000=1450827902 fonctionne bien pour moi sur centos. Il montrera les processeurs réels même lorsque l'hyperthreading est activé.
cat /proc/cpuinfo | egrep "core id|physical id" | tr -d "\n" | sed s/physical/\\nphysical/g | grep -v ^$ | sort | uniq | wc -l
la source
Compter "core id" par la méthode "physical id" en utilisant awk avec repli sur "processor" count si "core id" n'est pas disponible (comme framboise)
la source
Cela a bien fonctionné. Quand j'ai essayé la première réponse, j'ai eu 3 processeurs en sortie. Je sais que j'ai 4 processeurs sur le système, donc je viens de faire un
grep
processeur et la sortie ressemblait à ceci:la source
Donne moi
Quel est le nombre de prises correct - en recherchant le
E5-2667
me dit que chaque prise a8 cores
, alors multipliez et finissez avec à16 cores
travers2 sockets
.Où
lscpu
me donner20 CPUs
- ce qui est totalement incorrect - je ne sais pas pourquoi. (il en va de mêmecat /proc/cpu
- finit par20
.la source
Plus rapide, sans fourche
Ce travail avec presque tous coquille.
Afin de rester compatible avec coquille, tiret, occupéet d'autres, j'ai utilisé
ncore=$((ncore+1))
au lieu de((ncore++))
.frapper version
la source
Si vous pouvez utiliser Python, le
numexpr
module a une fonction pour cela:aussi ceci:
Pour interroger ces informations à partir de l'invite de commande, utilisez:
Ou tout simplement il est possible d'obtenir ces informations à partir de la
multiprocessing.cpu_count()
fonctionOu encore plus simplement utiliser
os.cpu_count()
la source
cpu_count
est incorrect, il ne renvoie pas le nombre de cœurs mais simplement le nombre d'hyperthreads sur les processeurs IntelSi vous voulez simplement compter les cœurs physiques, cette commande l'a fait pour moi.
Assez basique, mais semble compter les cœurs physiques réels, ignorant le nombre logique
la source
Python 3 fournit également quelques moyens simples pour l'obtenir:
4
4
la source
Utilisez la requête ci-dessous pour obtenir les détails de base
la source
Résumé: pour obtenir des CPU physiques, procédez comme suit :
pour obtenir des CPU physiques et logiques, procédez comme suit:
/proc
<< c'est la source d'or de toutes les informations dont vous avez besoin sur les processus et/proc/cpuinfo
<< est la source d'or de toute information CPU.la source