21 noviembre, 2024

Cómo saber cuántos procesadores y núcleos tiene una máquina Linux

13/03/2012

El método más sencillo para saber el número de procesadores presentes en una máquina Linux es el siguiente:

~$ nproc --all
8

Otra forma de obtener el mismo
resultado, el cual también nos permite obtener información adicional
sobre nuestro procesador es el comando lscpu:

~$ lscpu | grep 'CPU(s)'
CPU(s):                8
On-line CPU(s) list:   0-7
NUMA node0 CPU(s):     0-7

O también podemos examinar el fichero cpuinfo del sistema de ficheros /proc:

~$ grep processor /proc/cpuinfo | wc -l
8

Podemos encontrar numerosos detalles adicionales sobre nuestros procesadores en /proc/cpuinfo, entre ellos el modelo de CPU y el número de núcleos o cores que tiene:

~$ cat /proc/cpuinfo | grep "model name"
model name : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
model name : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
~$ cat /proc/cpuinfo | grep "cpu cores"
cpu cores : 4
cpu cores : 4

Como puedes ver, la máquina del ejemplo tiene 2 procesadores con 4 cores cada uno.

Lectura recomendada:
  Diferencias entre CPU física, CPU lógica, Core/Núcleo, Thread/Hilo y Socket

Debido a la tecnología HyperThreading y otras mejoras de los procesadores podemos necesitar diferenciar entre CPUs físicas y lógicas:

# Obtener el número de cpus/cores físicos:
~$ lscpu -p | egrep -v '^#' | wc -l
4

# Obtener el número de cpus lógicas (incluyendo aquellos cores con HT):
~$ lscpu -p | egrep -v '^#' | sort -u -t, -k 2,4 | wc -l
8

El equivalente de los anterior para Mac OS X:

# Obtener el número de cpus/cores físicos:
~$ sysctl -n hw.physicalcpu_max
4

# Obtener el número de cpus lógicas (incluyendo aquellos cores con HT):
~$ sysctl -n hw.logicalcpu_max
8

Otro método portable que funciona en ordenadores antiguos, tanto Linux como Mac OS X, que no tienen disponibles los comandos nproc o lscpu es utilizar el comando getconf:

~$ getconf _NPROCESSORS_ONLN
8

También podemos utilizar herramientas alternativas para obtener información del hardware de nuestra máquina como dmidecode, pero necesitaremos privilegios de root:

~# dmidecode -t 4 | egrep 'Socket Designation|Count'
        Socket Designation: CPUSocket
        Core Count: 8
        Thread Count: 8

Si
de la información anterior se desprende que tenemos una máquina con
varias CPUs o varios núcleos, querremos también asegurarnos de que el
kernel de Linux que corre en dicha máquina tiene soporte multiprocesador
(SMP, Symmetric MultiProcessing):

~# uname -a
Linux sasser 2.6.18-028stab092.1 #1 SMP Wed Jul 20 19:47:12 MSD 2011 i686 GNU/Linux

Fuente: http://www.daniloaz.com/es/como-saber-cuantos-procesadores-y-nucleos-tiene-una-maquina-linux/

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *