Почему top показывает другое количество ядер, чем cpuinfo?

Начнем с того, что *.foo-файла нет. Что делает make, так это ищет, как сделать *.fooбуквально, и первое правило делает это. Make расширяет $<до первого пререквизита -(*.bar, которым в данном случае является b.bar). Затем Make запускает команду оболочки cp b.bar *.foo. Поскольку *.foo отсутствует, оболочка буквально расширяет его до cp b.bar *.foo. Вот как вы получаете файл *.foo.

Вы можете проверить это, запустив make -d test.

Вы можете получить желаемый эффект, создав список целей на основе списка предварительных требований.

TARGETS = $(patsubst %.bar,%.foo,$(wildcard *.bar))
%.foo: %.bar
    @cp $< $@
test: $(TARGETS)
    @echo $(TARGETS)
    echo *.foo
7
21.11.2017, 23:16
5 ответов

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

cat /proc/cpuinfomuestra el número de núcleos físicos, mientras que topmuestra el número total de subprocesos presentes.

Creo que su CPU tiene 4 núcleos físicos y 2 núcleos lógicos por núcleo físico. Así que topmuestra 8.

Además, el contenido de /proc/cpuinfodepende en cierta medida de la implementación. Al igual que en el shell de Android rooteado, el archivo cpuinfono contiene ningún término cpu cores.

Sin embargo, en cpuinfocada subproceso se nombra como processor : X, donde Xes el subproceso no. Entonces, el último hilo no será el mismo que la salida top/htop.

El resultado de nproc --alltambién será consistente contop/htop

14
27.01.2020, 20:13

cpuinfo muestra los núcleos reales, mientras que htop/top muestra tanto los núcleos como los subprocesos como núcleos. Lo más probable es que tenga 4 núcleos y 4 subprocesos, por eso.

2
27.01.2020, 20:13

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.

La entrada cpu coresen /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, debe mirar el valor siblingsen lugar de:

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

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

lscpuproporciona información sobre la CPU instalada (s )que es más fácil de entender que/proc/cpuinfo(o mejor dicho, presenta la misma información de una manera más simple ).

7
27.01.2020, 20:13

Probablemente, tiene una CPU que es una CPU de "cuatro núcleos" y tiene hiperprocesamiento habilitado para que cada núcleo físico se presente al sistema operativo (al kernel )como dos lógicos núcleos, capaz de tener dos subprocesos asignados a ese mismo núcleo físico simultáneamente.

Los términos clave que debe comprender aquí son :CPU, o chip físico, o "morir" (se relaciona con "socket" ); luego, núcleo físico; luego asegúrese de comprender el "proceso" y el "hilo"; luego aclare "hyperthreading" y "núcleo lógico".

Asistí a una charla en LISA 2017 que aclaró todo muy bien; las diapositivas de esa charla están disponibles en línea , aunque por supuesto no ayudarán tanto como la charla real (ya que falta la parte hablada ).

4
27.01.2020, 20:13

El X5560 es un único chip . Se parece a esto:

enter image description here

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

Si quita el disipador de calor de la parte superior, puede ver este -un único dado físico (boca abajo):

enter image description here

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

enter image description here

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

enter image description here

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 efectivamente dos flujos de instrucciones independientes (subprocesos )a la vez.

enter image description here

tople dice que todos los procesadores y núcleos de su computadora, en conjunto, pueden ejecutar ocho flujos de trabajo independientes a la vez. -le dice que el sistema operativo puede programar ocho subprocesos simultáneos para su ejecución en un momento dado.

22
27.01.2020, 20:13

Теги

Похожие вопросы