GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué top muestra una cantidad diferente de núcleos que cpuinfo?

El X5560 es un único chip . Se ve así:

grep "physical id" le dice que tiene UN procesador físico instalado.

Si quita el disipador de calor de la parte superior, puede ver esto:un solo muere físico (boca abajo) :

Si pudieras quitar ese dado y darle la vuelta, se vería así:

En ese único troquel físico hay cuatro núcleos de CPU físicos construido sobre el silicio :

grep "cpu cores" le dice que su procesador tiene cuatro núcleos físicos incorporados.

Cada núcleo es un solo procesador con una unidad de punto flotante, varias unidades de ejecución de enteros, un par de pilas de registros y alguna otra magia que permite que cada núcleo único ejecute de manera efectiva dos flujos de instrucciones independientes (hilos) a la vez.

top le dice que todos los procesadores y núcleos de su computadora, colectivamente, pueden ejecutar ocho flujos de trabajo independientes a la vez; le dice que el sistema operativo puede programar ocho subprocesos simultáneos para ejecutarse en cualquier momento.


¿Qué CPU estás usando? ¿Cuántos subprocesos hay por núcleo físico?

cat /proc/cpuinfo muestra el número de núcleos físicos mientras que top muestra el número total de hilos presentes.

Creo que su CPU tiene 4 núcleos físicos y 2 núcleos lógicos por núcleo físico. Entonces es top mostrando 8.

Además contenidos de /proc/cpuinfo es algo dependiente de la implementación. Al igual que en el shell de Android rooteado, el cpuinfo el archivo no contiene ningún término cpu cores .

Sin embargo en cpuinfo cada hilo se llama processor : X , donde X es el hilo no. Entonces, el último hilo no será el mismo que top/htop salida.

Resultado de nproc --all también será consistente con top/htop


top muestra una "CPU" por CPU lógica; en x86, ese es el producto de la cantidad de sockets en el sistema, por la cantidad de núcleos físicos por socket, por la cantidad de subprocesos por núcleo.

El cpu cores entrada en /proc/cpuinfo , nuevamente en x86, muestra la cantidad de núcleos físicos. Para encontrar el número de núcleos lógicos, como se usa en top , deberías mirar el siblings valor en su lugar:

cat /proc/cpuinfo | grep "siblings" | uniq

Esto se describe en detalle en la documentación del kernel.

lscpu proporciona información sobre las CPU instaladas que es más fácil de entender que /proc/cpuinfo (o más bien, presenta la misma información de una manera más simple).


Linux
  1. ¿Por qué Ls -l produce un tamaño diferente de Ls -s?

  2. ¿Por qué un Lun World Wide ID comienza con el número 3 en Linux dm-multipath?

  3. ¿Por qué rand() repite números con mucha más frecuencia en Linux que en Mac?

  4. ¿Por qué el comando free y dmidecode muestran valores diferentes para la RAM?

  5. ¿Por qué Linux usa una partición de intercambio en lugar de un archivo?

Las 10 razones principales por las que usar Linux

¿Por qué el medidor Htop muestra>90 % mientras que la tabla es 0,0 %?

¿Por qué YaST ahora muestra líneas como lqqqqqqqqqqqqqqq?

¿Por qué yum updateinfo no muestra todas las actualizaciones?

¿Por qué mi sistema muestra solo 3,2 GiB de RAM cuando definitivamente tengo 4,0 GiB?

¿Por qué dd de /dev/random da diferentes tamaños de archivo?