Linux определяет количество ядер процессора
Обновлено: 20.11.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
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? Мы будем рады услышать от вас!
Читайте также: