Bien sûr, nous soaps que cat /proc/cpuinfo |grep "cpu cores"
donnera une sortie
[root@14:47 ~]# cat /proc/cpuinfo |grep "cpu cores" cpu cores : 2 cpu cores : 2 cpu cores : 2 cpu cores : 2
Mais en fait, je veux get le nombre total de cœurs de processeur. Je veux que le résultat soit
cpu cores: 8
Comment puis-je get un tel résultat?
Si vous êtes uniquement intéressé par la sum , vous pouvez également utiliser GNU awk:
cat /proc/cpuinfo |grep "cpu cores" | awk -F: '{ num+=$2 } END{ print "cpu cores", num }'
Edit: C'est la bonne réponse à l'intention de l'OP de sumr les numbers de la dernière colonne. Cependant, la question de savoir combien de cœurs (physiques / virtuels) sont sur la machine est donnée dans les autres réponses à la question.
Dans Terminal nproc
, OP: nombre total de cœurs de processeur
Essaye ça,
Selon l' man lscpu
CORE The logical core number. A core can contain several CPUs. SOCKET The logical socket number. A socket can contain several cores.
cores
ainsi que les sockets
sont physiques où en tant que CPU(s)
sont des nombres logiques. Donc, pour find le nombre de cœurs de votre système, faites le number of cores x number of sockets
Un exemple de sortie de lscpu
est le suivant:
Thread(s) per core: 2 Core(s) per socket: 8 Socket(s): 2
Donc le nombre total de cores: 16
Le nombre total de CPU(s): 32
(puisque le nombre de threads
par core
est de 2
)
Comme @Durga l'a mentionné, le nproc
donne le nombre total de CPUs
.
Pour plus d'informations, reportez-vous à cette réponse , pour get l'interprétation de /proc/cpuinfo
référez – vous à cette
J'aimerais remercier @ Kusalananda pour m'avoir aidé à comprendre la même chose .
Le nombre de kernelx physiques :
> cat /proc/cpuinfo | grep -m 1 "cpu cores" cpu cores : 2
Le nombre de kernelx virtuels (par exemple 2x nombre de kernelx physiques avec hyper threading):
> cat /proc/cpuinfo | grep -c "cpu cores" 4
Si vous avez plus d'un processeur / processeur (en ce sens ) sur votre carte mère, cela ne fonctionne pas correctement. Voir la section "Plusieurs processeurs par carte mère". Cela peut être le cas si vous travaillez sur un cluster de calcul ou sur un post de travail de bureau haut de gamme à des fins de CAO / d'ingénierie.
La command cat /proc/cpuinfo
doit imprimer le nombre de cœurs physiques dans les lignes cpu cores
. Mais il imprime cette information pour chaque kernel virtuel. Ainsi, si vous voulez avoir le nombre de core physique, il suffit de prendre la première occurrence de la ligne cpu cores
, qui est
> cat /proc/cpuinfo | grep -m 1 "cpu cores" cpu cores : 2
Sinon, si vous searchz le nombre de cœurs virtuels, vous countz le nombre de fois où la ligne cpu cores
est trouvée, ce qui est
> cat /proc/cpuinfo | grep -c "cpu cores" 4
J'ai un Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
(4 kernelx physiques, hyperthreading). Permet de voir ce que je reçois:
> cat /proc/cpuinfo | grep "cpu cores" cpu cores : 4 cpu cores : 4 cpu cores : 4 cpu cores : 4 cpu cores : 4 cpu cores : 4 cpu cores : 4 cpu cores : 4
Nombre de cœurs physiques:
> cat /proc/cpuinfo | grep -m 1 "cpu cores" cpu cores : 4
Nombre de kernelx virtuels:
> cat /proc/cpuinfo | grep -l "cpu cores" 8
Vous pouvez également prendre le dernier numéro de processeur trouvé et l'incrémenter d'un
> cat /proc/cpuinfo | grep "processor" | tail -1 processor : 7 # +1
Je viens de regarder sur un nœud d'un cluster de calcul, sur lequel je travaille actuellement: 1 nœud a 4 processeurs (Intel Xeon) avec chacun 8 cœurs physiques; chaque unité centrale prend en charge hyptherthreading; par conséquent, chaque CPU a 16 cœurs virtuels; en le résumant, le seul noeud a 32 kernelx physiques et 64 kernelx virtuels;
cat /proc/cpuinfo
imprime des informations pour chaque kernel virtuel. Ainsi, nous obtenons 64 «packages» d'informations. Si nous avons une telle configuration, nous devons considérer l' physical id
ligne dans cat /proc/cpuinfo
.
C'est la sortie que je reçois:
> cat /proc/cpuinfo | grep -m 1 "cpu cores" cpu cores : 8 > cat /proc/cpuinfo | grep -c "cpu cores" 64 > cat /proc/cpuinfo | grep "physical id" | tail -1 physical id : 3 # this result +1 => number of CPUs
Ainsi, «nombre derrière les cpu cores
» x «nombre derrière physical id
+ 1» est le nombre de kernelx physiques un nœud (8 x (3 + 1)). Le 64 est le nombre de kernelx virtuels.
Puisque tout le monde utilise les cœurs, le processeur et le processeur dans un autre context, j'introduis une nomenclature pour ma réponse ici:
__Exemple: __
Les données:
Si vous avez la glibc et un kernel raisonnablement récent, vous pouvez utiliser
getconf _NPROCESSORS_ONLN
pour renvoyer le nombre de processeurs actuellement en ligne . Cela inclut les processeurs virtuels et hyper-thread.
1 Sur la plupart des systèmes qui seront identiques au nombre de processeurs globaux . Les systèmes qui ont un ou plusieurs processeurs désactivés pour une raison quelconque (par exemple parce qu'ils sont défectueux ou en raison de ressortingctions artificielles comme le matériel loué / sous licence) ou les systèmes qui prennent en charge les processeurs «hot-plug» ont été ajoutés mais pas encore activés.