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

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

Когда я запускаю top, я показываю CPU 0-7. Когда я делаю:

cat /proc/cpuinfo | grep "cpu cores" | uniq

Я получил:

cpu cores : 4

Если я выполню grep по запросу «physical id», то получу 1.

Я думаю, что моя команда неверна, а top правильный. Это не виртуальная машина, а физический сервер, RedHat. Что я делаю не так?

Я не уверен, что эти ответы на этот вопрос:

Как узнать количество ядер системы в Linux?

Количество процессоров в /proc/cpuinfo

Редактировать: Правильно ли я понимаю, что физический идентификатор, если он показывает только 1, значит, на материнской плате один физический чип?

Редактировать: Это процессор Intel(R) Xeon(R) X5560 с тактовой частотой 2,80 ГГц, но его физический идентификатор равен 1, а я думал, что он будет равен 0, но в cpuinfo физического идентификатора 0 нет.

Редактировать: Если это имеет значение, я пытаюсь выяснить, где можно лицензировать .5 количества ядер.

решение1

X5560 — это одинчип. Выглядит это так:

введите описание изображения здесь

grep "physical id"говорит вам, что у вас установлен ОДИН физический процессор.

Если снять теплораспределитель сверху, то можно увидеть это — единый физическийумереть(лицом вниз) :

введите описание изображения здесь

Если бы вы могли вынуть этот кубик и перевернуть его, он бы выглядел так:

введите описание изображения здесь

На этом единственном физическом кубике есть четырефизические ядра ЦПпостроено на кремнии:

введите описание изображения здесь

grep "cpu cores"говорит вам, что в вашем процессоре четыре физических ядра.

Каждое ядро ​​представляет собой отдельный процессор с блоком операций с плавающей запятой, несколькими блоками целочисленного исполнения, парой стеков регистров и некоторыми другими волшебными механизмами, которые позволяют каждому ядру эффективно выполнять два независимых потока инструкций (потока) одновременно.

введите описание изображения здесь

topговорит вам, что все процессоры и ядра на вашем компьютере в совокупности могут выполнять восемь независимых рабочих процессов одновременно, то есть операционная система способна планировать выполнение восьми одновременных потоков в любой момент времени.

решение2

Какой процессор вы используете? Сколько потоков приходится на одно физическое ядро?

cat /proc/cpuinfoпоказывает количество физических ядер, а также topобщее количество присутствующих потоков.

Я думаю, что ваш процессор имеет 4 физических ядра и 2 логических ядра на каждое физическое ядро. Поэтому он topпоказывает 8.

Более того, содержимое /proc/cpuinfoнесколько зависит от реализации. Как и в рутированной оболочке Android, cpuinfoфайл не содержит никаких терминов cpu cores.

Однако в cpuinfoкаждом потоке есть имя processor : X, где Xномер потока. Таким образом, номер последнего потока должен быть таким же, как и top/htopвыход.

Результат nproc --allтакже должен соответствоватьtop/htop

решение3

topпоказывает один «ЦП» на логический ЦП; на x86 это произведение количества сокетов в системе на количество физических ядер на сокет и на количество потоков на ядро.

Запись cpu coresв /proc/cpuinfo, снова на x86, показывает количество физических ядер. Чтобы найти количество логических ядер, как используется в top, вам следует посмотреть на siblingsзначение:

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

Это подробно описано вдокументация ядра.

lscpuпредоставляет информацию об установленных процессорах, которую легче понять /proc/cpuinfo(или, скорее, представляет ту же информацию в более простой форме).

решение4

cpuinfo показывает фактические ядра, в то время как htop/top показывает как ядра, так и потоки. У вас, скорее всего, 4 ядра и 4 потока, вот почему.

Связанный контент