Как узнать сколько у меня ядер: Определение количества ядер в процессоре
Содержание
Как узнать количество ядер процессора в Windows
Привет, друзья. В этой публикации рассмотрим такой вопрос: как узнать количество ядер процессора. Как узнать, сколько ядер, и сколько потоков у процессора, если он поддерживает гиперпоточность. В среде Windows делается это очень просто её же системными средствами. Также для получения такой информации можно использовать специальные программы для диагностики компьютерных комплектующих. Давайте рассмотрим все средства решения поставленной задачи.
Итак, ядра и потоки процессоров, это два неразрывно связанных понятия. Ядра – аппаратные, т.е. физические, они обеспечивают выполнение задач, возложенных на процессор по обработке информации. Некоторые процессоры Intel поддерживают технологию гиперпоточности Hyper-Threading, это значит, что у таких процессоров физические ядра имеют по два логических потока, которые помогают ядрам более эффективно (на 30%) справляться со своими задачами. Узнаем же, сколько ядер и потоков при наличии последних имеется у нашего процессора.
В Windows 10 и 8.1 можем использовать системный диспетчер задач, вызывается клавишами Shift+Ctrl+Esc, либо опциями в контекстном меню на панели задач или меню по клавишам Win+X. Во вкладке «Производительность» переключаемся на раздел «ЦП» и смотрим графы:
- «Ядра», где будет указано число ядер процессора;
- «Логических процессоров», где будет указано число потоков.
Если процессор не поддерживает Hyper-Threading, потоков будет указано столько же, сколько и ядер.
Друзья, в принципе максимум информации о своём процессоре – ядра, потоки, частоты, поддерживаемые технологии и т.п. – можно узнать на его страничке спецификаций на сайте производителя, т.е. на сайте компаний Intel и AMD. Вам для этого нужно загуглить запрос нечто «модель процессора + сайт». А модель своего процессора в среде Windows узнать можно узнать элементарно – с помощью системного диспетчера устройств. Запустить его можно в Windows 10 и 8.1 в меню по клавишам Win+X, во всех системах Windows – с помощью ввода в системный поиск непосредственно названия диспетчера или технического названия его приложения:
devmgmt.msc
В диспетчере устройств, в разделе «Процессоры» и увидим название модели нашего процессора. Кстати, процессоров здесь будет числиться столько, сколько у него ядер или потоков.
Узнать количество ядер процессора можно с помощью бесплатной программы-диагноста CPU-Z. Она отображает характеристики базовых комплектующих компьютера, с её помощью можно много чего узнать о начинке своего ПК или ноутбука. В первой вкладке «CPU» этой программы будет содержаться информация о процессоре. И в самом низу увидим:
- В графе «Cores» число ядер процессора;
- В графе «Threads» число потоков для процессоров, у которых есть поддержка Hyper-Threading.
Опять же, если процессор без технологии гиперпоточности, потоков для него будет указано столько, сколько ядер.
Ну и ещё одна программа, показывающая сколько ядер у процессора, не могу, друзья, не упомянуть лишний раз о ней – HWiNFO. Совершенно бесплатная, при этом по уровню детализации информации о комплектующих компьютера сравнима с известной AIDA64, пригодится во многих случаях. В программе HWiNFO идём в раздел «Central Processor(s)», и там будут графы:
- «Number of CPU Cores», показывающая число ядер;
- «Number of Logical CPUs», показывающая число потоков для процессоров с технологией гиперпоточности.
И здесь также, если процессор без гиперпоточности, его число потоков будет таким же, как и число ядер.
9 команд для проверки информации о CPU в Linux / Хабр
Информация об аппаратном обеспечении CPU
Информация о CPU (Central Processing Unit. Центральный процессор) включает в себя подробные сведения о процессоре, такие как архитектура, название производителя, модель, количество ядер, скорость каждого ядра и т. д.
В linux существует довольно много команд для получения подробной информации о CPU.
В этой статье мы рассмотрим некоторые из часто встречающихся команд, которые можно использовать для получения подробной информации о CPU.
1. /proc/cpuinfo
Файл /proc/cpuinfo содержит подробную информацию об отдельных ядрах CPU.
Выведите его содержимое с помощью less
или cat
.
$ less /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 23 model name : Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz stepping : 10 microcode : 0xa07 cpu MHz : 1998.000 cache size : 2048 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm dtherm tpr_shadow vnmi flexpriority bogomips : 5303. 14 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management:
Каждый процессор или ядро перечислены отдельно, а различные подробности о скорости, размере кэша и названии модели включены в описание.
Чтобы подсчитать количество процессоров, используйте grep
с wc
$ cat /proc/cpuinfo | grep processor | wc -l 4
Количество процессоров, показанное в /proc/cpuinfo, может не соответствовать реальному количеству ядер процессора. Например, процессор с 2 ядрами и гиперпоточностью будет показан как процессор с 4 ядрами.
Чтобы получить фактическое количество ядер, проверьте идентификатор ядра на наличие уникальных значений
$ cat /proc/cpuinfo | grep 'core id' core id : 0 core id : 2 core id : 1 core id : 3
Соответственно, есть 4 разных идентификатора ядра. Это указывает на то, что существует 4 реальных ядра.
2. lscpu — отображение информации об архитектуре CPU
lscpu
— это небольшая и быстрая команда, не требующая никаких опций. Она просто выводит информацию об аппаратном обеспечении CPU в удобном для пользователя формате.
$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 23 Stepping: 10 CPU MHz: 1998.000 BogoMIPS: 5303.14 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 2048K NUMA node0 CPU(s): 0-3
3. hardinfo
Hardinfo
— это gui инструмент на базе gtk, который генерирует отчеты о различных аппаратных компонентах. Но он также может запускаться из командной строки, в случае если отсутствует возможность отображения gui (Graphical User Interface — графический интерфейс пользователя).
$ hardinfo | less
Он создаст большой отчет о многих аппаратных частях, читая файлы из каталога /proc. Информация о CPU находится в начале отчета. Отчет также может быть записан в текстовый файл.
Hardinfo выполняет несколько эталонных тестов, занимающих несколько минут, прежде чем вывести отчет на экран.
4. lshw
Команда lshw
может отобразить ограниченную информацию о CPU. lshw по умолчанию показывает информацию о различных аппаратных частях, а опция ‘-class
‘ может быть использована для сбора информации о конкретной аппаратной части.
$ sudo lshw -class processor *-cpu description: CPU product: Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz vendor: Intel Corp. physical id: 0 bus info: cpu@0 version: Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz slot: LGA 775 size: 1998MHz capacity: 4GHz width: 64 bits clock: 333MHz capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx x86-64 constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm dtherm tpr_shadow vnmi flexpriority cpufreq
Производитель, модель и скорость процессора отображаются правильно. Однако из приведенного выше результата невозможно определить количество ядер в процессоре.
Чтобы узнать больше о команде lshw, ознакомьтесь с этой статьей:
Примеры выполнения команды lshw для получения информации об аппаратном обеспечении в Linux
5. nproc
Команда nproc
просто выводит количество доступных вычислительных блоков. Обратите внимание, что количество вычислительных блоков не всегда совпадает с количеством ядер.
$ nproc 4
6. dmidecode
Команда dmidecode
отображает некоторую информацию о CPU, которая включает в себя тип сокета, наименование производителя и различные флаги.
$ sudo dmidecode -t 4 # dmidecode 2.12 SMBIOS 2.4 present. Handle 0x0000, DMI type 4, 35 bytes Processor Information Socket Designation: LGA 775 Type: Central Processor Family: Pentium D Manufacturer: Intel(R) Corporation ID: 7A 06 01 00 FF FB EB BF Signature: Type 0, Family 6, Model 23, Stepping 10 Flags: FPU (Floating-point unit on-chip) VME (Virtual mode extension) DE (Debugging extension) PSE (Page size extension) TSC (Time stamp counter) MSR (Model specific registers) PAE (Physical address extension) MCE (Machine check exception) CX8 (CMPXCHG8 instruction supported) APIC (On-chip APIC hardware supported) SEP (Fast system call) MTRR (Memory type range registers) PGE (Page global enable) MCA (Machine check architecture) CMOV (Conditional move instruction supported) PAT (Page attribute table) PSE-36 (36-bit page size extension) CLFSH (CLFLUSH instruction supported) DS (Debug store) ACPI (ACPI supported) MMX (MMX technology supported) FXSR (FXSAVE and FXSTOR instructions supported) SSE (Streaming SIMD extensions) SSE2 (Streaming SIMD extensions 2) SS (Self-snoop) HTT (Multi-threading) TM (Thermal monitor supported) PBE (Pending break enabled) Version: Intel(R) Core(TM)2 Quad CPU Q8400 @ 2. 66GHz Voltage: 1.6 V External Clock: 333 MHz Max Speed: 4000 MHz Current Speed: 2666 MHz Status: Populated, Enabled Upgrade: Socket LGA775 L1 Cache Handle: 0x0003 L2 Cache Handle: 0x0001 L3 Cache Handle: Not Provided Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified
7. cpuid
Команда cpuid
собирает информацию CPUID о процессорах Intel и AMD x86.
Программа может быть установлена с помощью apt
на ubuntu
$ sudo apt-get install cpuid
А вот пример вывода
$ cpuid ..... Vendor ID: "GenuineIntel"; CPUID level 13 Intel-specific functions: Version 0001067a: Type 0 - Original OEM Family 6 - Pentium Pro Model 7 - Pentium III/Pentium III Xeon - external L2 cache Stepping 10 Reserved 4 Extended brand string: "Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz" CLFLUSH instruction cache line size: 8 Initial APIC ID: 2 Hyper threading siblings: 4 Feature flags bfebfbff: FPU Floating Point Unit VME Virtual 8086 Mode Enhancements DE Debugging Extensions PSE Page Size Extensions TSC Time Stamp Counter MSR Model Specific Registers PAE Physical Address Extension MCE Machine Check Exception CX8 COMPXCHG8B Instruction APIC On-chip Advanced Programmable Interrupt Controller present and enabled SEP Fast System Call MTRR Memory Type Range Registers PGE PTE Global Flag MCA Machine Check Architecture CMOV Conditional Move and Compare Instructions FGPAT Page Attribute Table PSE-36 36-bit Page Size Extension CLFSH CFLUSH instruction DS Debug store ACPI Thermal Monitor and Clock Ctrl MMX MMX instruction set FXSR Fast FP/MMX Streaming SIMD Extensions save/restore SSE Streaming SIMD Extensions instruction set SSE2 SSE2 extensions SS Self Snoop HT Hyper Threading TM Thermal monitor 31 reserved . ....
8. inxi
Inxi — это скрипт, который использует другие программы для создания хорошо структурированного легко читаемого отчета о различных аппаратных компонентах системы. Ознакомьтесь с полным руководством по inxi.
$ sudo apt-get install inxi
Вывод соответствующей информации о CPU/процессоре
$ inxi -C CPU: Quad core Intel Core2 Quad CPU Q8400 (-MCP-) cache: 2048 KB flags: (lm nx sse sse2 sse3 sse4_1 ssse3 vmx) Clock Speeds: 1: 1998.00 MHz 2: 1998.00 MHz 3: 1998.00 MHz 4: 1998.00 MHz
Чтобы узнать больше о команде inxi и ее использовании, ознакомьтесь с этой статьей:
Inxi — удивительный инструмент для проверки информации об аппаратном обеспечении в Linux
9. Hwinfo
Команда hwinfo
— это программа для получения информации об оборудовании, которая может быть использована для сбора подробных сведений о различных аппаратных компонентах в системе Linux.
Она также отображает информацию о процессоре. Вот быстрый пример:
$ hwinfo --short --cpu cpu: Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz, 2275 MHz Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz, 2262 MHz Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz, 2058 MHz Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz, 2133 MHz $
Если не использовать опцию «—short», команда отобразит гораздо больше информации о каждом ядре CPU, например, архитектуру и характеристики процессора.
Чтобы более подробно изучить команду hwinfo, ознакомьтесь с этой статьей:
Проверка информации об аппаратном обеспечении в Linux с помощью команды hwinfo
Заключение
Это были некоторые команды для проверки информации о CPU в системах на базе Linux, таких как Ubuntu, Fedora, Debian, CentOS и др.
Примеры других команд для проверки информации о CPU смотрите в этой статье:
Как проверить информацию о процессоре и CPU в Linux — примеры команд
Большинство команд обрабатываются с помощью интерфейса командной строки и выводятся в текстовом формате. Для GUI интерфейса используйте программу Hardinfo.
Она показывает подробности об аппаратном обеспечении различных компонентов в простом для использования GUI интерфейсе.
Если вы знаете какую-либо другую полезную команду, которая может отображать информацию о CPU, сообщите нам об этом в комментариях ниже
Материал подготовлен в рамках курса Administrator Linux. Professional.
Если вы хотели бы узнать подробнее о формате обучения и программе, познакомиться с преподавателем курса — приглашаем на день открытых дверей онлайн. Регистрация здесь.
А если вам интересно развитие в этой сфере с нуля до pro, рекомендуем ознакомиться с учебной программой специализации.
Количество ЦП в Python
Вы можете определить количество ЦП в вашей системе, используя функцию multiprocessing.cpu_count() или функцию os.cpu_count() .
В этом руководстве вы узнаете, как подсчитать количество процессоров в Python .
Начнем.
Содержание
Необходимо знать количество процессоров
При параллельном программировании нам часто необходимо знать количество процессоров, доступных программе.
Для этого есть много причин, например:
- Настройка пула потоков или пула процессов.
- Настройка количества одновременных задач.
- Оценка времени выполнения программы.
Как мы можем определить количество ядер ЦП из программы?
Что мы подразумеваем под ЦП
Прежде чем мы рассмотрим, как определить количество ядер ЦП в программе, давайте проясним, что мы подразумеваем под ЦП и ядром, а также разницу между физическими ядрами и логическими ядрами.
ЦП
против ядра
Центральный процессор или просто « процессор » или « ЦП » — это чип в компьютере, который выполняет инструкции.
Традиционно у нас в компьютере был один ЦП, возможно, с математическим сопроцессором.
- ЦП : Центральный процессор, чип внутри компьютера для выполнения инструкций.
Ядро — это другое название физического процессора для выполнения инструкций.
Компьютер с несколькими процессорами называется многоядерным.
Точно так же компьютерный чип, содержащий несколько процессоров, называется многоядерным процессором.
- Многоядерный процессор : Физический чип с несколькими процессорами или ядрами.
Таким образом, для разработчиков термины «ЦП» и «ядра» используются взаимозаменяемо. Мы могли бы даже назвать их «ядрами ЦП».
Почти все современные компьютеры имеют несколько ядер.
Физические и логические ЦП
Есть еще один нюанс.
Современные ЦП обычно используют технологию, называемую гиперпоточностью.
Hyperthreading не относится к программе, использующей потоки. Вместо этого он относится к технологии внутри самих ядер ЦП, которая позволяет каждому физическому ядру или ЦП действовать так, как если бы это были два логических ядра или два ЦП.
- Физические ядра : Количество ядер ЦП, предусмотренных в оборудовании, например. чипсы.
- Логические ядра : учитывается количество ядер ЦП после гиперпоточности.
Он обеспечивает автоматический параллелизм в ядре, который может обеспечить ускорение до 30% по сравнению с ядрами ЦП, которые не поддерживают эту технологию.
Таким образом, когда мы подсчитываем ядра ЦП в системе, мы обычно подсчитываем количество логических ядер ЦП, а не количество физических ядер ЦП.
Если вы знаете, что ваша система использует гиперпоточность (вероятно, так и есть), то вы можете получить количество физических ЦП в вашей системе, разделив количество логических ЦП на два.
- Количество физических ядер = Количество логических ядер / 2
Далее давайте посмотрим, как мы можем получить количество процессоров в Python.
Запутался в многопроцессорном API модуля?
Загрузите мою БЕСПЛАТНУЮ шпаргалку в формате PDF
Как получить количество процессоров в Python
Есть несколько способов получить количество процессоров в Python.
Стандартная библиотека предоставляет два чистых подхода к Python:0004 функция.
Давайте рассмотрим каждый по очереди.
Как использовать multiprocessing.cpu_count
Мы можем получить количество логических ядер ЦП в текущей системе, используя функцию multiprocessing.cpu_count() .
Возвращает положительное целое число.
Например:
… # получить количество логических ядер процессора n_cores = multiprocessing.cpu_count() |
Как использовать os.cpu_count
Мы также можем использовать функцию os.cpu_count() для возврата количества логических ядер ЦП в текущей системе.
Например:
… # получить количество логических ядер процессора n_cores = os.cpu_count() |
Есть много других методов, специфичных для платформы, которые мы могли бы использовать, например, чтение определенных файлов или проверка определенных переменных среды.
Тем не менее, в этом руководстве мы сосредоточимся на чисто независимых от платформы Python методах, которые мы можем использовать для определения количества процессоров в системе.
Теперь, когда мы знаем, как получить количество процессоров в Python, давайте рассмотрим несколько рабочих примеров.
Бесплатный курс многопроцессорной обработки Python
Загрузите мою памятку по многопроцессорному API, и в качестве бонуса вы получите БЕСПЛАТНЫЙ доступ к моему 7-дневному электронному курсу.
Узнайте, как использовать модуль многопроцессорной обработки Python, в том числе как создавать и запускать дочерние процессы и как использовать мьютексы и семафоры.
Подробнее
Количество процессоров с помощью multiprocessing.cpu_count()
Мы можем получить количество процессоров в вашей системе, используя функцию multiprocessing.cpu_count() .
Эта функция вернет количество логических процессоров в вашей системе в виде целого числа. Если количество процессоров определить невозможно, то функция вернет значение None.
В приведенном ниже примере выполняется получение и отчет о количестве логических ЦП в системе.
1 2 3 4 5 6 7 | # SuperFastPython.com # пример получения количества ядер процессора из multiprocessing import cpu_count # получение количества логических ядер процессора n_cores = cpu_count() 90 90 процессоров print(f’Количество логических ядер ЦП: {n_cores}’) |
При выполнении примера отображается общее количество логических ядер ЦП в системе.
В данном случае имеется 8 логических ядер ЦП. В моей системе есть гиперпоточность, что означает наличие 4 физических ядер ЦП.
Обратите внимание: конкретные результаты могут отличаться в зависимости от количества ядер ЦП в вашей системе.
Количество логических ядер ЦП: 8 |
Сколько у вас ядер процессора? Дайте мне знать в комментариях ниже.
Далее рассмотрим альтернативный способ получения количества ядер ЦП.
Перегружены API параллелизма Python?
Найдите облегчение, загрузите мои БЕСПЛАТНЫЕ интеллектуальные карты Python Concurrency Mind Maps
Количество процессоров с помощью os.cpu_count()
Мы можем получить количество процессоров в вашей системе, используя функцию os.cpu_count() .
Эта функция вернет количество логических процессоров в вашей системе в виде целого числа. Если количество процессоров определить невозможно, то функция вернет значение Нет .
Фактически, multiprocessing.cpu_count() просто вызывает функцию os.cpu_count() .
В приведенном ниже примере выполняется получение и отчет о количестве логических ЦП в системе.
1 2 3 4 5 6 7 | # SuperFastPython. com # пример получения количества ядер процессора из os import cpu_count # получить количество логических ядер ЦП n_cores = cpu_count() # сообщить количество логических ядер ЦП print(f’Количество логических ядер ЦП: {n_cores}’) |
При выполнении примера отображается общее количество логических ядер ЦП в системе.
В данном случае имеется 8 логических ядер ЦП. В моей системе есть гиперпоточность, что означает наличие 4 физических ядер ЦП.
Обратите внимание: конкретные результаты могут отличаться в зависимости от количества ядер ЦП в вашей системе.
Количество логических ядер ЦП: 8 |
Сколько у вас ядер процессора? Дайте мне знать в комментариях ниже.
Далее давайте рассмотрим количество ядер ЦП, доступных для вашего процесса.
Количество доступных ядер ЦП
Мы также можем получить общее количество ЦП, которое может использоваться текущим процессом Python.
Функция os.sched_getaffinity() возвращает сведения о количестве ядер ЦП, доступных для текущего процесса.
Обратите внимание, что эта функция доступна только на некоторых платформах Unix, например. не Windows или macOS.
Мы передаем нулевой PID, чтобы сообщить подробности обо всех доступных процессорах для текущего процесса. Результатом является список сведений о доступных ядрах ЦП, из которых мы можем затем сообщить длину, чтобы получить количество доступных ядер.
Обычно это все ядра ЦП системы, хотя они могут быть ограничены операционной системой, другим программным обеспечением или самой программой Python через библиотечный вызов.
Например:
… # получить количество доступных ядер процессора n_available_cores = len(os.sched_getaffinity(0)) |
В приведенном ниже примере показано количество доступных ядер ЦП.
1 2 3 4 5 6 7 | # SuperFastPython. com # пример получения количества доступных ядер процессора из os import sched_getaffinity # получение количества доступных логических ядер процессора print(f’Количество доступных ядер ЦП: {n_available_cores}’) |
Запуск примера может отображать количество ядер ЦП, доступных для вашего процесса.
Вероятно, это общее количество логических ядер ЦП в системе.
Функция os.sched_getaffinity() доступна не на всех платформах, т.е. не macOS и не Windows, и в этом случае запуск приведенного выше примера приведет к следующей ошибке:
ImportError: невозможно импортировать имя «sched_getaffinity» из «os» |
Вы можете узнать больше о многопроцессорности в учебнике:
- Многопроцессорность в Python: полное руководство
Дополнительная литература
В этом разделе представлены дополнительные ресурсы, которые могут оказаться полезными.
Книги
- Python Multiprocessing Jump-Start, Джейсон Браунли, 2022 г. ( моя книга! ).
- Многопроцессорный API Вопросы для собеседования
Памятка API многопроцессорного модуля
Я бы также рекомендовал отдельные главы в книгах:
- Эффективный Python, Бретт Слаткин, 2019 г..
- См.: Глава 7. Параллелизм и параллелизм
- Высокопроизводительный Python, Ян Озсвальд и Миха Горелик, 2020 г.
- См.: Глава 9: Многопроцессорный модуль
- Python в двух словах, Алекс Мартелли и др., 2017 г.
- См.: Глава: 14: Потоки и процессы
Направляющие
- Многопроцессорность Python: полное руководство
API-интерфейсы
- многопроцессорность — параллелизм на основе процессов
- PEP 371 — Добавление многопроцессорного пакета
Выводы
Теперь вы знаете, как получить количество процессоров в Python.
Есть вопросы?
Задавайте свои вопросы в комментариях ниже, и я сделаю все возможное, чтобы ответить.
Фото Ника Фьюингса на Unsplash
Выяснение процессоров и сокетов — Обновлено!
Итак, некоторое время назад я разместил эту статью в нашей старой групповой системе портала. Он был довольно популярен и вызвал немало хороших разговоров. Я делаю репост здесь и пытаюсь вплести некоторые из замечательных комментариев, которые мы получили от сообщества. Как и во всем в этом захватывающем мире открытого исходного кода, есть буквально десятки способов снять шкуру с этого кота. Поэтому, пожалуйста, читайте дальше и дайте нам знать, если у вас есть другие варианты, которыми мы можем поделиться.
Недавно я получил электронное письмо от одного из моих клиентов. Его организация была готова пройти некоторые лицензионные сверки, и он был в затруднительном положении. У него было несколько сторонних продуктов, по которым им нужно было вести учет, и каждый продукт лицензировался с использованием другой модели. К сожалению, у них не было какой-либо CMDB, чтобы помочь (база данных управления конфигурацией — что-то очень удобное, когда дело доходит до просмотра инвентаризации вашего сервера). Я вспомнил годы, когда руководил большой командой Enterprise *NIX, и содрогнулся; легко раз в месяц или около того кто-то приходил, задавая мне точно такие же вопросы.
Итак, мы работали над несколькими простыми командами, которые можно использовать для получения этих данных. Сначала мы попробовали это:
$ lscpu | grep ‘socket’
Ядер(а) на сокет: 2
ЦП сокет(а): 1
В этой команде «core» [ха-ха, каламбур] мы получили именно то, что хотел мой приятель Том, а затем и кое-что. Мы не только можем увидеть, сколько сокетов он использовал (о чем он и сообщал), но мы также узнали, сколько ядер было в каждом сокете.
Затем мы попробовали кое-что, хотя и менее красивое, но заточенное на точное требование: 9физический /proc/cpuinfo|xargs -l2 echo|sort -u
физический идентификатор : 0 идентификатор ядра : 0
физический идентификатор : 0 идентификатор ядра : 1
Итак, Том вернулся к работе, счастливый и готовый дать своим боссам ИМЕННО то, что они нуждались (он был так счастлив, что у него появился новый проект сценария, с которым можно было повозиться). Эти команды работали от RHEL6 до RHEL4, поэтому почти каждый должен иметь возможность их использовать. Поэтому, если вы заинтересованы в том, чтобы дать им вихрь, есть также несколько официальных решений для знаний, созданных нашим уважаемым Райаном Соухиллом, которые вы также можете просмотреть. :
Проверить, является ли сервер виртуальной машиной?
дмидекод | grep -i product
Название продукта: Виртуальная платформа VMware
Получить номер процессора
grep -i "физический идентификатор" /proc/cpuinfo | сортировать -у | туалет -л
dmidecode |grep -i cpu
Обозначение сокета: CPU1
Обозначение сокета: CPU2 Обозначение сокета: CPU3 Обозначение сокета: CPU4 ЦП.Сокет.1 ЦП.Сокет.2 ЦП.Сокет.3 ЦП.Сокет.4
Проверить это можно несколькими способами:
Проверить, включен ли HyperThreading
Количество братьев и сестер = количество ядер cat /proc/cpuinfo |egrep 'sibling|cores' grep -i "процессор" /proc/cpuinfo | сортировать -у | туалет -л
Hyperthreading также можно найти с помощью lscpu:
# lscpu | grep -я поток Количество потоков на ядро: 2
#cat /proc/cpuinfo | grep "физический идентификатор" | сортировать -у | туалет -л 0
Но dmidecode по-прежнему показывает сокеты:
# dmidecode -t4 | egrep 'Обозначение|Статус' Обозначение сокета: ЦП 1 Статус: Заполнено, Включено Обозначение сокета: ЦП 2 Статус: Заполнено, Включено
И, безусловно, лучшим скрытым самородком из старой статьи был инструмент, который я очень часто использую здесь в течение дня, помогая поддерживать клиентов: xsos
Я использую xsos, чтобы просмотреть информацию, представленную в sosreports, но ее много. отличного использования (например, наш вопрос proc/socket здесь). Вы можете получить xsos здесь:
https://github.com/ryran/xsos
Репозиторий Yum доступен для xsos — инструмент для системных администраторов
На машине здесь, в лаборатории, я запустил xsos, чтобы вы могли видеть типичный вывод :
# кссос Операционные системы Имя хоста: LINUXizTHAawesome Дистрибутив: Red Hat Enterprise Linux Workstation версии 6.4 (Сантьяго) Ядро: 2.6.32-358.18.1.el6.x86_64 Уровень выполнения: N 5 (по умолчанию: 5) SELinux: принудительно (по умолчанию: принудительно) Системное время: четверг, 12 сентября, 08:17:11 по восточному поясному времени 2013 г. Время загрузки: вторник, 10 сентября, 07:29:28 по восточному поясному времени 2013 г. (1378812568) Время работы: 2 дня, 47 минут, 2 пользователя Средняя нагрузка: 0,13 (3%), 0,14 (4%), 0,10 (2%) Время процессора с момента загрузки: us 7%, ni 0%, sys 1%, idle 91%, iowait 1%, irq 0%, sftirq 0%, Steal 0% procs_running (procs_blocked): 2 (0) Проверка ядра на наличие повреждений: 0 (ядро не повреждено) <фрагмент> ЦПУ 4 логических процессора (2 ядра ЦП) 1 процессор Intel Core i7-2640M с тактовой частотой 2,80 ГГц (флаги: aes, ht, lm, pae, vmx) └─4 потока / 2 ядра каждый <фрагмент>
БАМ! Именно то, что мы хотели, в красиво оформленном выводе.