Как узнать количество numa нод
Перейти к содержимому

Как узнать количество numa нод

  • автор:

Получаем информацию о железе сервера в Linux

date31.01.2020
userVyacheslavK
directoryCentOS, Linux
commentsКомментариев пока нет

Вы можете узнать, какое железо установлено в вашем сервере из BIOS/UEFI, или через отдельный управляющий интерфейс сервера, который есть у большинства промышленных серверов (HPE ILO, Dell iDRAC, IBM BMC, IPMI и т.д.). А что делать, если у сервера нет интерфейса управления (или он не доступен), а перезагружать сервер перезагружать не желательно? В этой статье на примере CentOS мы рассмотрим основные команды и утилиты Linux, которые позволят получить подробные сведения об аппаратном обеспечении сервера: оперативной памяти, процессоре, жестких дисках, материнской плате и настройках BIOS.

Информация об оперативной памяти (RAM) в Linux

Вы можете получить информацию о количестве оперативной памяти на сервере с помощь встроенных средств Linux CentOS (данные команды не дают подробной информации, но вполне приемлемы для быстрой оценки).

Первая покажет количество памяти в мегабайтах, вторая в гигабайтах (информация о количестве оперативной памяти указано в значении Mem: total).

free - информация об оперативной памяти

Тут же будет и показан размер swap.

Также вы можете получить информацию о RAM из файла /proc/meminfo:

# grep MemTotal /proc/meminfo
# grep SwapTotal /proc/meminfo

/proc/meminfo

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

Так же существует еще несколько вариантов проверки количества ОЗУ на сервере:

Vmstat показывает не только физическую память сервера, но и всю статистику по виртуальной памяти.

Либо запустите команду top и посмотрите информацию о RAM в самом верхнем блоке:

команда top в linux информация о RAM

Так же, есть удобная утилита atop, которая покажет вам количество ОЗУ на сервере, а также информацию по занятой, кешированной и свободной памяти.

Вы можете установить утилиту atop из EPEL репозитория с помощью yum (dnf):

# yum install atop -y

atop - утилита с подробными данными об оперативной памяти, свопе

Должна быть в вашем арсенале и не менее удобная утилита nmon. Установите ее на сервер:

# yum install nmon -y

Выполните команду nmon, и для проверки ОЗУ нажмите m:

утилита nmon в centos linux

Но все вышеперечисленные утилиты, показывают лишь объем памяти, а модель скорость и другие характеристики нет. Если нужна более подробная информация о бланках памяти (производитель, тип, частота), можно воспользоваться утилитой dmidecode:

dmidecode -t 17

Как видите, dmidecode выводит более подробную информацию о установленных модулях памяти.

Как узнать информацию о процессоре (CPU) в Linux?

Информацию о процессоре в Linux можно получить несколькими способами. Начнем с самого простого — получение информации из файла /proc/cpuinfo:

# cat /proc/cpuinfo | grep model

/proc/cpuinfo информация о процессорах на linux сервере

Чтобы узнать количество ядер, выполните:

# cat /proc/cpuinfo | grep processor

/proc/cpuinfo | grep processor - количество ядер

В моем случае на сервере 8 ядер.

Более подробную информацию о процессоре, можно узнать командой lscpu:

lscpu - команда с полной информацией о процессоре, модели, частоте, скоросте

Утилита lscpu покажет вам количество ядер, модель процессора, максимальную частоту, рамеры кэшей CPU, ноды NUMA и многое другое.

Количество ядер, так же можно узнать запустив команду atop или nproc —all:

atop данные по ядрам

nproc --all количество ядер в CPU

Для отображения подробной информации, можно дополнительно установить утилиту cpuid:

# yum install cpuid -y

После установки запустите командой:

утилита cpuid в linux - подробная информация о CPU

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

С помощью утилиты demidecodev вы так же можете узнать всю информацию об установленных на сервере процессорах:

# dmidecode —type processor

dmidecode --type processor

И, пожалуй, последняя утилита для проверки процессора inxi. Это скрипт на bash, который покажет вам модель процессора, размер кеша, частоту и дополнительные возможности процессора. Установим его:

# yum install inxi -y

скрипт inxi

Информация о жестких дисках сервера в Linux

Чтобы получить информацию о жестких дисках в системе, я обычно использую утилиту hdparm. Сначала нужно установить ее из репозитория:

# yum install hdparm -y

Чтобы получить инфу по жесткому диску, нужно указать название устройства:

# hdparm -I /dev/sdb

hdparm - просмот информации о типах жестких дисков

Как видите, при проверке отображается модель диска, серийный номер, версия прошивки диска, цилиндрах, rpm, поддерживаемые функции и ряд другой информации.

Вторая не менее популярная утилита это smartctl (она по умолчанию уже установлена в системе). Чтобы вывести информацию о диске, выполните:

# smartctl -d ata -a -i /dev/sdb

Информация будет предоставлена так же подробно:

smartctl

Очередная, очень удобная утилита lshw. Установите ее:

# yum install lshw -y

# lshw -class disk

lshw -class disk

Утилита dmidecode: получения информации о материнской плате, BIOS и др.

В данном разделе я приведу примеры более расширенного использования утилиты dmidecode. Dmidecode позволяет получить информацию об аппаратном обеспечении сервера на основе данных из BIOS по стандарту SMBIOS/DMI.

С помощью dmidecode мы можем получить информацию о материнской плате, bios, шасси и слотах сервера. Например:

# dmidecode —type baseboard – получим информацию о материнской плате.

dmidecode --type baseboard

# dmidecode —type bios – информация о BIOS (версия, поддерживаемые функции).

dmidecode --type bios

# dmidecode —type chassis – сведения о корпусе (шасси) сервера.

dmidecode --type chassis

# dmidecode —type slot – сведения о используемых слотах на материнской плате.

dmidecode --type slot

Чтобы собрать вообще всю информацию о железе вашего сервера Linux, можно воспользоваться ранее указанную утилиту lshw:

# lshw -html > server_info.html

Вся информация будет выгружена в html файл.

lshw -html

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

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Подготовка системы

Поддерживается работа на платформах AMD и Intel с архитектурой x86-64.

Для оптимальной работы платформ AMD требуется настройка BIOS.

Hyper-threading

Рекомендуется включить hyper-threading (HT) в BIOS.

При включенном HT следующая команда показывает 2 :

Многопроцессорные платформы рекомендуется использовать в NUMA-режиме с одним процессором на NUMA-ноду. Поддерживаются платформы с одной и двумя NUMA-нодами.

Для оптимальной производительности рекомендуется разносить сетевые карты по разным NUMA-нодам, чтобы каждый процессор работал только с портами на своей ноде.

Узнать NUMA-ноду устройства по его PCI-адресу:

Драйвера (модули ядра)

Для сетевых карт Intel и некоторых других в системе должен быть загружен драйвер (модуль ядра), позволяющий DPDK работать с ними. Для карт Mellanox загрузка модулей ядра не требуется.

Подобрать драйвер для установленных сетевых устройств (документация DPDK):

  • Карты Mellanox работают только с собственным драйвером.
  • vfio-pci : стандартный, рекомендуется по умолчанию (см. ниже);
  • uio_pci_generic : стандартный, используется вместо vfio-pci , если он не работает (см. ниже);
  • igb_uio : нестандартный, нужен только если остальные драйвера не работают (см. ниже);
  • virtio-pci : нужен для виртуальных адаптеров QEMU/KVM.

Настроить загрузку драйвера при запуске системы.

Управление драйверами

Привязка устройств к нужному драйверу производится через скрипт dpdk-devbind (документация DPDK).

Cкачать и установить dpdk-devbind :

Посмотреть состояние сетевых устройств и доступных драйверов:

В списке Network devices using DPDK-compatible driver перечислены устройства, привязанные к совместимому с DPDK драйверу. В списке Network devices using kernel driver — устройства со стандартными драйверами ядра. Текущий драйвер указан в поле drv= . Доступные драйвера перечислены в поле unused= . Отображаются только драйвера, загруженные в системе.

Если нужный драйвер не загружен, загрузить через modprobe . Например, для загрузки драйвера vfio-pci :

Сопоставить имя устройства (например, eth0 или enp3s0f0 ) и его PCI-адрес можно через поле if= в выводе dpdk-devbind .

Рекомендуется привязывать все устройства одной командной dpdk-devbind . Для работы с vfio-pci все порты одной карты должны быть привязаны к одному драйверу. Например, для привязки устройств 06:00.0 и 06:00.1 к драйверу vfio-pci :

Если команда привязки выполнилась без ошибкок, драйвер можно использовать. Устройство, привязанное к специальному драйверу, пропадает из системы (вывод ip link и т.п.). Привязка работает до перезагрузки, автоматическую привязку можно настроить при установке MITIGATOR.

Внимание. Устройства, отмеченные в списке **Active** , имеют IP-адрес. Обычно это порт, через которой идет доступ к машине по SSH, поэтому скрипт не позволяет менять драйвер таким устройствам.

Автоматическая загрузка модуля ядра

Если нужный модуль ядра не загружается по умолчанию при старте системы, его загрузку можно включить через /etc/modules-load.d . Например, для загрузки vfio-pci :

Модуль vfio-pci

Модуль vfio-pci входит в состав ядра Linux. Необходим для работы DPDK с сетевыми картами. Требует поддержки процессором виртуализации ввода-вывода (Intel VT-d или AMD-V). Включается в BIOS соответствующими настройками (например, “VT-d”, “Intel Virtualization Technology”, “SVM”, “AMD-V”, “AMD Virtualization”, “IOMMU”).

В параметрах ядра необходимо добавить опции (например, через GRUB):

  • Для платформ Intel: intel_iommu=on iommu=pt ,
  • Для платформ AMD: iommu=pt .

Проверить наличие виртуализации:

Проверить наличие IOMMU:

Модуль uio_pci_generic

Модуль uio_pci_generic входит в состав ядра Linux. Используется вместо vfio-pci , если тот не поддерживается системой или по какой-то причине не работает.

Модуль igb_uio

Модуль igb_uio может быть использован, как альтернатива другим модулям, если они не работают.

  • Debian 10: apt install -y dpdk-igb-uio-dkms
  • Debian 11: apt install -y dpdk-kmods-dkms

Hugepages

Для работы MITIGATOR необходимы настроенные hugepages (большие страницы памяти). Платформой могут поддерживаться hugepages разных размеров (2 МБ, 1 ГБ), рекомендуется настраивать страницы большего размера.

Необходимое количество hugepages зависит желаемого количества политик защиты. Рекомендуется отводить на hugepages 50-75% от общего объема памяти.

1 GB hugepages

Рекомендуется использовать hugepages размером 1 ГБ, если поддерживаются платформой. Их можно выделить только при загрузке системы.

Настраивается опциями в параметрах ядра. Пример для выделения 64-х 1 ГБ страниц:

2 MB hugepages

Hugepages размером 2 МБ можно настраивать без перезагрузки системы.

Пример выделения 2048 страниц по 2 МБ:

Пример настройки выделения при загрузке системы:

Docker

Установить Docker и Docker Compose, следуя официальной документации по установке для вашей ОС:

Следует устанавливать Docker Compose версии v1. Работоспособность MITIGATOR с Docker Compose версии v2 не гарантируется.

Системный уровень

Прежде всего, я хочу показать вам несколько способов узнать, сколько узлов NUMA у вас есть на системном уровне. Самый простой способ — использовать представление CPU в диспетчере задач. По умолчанию диспетчер задач покажет вам, сколько ядер процессора у вас доступно.

Как видно из рисунка, система сообщает количество доступных сокетов ЦП. Обычно количество сокетов ЦП соответствует количеству имеющихся у вас узлов NUMA. Если вы хотите подтвердить, вы можете изменить настройки отображения на представление NUMA.

После модификации в управлении задачами отображаются имеющиеся у вас узлы NUMA — здесь у меня будет 4 узла NUMA.

В инструменте SysInternals также есть инструмент conrinfo.exe, который также получает количество узлов NUMA в вашей системе. Этот инструмент также сообщит вам время задержки между узлами NUMA.

Уровень SQL Server

Если у вас нет личного доступа к операционной системе, вы также можете использовать SQL Server, чтобы узнать, сколько узлов NUMA доступно в вашей системе. Самый простой способ — просмотреть журнал SQL Server. Потому что во время запуска SQL Server сообщит о количестве обнаруженных узлов NUMA.

Или вы можете запросить DMV sys.dm_os_memory_nodes, где SQL Server сообщит о доступных узлах памяти. Для каждого доступного узла NUMA SQL Srver создаст определенный узел памяти (за исключением идентификатора узла памяти 64, который используется для блокировки выделенного административного соединения (Dedicated Admin Connection)).

Здесь вы можете видеть, что этот SQL Server работает в системе NUMA с двумя узлами.

резюме

В этой статье вы увидели, что есть много способов узнать, сколько узлов NUMA доступно в вашей системе. Ваш SQL Server работает на нескольких системах узлов NUMA? Добро пожаловать, чтобы оставить сообщение!

How many NUMA Nodes do I have?

A question that I get asked very often during my various SQL Server Consulting engagements is on how many NUMA nodes SQL Server is running on. Therefore I want to show you in today‘s blog post a few ways and techniques to find out how many NUMA nodes your SQL Server has.

For a general (deep dive) introduction to NUMA I recommend that you read the NUMA Deep Dive Series from Frank Denneman.

Windows OS Level

First I want to show you a few ways at the Windows OS level how you can find out how many NUMA nodes you have. The easiest way is to use the CPU view of Windows Task Manager. With the default setup Task Manager shows you how many CPU cores you have available.

Wow, that many cores!

As you can see from the picture, Windows also reports here the number of CPU sockets that you have available. Normally the number of CPU sockets corresponds to the number of NUMA nodes you have. If you want to be sure you can also change the display settings to the NUMA view.

Let

After changing that the Task Manager shows you how many NUMA nodes you have available – in my case 4 NUMA nodes.

Houston, we have 4 NUMA nodes!

There is also the coreinfo.exe tool from the SysInternals tools which also reports how many NUMA nodes you have in your system. And this tool also tells you the latency times between the individual NUMA nodes.

coreinfo.exe in action!

SQL Server Level

When you don’t have access to the Windows Server itself, you can also use SQL Server to find out how many NUMA nodes you have available on your system. The easiest way is to look into the SQL Server Log, because during the startup phase SQL Server reports how many NUMA nodes were detected.

The good, old SQL Server Log.

Alternatively you can also query the DMV sys.dm_os_memory_nodes, where SQL Server reports the available Memory Nodes. For every available NUMA node SQL Server creates one dedicated Memory Node (besides Memory Node ID 64, which is always present for the Dedicated Admin Connection).

sys.dm_os_memory_nodes

Here you can also see that this SQL Server is running on a two-node NUMA system.

Summary

As you have seen in this blog post there are many different ways to find out how many NUMA nodes you have available on your system. Please feel free to leave a comment on how many NUMA nodes you are running SQL Server on.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *