- Как в Linux узнать всю информацию о процессоре
- Информация о процессоре
- 1. Поставщик и модель процессора
- 2. Архитектура
- 3. Частота
- 4. Количество ядер
- Несколько процессоров
- 5. Технология Hyper threading
- Процессор с технологией hyper threading
- Утилита hwloc / lstopo
- Процессор с технологией hyper threading
- 💳 Как определить количество процессоров в Linux с помощью командной строки
- Команда для определения количества процессоров в Linux
- Давайте посмотрим все примеры в деталях.
- Как узнать количество ядер системы в Linux?
- Примеры:
- Как получить количество процессоров / ядер в Linux из командной строки?
- 22 ответов
Как в Linux узнать всю информацию о процессоре
Информация о процессоре
Подробная информация о процессоре, о которой мы будем говорить, содержит в себе сведения о количестве ядер, о наличии режима hyper threading, об архитектуре, о размере кэша и т. д. Найти в вашей системе эту информацию, относящуюся к процессору, может быть слегка затруднительным, поскольку ее нужно получать помощью разных команд.
К командам, которые мы будем использовать, относятся команды lscpu, /proc/cpuinfo и lstopo (hwloc). С их помощью можно узнать подробную информацию о ядрах и процессорах. В следующих примерах объясняется, как следует интерпретировать результаты, выдаваемые этими командами.
1. Поставщик и модель процессора
Чтобы определить поставщика и название модели процессора, выполните с помощью команды grep поиск в файле /proc/cpuinfo.
Это процессор фирмы Intel. Затем находим имя модели, которое можно использовать для поиска точных спецификаций на сайте Intel.
Это процессор «Core 2 Quad Q8400».
2. Архитектура
С помощью команды lscpu можно узнать архитектуру процессора.
Архитектура — x86_64, что означает 64 разрядную архитектуру.
3. Частота
Частоту/скорость работы процессора можно узнать с помощью команды lscpu и в файле /proc/cpuinfo.
Поскольку большинство современных процессоров работают на более низких частотах для экономии энергии, частота, о которой сообщается, может быть ниже, чем действительная частота работы указанного процессора. Когда нагрузка увеличивается, они переключаются на более высокую частоту.
Изменение частоты можно обнаружить в файле of /proc/cpuinfo, если использовать для этого команду watch.
Запустите в терминале указанную выше команду и, пока она работает, запустите какую-нибудь задачу, которая интенсивно использует процессор, и частота должна увеличиться.
4. Количество ядер
Каждое ядро процессора является, на самом деле, независимым процессором. Несколько ядер позволяют процессору одновременно выполнять несколько команд в программе, в результате чего скорость обработки данных увеличивается.
Команда lscpu указывает «количество ядер в одном сокете».
Таким образом, в этом случае количество ядер в процессоре равно 4.
В файле /proc/cpuinfo также есть информация о количестве ядер, но ее получить немного сложнее и запутаннее.
Простой подсчет количества процессоров может дать неправильное количество.
В случае, когда используется режим hyper threading, количество процессоров, которые видит операционная система, в два раза превышает количество ядер. Но в файле /proc/cpuinfo есть поле с именем «core id», которое уникально для каждого ядра одного процессора. Подсчет этих имен позволяет получить четкое представление о количестве реальных ядер в процессоре
Несколько процессоров
Редко, но в тех случаях, если вы используете систему, в которой имеется несколько физических процессоров (да, это означает 2 или больше процессоров, установленных на материнской плате), то результаты в файле /proc/cpuinfo будут другими. В случае нескольких процессоров, «physical id» будет означать несколько значений.
Если есть более одного идентификатора физического процессора, то это означает, что в системе есть несколько физических процессоров. И в каждом процессоре вы должны посчитать ядра отдельно.
5. Технология Hyper threading
Hyper threading это технология фирмы Intel, которая позволяет одному ядру выполнять обработку так, как если бы это было два ядра. Это в определенных случаях также некоторым образом увеличивает вычислительную мощность каждого ядра.
Чтобы проверить, поддерживается ли в процессоре режим hyper-threading, необходимо сравнить два значения. Первым является фактическое количество ядер, а вторым — логическое количество.
Если количество ядер равно количеству процессоров, которые видно в ОС, то режим hyper threading отсутствует. В противном случае, т. е. если количество блоков обработки больше (в два раза больше) числа ядер, то режим hyper threading присутствует.
В качестве примера возьмем процессор Core 2 Quad Q8400
Количество процессоров, как показано в /proc/cpuinfo, равно 4
Количество «cpu cores» = 4, также, как и «siblings» = 4, а «core id» = 4
Поэтому общее число процессоров равно количеству фактических ядер. Следовательно на этом процессоре режим hyper threading отсутствует, что и подтверждается спецификациями процессора, приводимыми на сайте Intel.
Процессор с технологией hyper threading
Сведения, касающиеся hyper threading, которые присутствуют в /proc/cpuinfo или в выходных данных lscpu будут отличаться.
Обратите внимание на строку «Thread(s) per core: 2», указывающую, что в каждом ядре есть по 2 потока; ядер, в общей сложности, четыре. Таким образом, количество процессоров, которые видны в ОС, равно 8.
Теперь давайте взглянем на данные из /proc/cpuinfo.
Здесь «cpu cores» = 4 и «siblings» = 8 означают, что имеется 4 ядра и по 2 гиперпотока на ядро. Количество процессоров, как это показано в /proc/cpuinfo, также будет равно 8.
Флаг HTT в выходных данных dmidecode и флаг ht во флагах /proc/cpuinf могут давать неверную информацию, касающуюся режима hyper threading.
Для процессора Core2Quad Q8400 dmidecode и /proc/cpuinfo показывают, что флаг гиперпотоков установлен, несмотря на то, что в данном процессоре режим hyper threading недоступен.
Утилита hwloc / lstopo
Утилита hwloc является небольшой утилитой, которая сообщает о структуре процессора в виде приятной диаграммы. В диаграмме показано количество ядер, наличие режима hyper threading и объем кэш-памяти. Обо всем рассказывает одна схема.
Из приведенной выше диаграммы ясно видно, что размер кэша второго уровня L2 — 4096 KB или 4MB, количество ядер — 4, количество потоков в ядре — 1.
Процессор с технологией hyper threading
Для процессора с режимом hyper threading, выдаваемая диаграмма hwloc может выглядеть следующим образом
На диаграмме показано, что размер кэша третьего уровня L3 — 8MB, количество ядер — 4, количество потоков в ядре — 2 (т. е. режим hyper threading имеется).
Источник
💳 Как определить количество процессоров в Linux с помощью командной строки
Как получить вывод, где будет количество процессоров и ядер в системе Linux из командной строки?
Как определить количество процессоров в Linux?
CPU – это сокращение от центрального процессора.
Это неотъемлемая часть компьютера.
Процессор отправляет сигналы, которые контролируют часть сервера Linux.
Вы можете назвать его мозгом вашего компьютера.
На этой странице показано, как узнать количество процессоров в Linux с помощью командной строки.
Команда для определения количества процессоров в Linux
Процедура выглядит следующим образом:
- Войдите в свою систему Linux
- Откройте приложение терминала в Linux
- Для удаленного сервера запустите ssh user@server-name
- Чтобы получить информацию о процессоре, введите lscpu, который отображает информацию об архитектуре процессора Linux, включая установленные процессоры.
Давайте посмотрим все примеры в деталях.
Linux определяет количество процессоров с помощью команды lscpu
Просто введите следующую команду:
Сверху ясно, что:
Процессор AMD A10-6800K APU with Radeon(tm) HD Graphics Название модели (название / марка процессора)
1 – сокет, т.е. количество процессоров
4 – количество ядер на сокет
2 – поток (и) на ядро
4 – 4 логических ядер (гиперпоточность) [ядер на сокет * потоков на ядро]
Источник
Как узнать количество ядер системы в Linux?
Я хотел узнать, сколько ядер у моей системы, поэтому я искал тот же вопрос в Google. У меня есть некоторые команды, такие как lscpu команда. Когда я попробовал эту команду, она дала мне следующий результат:
В частности, этот вывод показывает:
- ЦП: 4
- Core (s) на сокет: 4
- Семейство процессоров: 6
Что из этого указывает на ядра системы Linux?
Есть ли какая-либо другая команда, чтобы определить количество ядер, или я предполагаю, что она полностью неверна?
Вы должны смотреть на сокеты и ядра на сокет. В этом случае у вас есть 1 физический процессор (сокет), который имеет 4 ядра (ядра на сокет).
Чтобы получить полную картину, вам нужно посмотреть на количество потоков на ядро, ядер на сокет и сокетов . Если вы умножите эти числа, вы получите количество процессоров в вашей системе.
ЦП = потоков на ядро X ядер на сокет X сокетов
Процессоры — это то, что вы видите при запуске htop (они не равны физическим процессорам).
Вот пример с настольного компьютера:
Вывод nproc соответствует количеству ЦП от lscpu . Для настольного компьютера выше это должно соответствовать 8 процессорам, о которых сообщают lscpu :
Вывод /proc/cpuinfo должен соответствовать этой информации, например, на настольной системе выше мы видим, что есть 8 процессоров (ЦП) и 4 ядра (идентификатор ядра 0-3):
cpu cores Сообщил /proc/cpuinfo соответствует Core(s) per socket сообщению lscpu . Для настольного компьютера выше это должно соответствовать 4 ядрам на сокете, о которых сообщает lscpu:
Чтобы конкретно ответить на ваш вопрос, вы говорите, сколько ядер у вас есть, умножая количество ядер на каждый сокет на количество имеющихся у вас сокетов.
Сердечники = сердечники на гнездо X розетки
Для приведенных выше примеров систем настольный компьютер имеет 4 ядра:
Пока на сервере есть 16:
Еще одна полезная утилита, dmidecode которая выводит информацию по каждому сокету. В случае серверной системы, указанной выше, мы ожидаем увидеть 8 ядер на сокет и 16 потоков на сокет:
У lscpu команды есть несколько полезных опций, которые вы можете проверить, например:
Смотрите man lscpu подробности.
- Вы должны знать о сокетах, ядрах и потоках
- Вы должны быть осторожны с термином CPU, поскольку он означает разные вещи в разных контекстах
Вы можете получить эту информацию по nproc(1) команде
Не требует прав root.
Чтобы ответ не вводил в заблуждение, необходимо понять несколько простых концепций компьютерной архитектуры:
- Вы запускаете процессы («программы») в вашей системе Linux. Каждый процесс состоит из одного или нескольких потоков
- Каждый поток представляет собой отдельную последовательность инструкций . Два потока могут выполняться параллельно.
- Каждая инструкция передается процессору для выполнения. У CPU есть логика, которая вычисляет, что означают биты инструкции, и решает, что с ней делать.
Существуют разные типы инструкций. Логика принятия решений внутри ЦП будет отправлять разные инструкции разным аппаратным модулям . Например, арифметические инструкции фактически выполняются ALU (арифметическим / логическим блоком), в то время как инструкции, которые загружаются / сохраняются из памяти, выполняются каким-либо блоком памяти .
Под ядром понимается набор реального исполнительного оборудования (т. Е. Каждое ядро имеет ALU, блок памяти и т. Д.)
Вы можете иметь несколько процессоров, которые разделяют одно ядро - это называется гиперпоточность.
- Идея: поток A в настоящее время выполняет арифметику, а поток B загружает что-то из памяти. Когда это так, потоки A и B могут эффективно совместно использовать одно ядро, не мешая друг другу (A использует ALU, B использует блок памяти). Конечно, иногда обе программы захотят АЛУ, и тогда им придется ждать друг друга .
Сокет является физический слот на материнской плате , в которую вставляется чип. Этот чип имеет определенное количество ядер.
Примеры:
- один физический разъем, который содержит чип с
- 4 физических ядра (всего 4 ALU и 4 блока памяти)
- Только 1 поток может выдавать инструкции ядру (без гиперпоточности), что означает, что есть
- один процессор на ядро или 4 * 1 = 4 процессора
Два физических сокета, каждый из которых содержит чип с 4 физическими ядрами, всего 8 ядер. Два потока могут выдавать инструкции для каждого ядра (эта машина имеет гиперпоточность), то есть к каждому ядру должны быть подключены два ЦП, что в сумме составляет 8 * 2 = 16 ЦП.
Первая машина может выполнять ровно четыре инструкции в любой момент времени. Вторая машина может выполнять от 8 до 16 инструкций в любой момент времени: 16 будет достигнуто только тогда, когда каждая пара процессоров выполняет различные типы инструкций и может совместно использовать ядро без ожидания.
Источник
Как получить количество процессоров / ядер в Linux из командной строки?
У меня есть этот скрипт, но я не знаю, как получить последний элемент в распечатке:
последним элементом должно быть Число процессоров, минус 1.
22 ответов
, который будет считать количество строк, начинающихся с «процессор» в /proc/cpuinfo
для систем с hyper-threading вы можете использовать
который должен вернуться (например) 8 (в то время как команда выше будет возвращать 16 )
обработка содержание /proc/cpuinfo без нужды барокко. Использовать nproc который является частью coreutils, поэтому он должен быть доступен на большинстве установок Linux.
команда nproc печатает количество процессоров, доступных для текущего процесса, которое может быть меньше, чем количество сетевых процессоров.
найти количество всех установленных ядер/процессоров использовать nproc —all
на моем 8-ядерном компьютере:
самое портативное решение, которое я нашел, это :
это работает как на Linux, так и на Mac OS X. Еще одним преимуществом этого по сравнению с некоторыми другими подходами является то, что getconf существует уже давно. Некоторые из старых машин Linux, на которых я должен заниматься разработкой, не имеют nproc или lscpu доступные команды, но у них есть getconf .
Примечание редактора: While на getconf утилиты is В POSIX-поручено конкретные _NPROCESSORS_ONLN и _NPROCESSORS_CONF значения нет. Тем не менее, как указано, они работают на платформах Linux, а также на macOS; на FreeBSD/PC-BSD вы должны опустить ведущий _ .
на с /proc/cpuinfo ответы заключается в том, что они анализируют информацию, которая предназначалась для человека потребление и таким образом отсутствуют формат предназначен для машинного разбора: формат вывода может отличаться для разных платформ и условий выполнения;используя lscpu -p в Linux (и sysctl на macOS) обходит эту проблему.
getconf _NPROCESSORS_ONLN / getconf NPROCESSORS_ONLN не различает между логическое и физическая процессоры.
здесь sh (POSIX-совместимый) фрагмент, который работает на Linux и macOS для определения число — онлайн — логическое или физическая ЦП; см. комментарии для деталей.
использует lscpu для Linux, и sysctl для macOS.
обратите внимание, что BSD-производные системы, отличные от macOS-например, FreeBSD-поддерживают только hw.ncpu ключ sysctl , которые устарели на macOS; мне неясно, на каком из новых ключей hw.npu соответствует: hw.(logical|physical)cpu_[max] .
наконечник шляпы к @teambob за помощь в исправлении физического-CPU-count .
предостережение: lscpu -p вывод не включает столбец «книга» ( man страница упоминает «книги» как сущность между сокетом и узлом в таксономической иерархии). Если «книги» находятся в игре в данной системе Linux (кто-нибудь знает, когда и как?), команда physical-CPU-count может под-report (это основано на предположении, что lscpu отчеты идентификаторы, которые не являются уникальными через объекты более высокого уровня; например: 2 разных ядра из 2 разных сокетов могут иметь один и тот же идентификатор).
это работает для меня. tail -nX позволяет захватить только последние X строк.
Если у вас есть hyperthreading, это должно работать для захвата числа физическая ядер.
lscpu собирает информацию об архитектуре процессора form /proc / cpuinfon в удобном для чтения формате:
для общего количества физических ядер:
на многосекционных машинах (или всегда) умножьте вышеуказанный результат на количество сокетов:
@mklement0 имеет довольно хороший ответ ниже, используя lscpu. Я написал более краткую версию в комментариях
использование getconf действительно является наиболее переносимым способом, однако переменная имеет разные имена в BSD и Linux для getconf, поэтому вам нужно протестировать оба, как предполагает эта суть: https://gist.github.com/jj1bdx/5746298 (также включает исправление Solaris с помощью ksh)
Я лично использую:
и если вы хотите это в python, вы можете просто использовать syscall getconf использует, импортируя модуль ОС:
как nproc , это часть GNU Coreutils, поэтому недоступен в BSD по умолчанию. Он также использует sysconf () после некоторых других методов.
Источник