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
Error: Your Requested widget " ai_widget-6" is not in the widget list.
- [do_widget_area above-nav-left]
- [do_widget_area above-nav-right]
- [do_widget_area footer-1]
- [do_widget id="wpp-4"]
- [do_widget_area footer-2]
- [do_widget id="recent-posts-4"]
- [do_widget_area footer-3]
- [do_widget id="recent-comments-3"]
- [do_widget_area footer-4]
- [do_widget id="archives-4"]
- [do_widget_area logo-bar]
- [do_widget id="oxywidgetwpml-3"]
- [do_widget_area menu-bar]
- [do_widget id="search-3"]
- [do_widget_area sidebar]
- [do_widget id="search-4"]
- [do_widget id="ai_widget-2"]
- [do_widget id="categories-5"]
- [do_widget id="ai_widget-3"]
- [do_widget id="ai_widget-4"]
- [do_widget id="ai_widget-5"]
- [do_widget_area sub-footer-1]
- [do_widget id="text-4"]
- [do_widget_area sub-footer-2]
- [do_widget_area sub-footer-3]
- [do_widget_area sub-footer-4]
- [do_widget_area upper-footer-1]
- [do_widget id="search-2"]
- [do_widget id="recent-posts-2"]
- [do_widget id="recent-comments-2"]
- [do_widget id="archives-2"]
- [do_widget id="categories-2"]
- [do_widget id="meta-2"]
- [do_widget_area upper-footer-2]
- [do_widget_area upper-footer-3]
- [do_widget_area upper-footer-4]
- [do_widget_area widgets_for_shortcodes]
- [do_widget id="search-5"]
- [do_widget id="ai_widget-6"]
- [do_widget_area wp_inactive_widgets]
- [do_widget id="wpp-2"]
- [do_widget id="text-1"]
- [do_widget id="recent-posts-3"]
- [do_widget id="categories-3"]
- [do_widget id="archives-3"]
- [do_widget id="icl_lang_sel_widget-3"]
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
26 comentarios
Unirte a la conversaciónJuan Alberto - 30/08/2015
Gracias por compartir el conocimiento, me fue de mucha ayuda
jesica - 14/03/2016
buenas tardes quisiera saber cuanta memoria,procesadores y bancos de memoria necesita la virtualizacion de 6 maquinas como:
manejo de correo
bases de datos
seguridad perimetral
administrar
haga backup
haga root
Daniel - 05/05/2016
Lo siento Jesica, no se puede dimensionar una máquina sin saber muchos más detalles: ¿cuántas bases de datos tendrá el servidor de bases de datos? ¿Qué tamaño tendrán cada una de ellas? ¿Cuántos usuarios simultáneos accederán? ¿Cuántos dominios de correo tendrá que manejar el servidor de correo? ¿Cuántos buzones tendrá cada dominio? ¿Cuál es el tamaño, la cantidad y frecuencia de los backups que necesitas realizar? Etc., etc., etc. Te recomiendo que utilices un servicio de cloud computing como Amazon Web Services (AWS) o similar, de forma que puedas ir dimensionando cada uno de tus servicios bajo demanda.
Bill - 23/06/2016
Estimado, Tengo esta maquina
Linux SR5S2 2.6.16.60-0.103.1-smp #1 SMP Thu May 16 19:52:34 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux –
Y quisiera saber:
1.- Comando para saber CPUs virtuales tengo (si los hay)
La cantidad de CPU fisicos los se por comando «grep -i processor /proc/cpuinfo | wc -l»
Gracias de antemano por tu apoyo
Bill
Daniel - 27/06/2016
Hola Bill, si tu máquina es virtual la ejecución de ese comando te dirá el nº de CPU’s virtuales o vCPU que tiene asignada dicha máquina virtual, que puede coincidir o no con el nº de CPU’s físicas que tiene la máquina host. En cualquier caso, desde la máquina virtual no puedes saber ese número, desde ella no se puede distinguir si son vCPUs o no, para ella es como si fueran físicas. Eso tendrías que consultarlo en la máquina host que contiene a la máquina virtual.
Diana - 28/07/2016
Buenas tardes.. una pregunta.
Hago un INSERT a la base pero al momento que lo ejecuto mi maquina tiene 4 procesadores 8 nucleos entonces lo que quiero es que la consulta se vaya a los 4 micro para que los 8 nucleos los procese. Como lo haria?
Daniel - 29/07/2016
Diana, creo que para que un único INSERT se puede dividir entre varios cores tienes que activar la opción de multithreading en tu base de datos (si no la trae activada ya por defecto), y debes particionar las tablas implicadas. En cualquier caso, depende del motor de base de datos que utilices. Aquí te dejo algunos enlaces que te pueden resultar interesantes:
– https://www.percona.com/blog/2014/05/01/parallel-query-mysql-shard-query/
– http://docs.oracle.com/cd/A87860_01/doc/server.817/a76965/c22paral.htm
– http://dba.stackexchange.com/questions/64657/does-sql-server-allow-inserts-into-tables-and-indexes-to-be-written-in-parallel
Dark ange - 19/10/2016
Hola
Yo necesito algo parecido pero que todos los procesos sean divididos en los nucleos de mu computador
Daniel - 19/10/2016
A menos que el software esté específicamente diseñado para ello, normalmente un proceso no puede correr en más de un núcleo al mismo tiempo, por lo que entiendo entonces que te refieres a que tu aplicación está diseñada para levantar varios procesos y que estos se coordinen entre sí para llevar a cabo una tarea concurrentemente y de forma colaborativa, o para que cada uno realice su tarea de forma independiente. Si es así no tienes que hacer nada especial. El sistema operativo se encargará por si mismo de planificar la ejecución de la forma más eficiente posible usando todos los núcleos que tenga a su disposición. Sí es posible que tengas que decirle a tu aplicación a través de un fichero de configuración cuántos procesos quieres que se levanten en función del número de núcleos de tu máquina, como por ejemplo en la configuración de Nginx:
worker_processes 4; # 2 * Number of CPUs
sebastian - 11/08/2016
como se cuantos procesadores consume mi instancia de base de datos
Daniel - 11/08/2016
Depende del motor de base de datos que utilices, aunque en este enlace puedes encontrar varios métodos para tratar de saberlo a nivel de procesos del sistema operativo: http://ask.xmodulo.com/cpu-core-process-is-running.html.
Berto - 09/09/2016
Buenas, como puedo saber la capacidad disponible a nivel de cores y memoria? Un saludo.
Daniel - 19/10/2016
Berto, la información sobre la carga de la máquina (load average) que proporciona el comando uptime o top facilita esta información. A grandes rasgos lo ideal es que la carga no supere 1 punto por cada core disponible. Es decir, una máquina con 4 cores que esté trabajando a una carga de 4.00 estaría al 100% de su capacidad a nivel de CPU. Por encima de ese número la máquina tendría una carga mayor a la que puede asumir y tendrás problemas. Por debajo de ese nivel tendrías parte de su capacidad de procesamiento desocupada (idle).
La capacidad de memoria la puedes conocer con el comando free -h o con el comando top.
George - 23/11/2016
Buenas Tardes,
quisiera saber con que comando puedo ver el numero de procesadores fisicos y logicos en una plataforma VMware ESXi, ya que con el comando «»grep -i processor /proc/cpuinfo | wc -l»»
me arroja el numero 32.
gracias de antemano.
Julio Cesar Díaz - 04/01/2017
Esos datos los puedes ver directamente desde tu administrador vCenter o con el cliente vSphere por supuesto con un usuario que tenga los privilegios suficientes, ahí te da toda la información que requieres, CPU físicos y virtuales, memoria total, almacenamientos, etc. siempre y cuando este bien conformado el cluster de servidores con el licenciamiento de VMware. Saludos.
Juan Manuel - 10/03/2017
Hola.
Con las instrucciones que das puedo ver los CPU’s físicos y los CORES de cada CPU, pero no se cómo puedo los THREADS por cada CORE. ¿Esto es posible en Linux?
Gracias de antemano por tu atención.
Daniel - 23/05/2017
Sí, es posible. He ampliado el artículo para explicar mejor cómo hacer esto.
Tati - 15/05/2018
Hola chico cuando hice el lscpu me salio algo curioso la arquitectura es de i686
Com es posible 64 bit si es de 32?
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
cat /proc/cpuinfo | grep «model name»
model name : Intel(R) Celeron(R) CPU
model name : Intel(R) Celeron(R) CPU
model name : Intel(R) Celeron(R) CPU
model name : Intel(R) Celeron(R) CPU …
cat /proc/cpuinfo | grep «cpu cores»
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
Socket Designation: CPU 1
Core Count: 4
Thread Count: 1
Daniel - 15/05/2018
Probablemente en tu máquina está corriendo un Kernel de Linux de 32 bits aunque tu procesador sea de 64 bits.
Manuel - 12/09/2018
Hola, en un Oracle Linux ejecuto el comando «dmidecode» y me arroja que tiene 2 socket, cada uno con 12 Core. Sin embargo, si le hago un «grep processor» me indica 48.
dmidecode -t 4 | egrep ‘Socket Designation|Count’
Socket Designation: P0
Core Count: 12
Thread Count: 24
Socket Designation: P1
Core Count: 12
Thread Count: 24
cat /proc/cpuinfo | grep «cpu cores» |wc -l
48
grep processor /proc/cpuinfo | wc -l
48
Daniel - 12/09/2018
Tus procesadores tienen HyperThreading. Echa un vistazo a la lectura recomendada que pongo en el artículo: https://www.daniloaz.com/es/diferencias-entre-cpu-fisica-cpu-logica-core-nucleo-thread-hilo-y-socket/
Marcos - 27/03/2019
Hola
Mande un job con el siguiente script:
#PBS -N Name
#PBS -l nodes=1:ppn=40
#PBS -l mem=20gb
cd $PBS_O_WORKDIR
pero al momento de visualizar el numero de procesadores en uso, solo esta en uso 1 al 100%. Como hago para que trabaje con todos los procesadores que se indique.
Daniel - 27/03/2019
Hola Marcos, supongo que te refieres al PBS job scheduler de ARC. Si es así creo que tienes que especificar el número de procesos a ejecutar en cada nodo con mpiprocs=16, por ejemplo, para aprovechar los 16 cores que tiene cada nodo de un cluster arcus-b.
Gustavo Abarca - 20/08/2020
Buenas noches quisiera saber que comando puedo usar para ver el consumo(%) por cada core de memoria .
eje:
core memoria
00 371695616
01 373268480
Daniel - 14/10/2020
Hola Gustavo, un core no consume memoria, la consumen los procesos que corren en cada momento en dicho core.
Arturo - 24/02/2023
Tenemos un Servidor con Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz, 64 cores donde esta configurado un SMB al que se conectan 25 usuarios simultaneos y trabajan archivos de diseño como Indd ps y ai desde sus iMacs…
En ocaciones se saturan lo valores de CPU load averages y se vuelve un fastidio que puedan abir o guardar archivos. los valores con un funcionamiento percibido como optimo para los users es de
0.60 (1 min) 1.63 (5 mins) 2.88 (15 mins)
pero cuando tenemos una carga de llamadas y nadie puede trabajar y el sistema pasa a valores que llegan a esto
10.53 (1 min) 11.56 (5 mins) 8.16 (15 mins)
Alguna idea de como podemos asignar recursos para bajar el estres en la carga cuando ocurre esto.
de antemano muchas gracias