Estoy ejecutando el siguiente comando para obtener la cantidad de procesadores / núcleos en Linux:
cat /proc/cpuinfo | grep processor | wc -l
Funciona pero no parece elegante. ¿Cómo sugeriría mejorarlo?
linux
bash
command-line
Miguel
fuente
fuente
Respuestas:
nproc
es lo que buscas.Más aquí: http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/
fuente
nproc
está en mi máquina virtual ubuntu, pero no en mi máquina basada en RedHat 5.5.nproc --all
de todas las unidades de procesamiento instaladas. Sin--all
,nproc
solo muestra las Unidades de procesamiento disponibles para el proceso actual. Lea la página del manual para obtener más detalles. MMV.La herramienta más simple viene con glibc y se llama
getconf
:fuente
nproc
esto, esto funciona (por defecto) en mac os x._NPROCESSORS_ONLN
(o cualquier cosa con cpu, proc, etc.) aparece en su salida. Tenía la esperanza de que, dado que es una herramienta posix, funcionaría en Linux / Solaris para no tener que usar la ramificación.Creo que el método que das es el más portátil en Linux. En lugar de desove innecesaria
cat
ywc
procesos, se puede acortar un poco:fuente
Si desea hacer esto para que funcione en Linux y OS X, puede hacer:
fuente
psrinfo -p
en su lugarEn los núcleos más nuevos, también podría usar la
/sys/devices/system/cpu/
interfaz para obtener un poco más de información:Consulte los documentos oficiales para obtener más información sobre lo que significan todos estos.
fuente
online
archivo, más simple que lo que hace nproc)Cuando alguien pregunta "el número de procesadores / núcleos", se solicitan 2 respuestas. El número de "procesadores" sería el número físico instalado en los zócalos de la máquina.
El número de "núcleos" sería núcleos físicos. Los núcleos (virtuales) con hiperproceso no se incluirían (al menos en mi opinión). Como alguien que escribe muchos programas con grupos de subprocesos, realmente necesita saber el recuento de núcleos físicos frente a núcleos / hyperthreads. Dicho esto, puede modificar el siguiente script para obtener las respuestas que necesita.
El resultado en una máquina con 2 procesadores físicos modelo Xeon X5650, cada uno con 6 núcleos físicos que también admiten hyperthreading:
En una máquina con 2 procesadores mdeol Xeon E5472 cada uno con 4 núcleos físicos que no admiten hyperthreading
fuente
El
lscpu(1)
comando proporcionado por el proyecto util-linux también puede ser útil:fuente
Esto es para aquellos que desean una forma portátil de contar núcleos de CPU en * bsd, * nix o solaris (no lo he probado en aix y hp-ux, pero debería funcionar). Siempre me ha funcionado.
solaris
grep
yegrep
no tienen-o
opción, por lo quesed
se usa en su lugar.fuente
Otro one-liner, sin contar los núcleos hiperprocesados :
fuente
Si necesita un método independiente del sistema operativo, funciona en Windows y Linux. Usa Python
fuente