Ich führe den folgenden Befehl aus, um die Anzahl der Prozessoren / Kerne unter Linux abzurufen:
cat /proc/cpuinfo | grep processor | wc -l
Es funktioniert, sieht aber nicht elegant aus. Wie würden Sie vorschlagen, es zu verbessern?
linux
bash
command-line
Michael
quelle
quelle
Antworten:
nproc
ist was Sie suchen.Mehr hier: http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/
quelle
nproc
befindet sich auf meiner Ubuntu-VM, jedoch nicht auf meinem RedHat 5.5-basierten Computer.nproc --all
für alle installierten Verarbeitungseinheiten. Ohne--all
werdennproc
nur Verarbeitungseinheiten angezeigt, die für den aktuellen Prozess verfügbar sind. Lesen Sie die Manpage für weitere Details. MMV.Das einfachste Tool wird mit glibc geliefert und heißt
getconf
:quelle
nproc
dazu funktioniert dies (standardmäßig) auf Mac OS X._NPROCESSORS_ONLN
(oder irgendetwas mit CPU, Proc usw.), ist es leider in seiner Ausgabe aufgeführt. Ich hatte gehofft, da es sich um ein Posix-Tool handelt, das unter Linux / Solaris funktioniert, musste ich keine Verzweigung verwenden.Ich denke, die Methode, die Sie angeben, ist unter Linux die portabelste. Anstatt unnötiges Laichen
cat
undwc
Prozesse zu erzeugen, können Sie es ein wenig verkürzen:quelle
Wenn Sie dies tun möchten, damit es unter Linux und OS X funktioniert, können Sie Folgendes tun:
quelle
psrinfo -p
stattdessenBei neueren Kerneln können Sie möglicherweise auch die
/sys/devices/system/cpu/
Schnittstelle verwenden, um weitere Informationen zu erhalten:Weitere Informationen dazu, was all dies bedeutet, finden Sie in den offiziellen Dokumenten .
quelle
online
Datei, einfacher als das, was nproc tut)Wenn jemand nach "der Anzahl der Prozessoren / Kerne" fragt, werden 2 Antworten angefordert. Die Anzahl der "Prozessoren" entspricht der physischen Anzahl, die in den Sockeln des Computers installiert ist.
Die Anzahl der "Kerne" wäre physikalische Kerne. Hyperthreaded (virtuelle) Kerne wären nicht enthalten (zumindest meiner Meinung nach). Als jemand, der viele Programme mit Thread-Pools schreibt, müssen Sie wirklich die Anzahl der physischen Kerne im Vergleich zu Kernen / Hyperthreads kennen. Sie können jedoch das folgende Skript ändern, um die gewünschten Antworten zu erhalten.
Das Ergebnis auf einer Maschine mit 2 physischen Xeon X5650-Prozessoren des Modells mit jeweils 6 physischen Kernen, die auch Hyperthreading unterstützen:
Auf einem Computer mit 2 mdeol Xeon E5472-Prozessoren mit jeweils 4 physischen Kernen, die kein Hyperthreading unterstützen
quelle
Der
lscpu(1)
vom util-linux- Projekt bereitgestellte Befehl kann auch nützlich sein:quelle
Dies ist für diejenigen gedacht, die auf tragbare Weise CPU-Kerne auf * bsd, * nix oder solaris zählen möchten (haben nicht auf aix und hp-ux getestet, sollten aber funktionieren). Es hat immer für mich funktioniert.
Solaris
grep
&egrep
keine-o
Option haben,sed
wird stattdessen verwendet.quelle
Ein weiterer Ein-liner, ohne Zählen hyperGewindeKerne :
quelle
Wenn Sie eine os-unabhängige Methode benötigen, funktioniert sie unter Windows und Linux. Verwenden Sie Python
quelle