Linux определяет количество ядер процессора

Обновлено: 01.07.2024

С тех пор как файловая система /proc впервые появилась в системах Unix, получение информации о запущенных процессах стало намного проще. Полезная, но слишком часто недостаточная информация, доступная в выводе команд ps, была полностью отодвинута на задний план /proc, который действует как интерфейс к структурам данных ядра. /proc предоставляет интерфейсы к структурам данных ядра, которые могут предоставить информацию о том, как используется память, какие устройства смонтированы, какие файловые дескрипторы используются и какие аргументы командной строки использовались с запущенными процессами — и это только начало. В системах Linux /proc также содержит информацию о процессорах системы. Он находится в файле cpuinfo.

Чтобы узнать, сколько у вас процессоров, например, просмотрите /proc/cpuinfo на наличие строк, содержащих строку "физический идентификатор". Вы можете получить это с помощью grep, а затем передать эту информацию через пару удобных фильтров, чтобы получить подсчет:

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

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

Если ваши процессоры многоядерные, вам нужно знать, сколько у вас виртуальных процессоров. Вы можете подсчитать их, найдя строки, начинающиеся с «процессор».

Звучит гораздо интереснее! Однако даже это не говорит вам всей истории. У вас может быть больше виртуальных процессоров, чем физических процессоров, потому что ваши процессоры являются многоядерными, потому что ваши процессоры поддерживают многопоточность, или и то, и другое. Чтобы узнать, сколько ядер у вас есть, нужно найти «ядра процессора» в вашем файле /proc/cpuinfo. Эта строка будет отображаться для каждого виртуального процессора. Если отображаемое количество ядер меньше числа виртуальных процессоров, ваша система является многопоточной.

В системе, которую мы рассматривали выше, мы видели два физических процессора, 24 виртуальных процессора и шесть ядер. Если каждый процессор имеет шесть ядер, это все равно будет составлять только двенадцать виртуальных процессоров. Дополнительные двенадцать говорят нам о том, что многопоточность также используется. Другая подсказка — количество «братьев» для каждого виртуального процессора:

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

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

Присоединяйтесь к сообществам Network World на Facebook и LinkedIn, чтобы комментировать самые важные темы.

Сандра Генри-Стокер занимается администрированием систем Unix более 30 лет. Она описывает себя как «USL» (Unix как второй язык), но помнит достаточно английского, чтобы писать книги и покупать продукты. Она живет в горах в Вирджинии, где, когда не работает с Unix и не пишет о ней, отгоняет медведей от своих кормушек для птиц.


Администраторам Linux часто необходимо знать количество ядер при управлении серверами Linux и назначении различных задач нескольким серверам. Первоначально компьютерные системы поставлялись с одноядерными процессорами, но в настоящее время у нас есть многоядерные процессоры для повышения производительности. В этом посте будут представлены многочисленные методы и команды для определения количества ядер в системе Ubuntu 20.04 LTS.

  • С помощью команды lscpu
  • Использование файла «/proc/cpuinfo»
  • Использование команды «nproc»

Способ 1. Определение количества ядер в Ubuntu с помощью команды «lscpu»

Команда lscpu предоставляет всю информацию об архитектуре ЦП.


Приведенная выше команда покажет всю информацию, относящуюся к ЦП, такую ​​как архитектура ЦП, количество ядер ЦП, количество потоков на ядро ​​и т. д.

Чтобы отфильтровать только информацию о ЦП, используйте команду lscpu с командой egrep следующим образом:


Как вы можете видеть на приложенном выше снимке экрана, строки, содержащие строку «ЦП», показаны как выходные данные упомянутой выше команды:

Эта команда «lscpu» собирает всю информацию из файла «/proc/cpuinfo» и sysfs, поэтому это означает, что мы можем напрямую получить информацию о процессоре из файла «/proc/cpuinfo».

Способ 2. Определение количества ядер в Ubuntu с помощью файла «/proc/cpuinfo»

Как следует из названия ‘/proc/cpuinfo’, это файл, содержащий информацию о ЦП, и мы можем легко просмотреть всю информацию этого файла с помощью команды cat:


Из всей этой кучи информации мы можем отфильтровать информацию и получить точное количество ядер, объединив команды cat, grep и wc, как показано в приведенной ниже команде:


Вы видите, он показал только количество ядер.

Способ 3. Определение количества ядер в Ubuntu с помощью команды «nproc»

Вместо использования команды grep для фильтрации количества ядер из файла /proc/cpuinfo существует простая команда nproc для получения только количества ядер:


Как видно из вывода вышеприведенной команды, она также распечатала количество ядер, как мы и хотели.

Заключение

Этот пост содержит три простых, но эффективных метода определения количества ядер и другой информации о ЦП в операционной системе Ubuntu 20.04 LTS. Используя любой из приведенных выше способов, найти количество ядер уже не сложно.

Когда я искал способы ускорить процесс компиляции, мне нужно было знать, сколько ядер ЦП доступно в моей системе Arch Linux. После пары поисков в Google я нашел несколько способов узнать количество процессоров/ядер из командной строки в системах Linux.

Определить количество ядер процессора из командной строки в Linux

Может быть несколько способов узнать количество ядер ЦП в системе. Вот несколько методов, которые я нашел в Интернете.

1. Использование команды "nproc"

nproc — это простая команда Unix для вывода количества процессоров, доступных в вашей системе. Он входит в состав утилит GNU Core, поэтому он предустановлен во всех современных операционных системах Linux.

Чтобы отобразить количество ядер в вашей системе, откройте Терминал и выполните следующую команду:

Как видно из приведенного выше примера, мой процессор 4-ядерного типа.

2. Использование команды "lscpu"

Команда " lscpu " используется для отображения информации о вашем процессоре в удобочитаемом формате. Команда lscpu является частью пакета util-linux, так что не беспокойтесь об установке.

Чтобы найти ядра ЦП, выполните:

3. Использование команды "сверху"

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

Чтобы узнать количество ядер ЦП, запустите команду top и нажмите "1" (номер один), чтобы получить сведения о ядрах ЦП.

Найти количество ядер ЦП в Linux с помощью команды top

Узнать количество ядер ЦП в Linux с помощью команды top

4. Использование "/proc/cpuinfo"

Есть несколько других способов найти ядра процессора. Одним из таких способов является получение сведений о ядре ЦП из файла "/proc/cpuinfo".

Вы также можете сделать это с помощью команды "grep".

5. С помощью команды "getconf"

Команда " getconf " существует уже давно и доступна как для Linux, так и для Mac OS. Если в вашей системе недоступны команды " nproc " или " lscpu ", вы можете использовать команду " getconf ", чтобы узнать количество ядер, как показано ниже.

Теперь вы знаете, как найти количество процессоров/ядер из командной строки в Unix-подобных системах. Надеюсь, это было полезно.

Некоторое время назад я опубликовал эту статью в нашей старой системе групп портала. Он был довольно популярен и вызвал немало хороших разговоров. Я делаю репост здесь и пытаюсь вплести некоторые из замечательных комментариев, которые мы получили от сообщества. Как и во всем в этом захватывающем мире открытого исходного кода, есть буквально десятки способов снять шкуру с этого кота. Поэтому, пожалуйста, прочитайте и дайте нам знать, если у вас есть другие варианты, которыми мы можем поделиться.

Я получил электронное письмо от одного из моих клиентов. Его организация была готова пройти некоторые лицензионные сверки, и он был в затруднительном положении. У него было несколько сторонних продуктов, по которым им нужно было вести учет, и каждый продукт лицензировался с использованием другой модели.К сожалению, у них не было какой-либо CMDB, чтобы помочь (база данных управления конфигурацией - что-то очень удобное, когда дело доходит до просмотра инвентаризации вашего сервера). Я вспомнил годы, когда руководил большой командой Enterprise *NIX, и содрогнулся; раз в месяц или около того кто-то задавал мне одни и те же вопросы.

Поэтому мы работали над несколькими простыми командами, которые можно использовать для получения этих данных. Сначала мы попробовали это:

$ lscpu | grep 'socket'
Ядер(а) на сокет: 2
Сокет(а) ЦП: 1

В «ядре» этой команды [ха-ха, каламбур] мы получили именно то, что хотел мой приятель Том, и даже кое-что. Мы можем не только увидеть, сколько сокетов он использовал (о чем он и сообщал), но и узнать, сколько ядер было в каждом сокете.

Затем мы попробовали кое-что, хотя и менее красивое, но точное соответствие требованиям:

$ cat /proc/cpuinfo | grep "физический идентификатор" | сортировать -у | wc -l
1

Это точно сказало нам, сколько сокетов у нас было. А потом ради забавы (Том — не что иное, как забава) мы задались вопросом, как можно объяснить, было ли что-то с гиперпоточностью или нет, поэтому он выхватил это:

$ egrep -e "идентификатор ядра" -e ^физический /proc/cpuinfo|xargs -l2 echo|sort -u
физический идентификатор: 0 идентификатор ядра: 0
физический идентификатор: 0 идентификатор ядра : 1

Итак, Том вернулся к работе, довольный и готовый дать своим боссам ИМЕННО то, что им нужно (он был так счастлив, что у него появился новый проект сценария, с которым можно было повозиться). Эти команды работали от RHEL6 до RHEL4, поэтому почти каждый должен иметь возможность их использовать. Поэтому, если вы заинтересованы в том, чтобы дать им вихрь, есть также несколько официальных решений для знаний, созданных нашим уважаемым Райаном Соухиллом, которые вы также можете просмотреть. :

Проверить, является ли сервер виртуальной машиной?

dmidecode | grep -я продукт

Получить количество ЦП

dmidecode |grep -i процессор

Обозначение сокета: CPU1

Чтобы проверить это несколькими способами:

Проверьте, включен ли HyperThreading

Гиперпоточность также можно найти с помощью lscpu:

Но dmidecode по-прежнему показывает сокеты:

И, безусловно, лучшим скрытым самородком из старой статьи был инструмент, который я очень часто использую здесь в течение дня, помогая клиентам: xsos

На компьютере здесь, в лаборатории, я запустил xsos, поэтому вы можете увидеть типичный вывод:

Так БАМ! Вот именно то, что мы хотели, в красиво оформленном выводе.

Итак, у нас есть несколько официальных статей, на которые вы также можете ссылаться:

И что вы думаете? Это полезный материал? Сэкономит ли это вам время или даже поможет запустить собственную CMDB? Мы будем рады услышать от вас!

Читайте также: