J'exécute la commande suivante pour obtenir le nombre de processeurs / cœurs sous Linux:
cat /proc/cpuinfo | grep processor | wc -l
Cela fonctionne mais cela n'a pas l'air élégant. Comment suggérez-vous l'améliorer?
linux
bash
command-line
Michael
la source
la source
Réponses:
nproc
est ce que vous recherchez.Plus ici: http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/
la source
nproc
est là sur ma VM ubuntu, mais pas sur ma machine basée sur RedHat 5.5.nproc --all
pour toutes les unités de traitement installées. Sans--all
,nproc
affiche uniquement les unités de traitement disponibles pour le processus en cours. Lisez la page de manuel pour plus de détails. MMV.L'outil le plus simple est fourni avec la glibc et s'appelle
getconf
:la source
nproc
, cela fonctionne (par défaut) sur mac os x._NPROCESSORS_ONLN
(ou tout autre élément avec cpu, proc, etc.) est répertorié dans sa sortie. J'espérais que comme c'est un outil posix, il fonctionnerait sous Linux / Solaris, donc je n'ai pas eu à utiliser le branchement.Je pense que la méthode que vous donnez est la plus portable sur Linux. Au lieu de générer des processus
cat
et deswc
processus inutiles , vous pouvez le raccourcir un peu:la source
Si vous voulez faire cela pour que cela fonctionne sous Linux et OS X, vous pouvez faire:
la source
psrinfo -p
placeSur les noyaux plus récents, vous pouvez également utiliser l'
/sys/devices/system/cpu/
interface pour obtenir un peu plus d'informations:Voir la documentation officielle pour plus d'informations sur ce que tout cela signifie.
la source
online
fichier, plus simple que ce que fait nproc)Quand quelqu'un demande "le nombre de processeurs / cœurs", 2 réponses sont demandées. Le nombre de "processeurs" serait le nombre physique installé dans les sockets sur la machine.
Le nombre de "cœurs" serait constitué de cœurs physiques. Les cœurs hyperthreads (virtuels) ne seraient pas inclus (du moins à mon avis). En tant que personne qui écrit beaucoup de programmes avec des pools de threads, vous devez vraiment connaître le nombre de cœurs physiques par rapport aux cœurs / hyperthreads. Cela dit, vous pouvez modifier le script suivant pour obtenir les réponses dont vous avez besoin.
Le résultat sur une machine avec 2 modèles de processeurs physiques Xeon X5650 chacun avec 6 cœurs physiques prenant également en charge l'hyperthreading:
Sur une machine avec 2 processeurs mdeol Xeon E5472 chacun avec 4 cœurs physiques qui ne prend pas en charge l'hyperthreading
la source
La
lscpu(1)
commande fournie par le projet util-linux peut également être utile:la source
Ceci est pour ceux qui veulent un moyen portable de compter les cœurs de processeur sur * bsd, * nix ou solaris (pas testé sur aix et hp-ux mais devrait fonctionner). Cela a toujours fonctionné pour moi.
solaris
grep
&egrep
don't have-o
option sosed
est utilisé à la place.la source
Un autre one-liner, sans compter les noyaux hyper-threadés :
la source
Si vous avez besoin d'une méthode indépendante du système d'exploitation, fonctionne sous Windows et Linux. Utilisez python
la source