Системный уровень
Прежде всего, я хочу показать вам несколько способов узнать, сколько узлов 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.

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.

After changing that the Task Manager shows you how many NUMA nodes you have available – in my case 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.

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.

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).
![]()
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.
click fraud protection
Numastat — это утилита командной строки, используемая для отображения памяти каждого узла NUMA для процессов и операционных систем. Он также показывает администраторам, когда память процесса будет распределена по системе.
В этом посте мы расскажем, что такое команда «numastat» и как она работает с различными параметрами.
Установка Numastat:
Numastat не предустановлен в системе Linux. Numactl предоставил свои пакеты Numastat. Итак, нам нужно установить numactl:
$ судо подходящий установить numactl

После установки numactl введите «Нумастат» без параметра в терминале. Он покажет попадание NUMA для каждого узла, системную статистику пропусков и некоторую другую информацию о распределении памяти ядра.

Как вы можете видеть результат, количество нумастата для каждого узла разделено на разные классы:
- numa_hit: Это показывает, что память была выделена успешно.
- numa_miss: — это память, которая была запланирована для другого узла, но выделена этому узлу.
- Numa_foreign: Это память, запланированная для этого узла, но выделенная другому узлу вместо запланированных.
- Interleave_hit: На этом узле перемеженная память была успешно выделена, как и планировалось.
- local_node: Память была выделена во время работы процесса.
- другой_узел: Память была назначена этому узлу, когда процесс выполнялся на любом другом узле.
Синтаксис:
Синтаксис оператора «нумастат”Команда будет такой:
Опции:
В «Нумастат» команда работает с несколькими параметрами; давайте проверим функциональность этих опций:
Нумастат -c:
Использовать «-C» возможность уменьшить ширину столбца в зависимости от содержимого данных; он покажет размер памяти в мегабайтах:

Нумастат -n:
Использовать «-N» возможность показать исходную статистическую информацию numastat. Он будет отображать ту же информацию, что и numastat, но единица памяти будет в мегабайтах, а макет или формат будут отличаться от исходного:

Нумастат-ы:
Использовать «-S» возможность отображать данные от более высоких к более низким значениям. Сверху будет показана самая высокая память:

Нумастат-м:
Использовать «-М» возможность отображать данные о распределении системной памяти в формате, подобном meminfo. Он также генерирует разбивку данных об использовании памяти по узлам:

Нумастат -z:
Использовать «-Z» возможность отображать только ненулевые значения. Если он по-прежнему показывает «ноль» в столбцах и строках, это означает, что есть только одно ненулевое значение, но оно округлено до нуля:

Нумастат -p:
Чтобы получить информацию о конкретном идентификаторе процесса. Сначала запустите «Пс» или «вершина» команда, чтобы показать выполняющиеся в данный момент процессы.



Использовать «-п» опция с идентификатором процесса, чтобы показать информацию о распределении памяти для каждого конкретного PID:
$ нумастат -п < process_id >
Например, я хочу получить информацию о процессе 2457:
$ нумастат -п 2457

Numastat -v:
В «-V» опция делает отчеты более подробными. Вы также можете использовать несколько идентификаторов процессов (PID) для печати их информации:
$ нумастат -v < process_ID >
$ нумастат -v 1397 1616

Смотрю нумастат:
Эта команда будет следить за изменением значений узлов памяти к назначенному времени. Добавьте единицу времени с помощью «-N» вариант. 1 означает одну секунду:
$ смотреть -n1 нумастат


Нумастат – помощь:
Использовать «-помощь» возможность распечатать справочную информацию:

Нумастат -V:
Использовать «-V» возможность отобразить версию инструмента numastat:

Вывод:
Значок «нумастат»Используется в операционной системе Linux, отображая статистику памяти узлов процессов и операционных систем из распределителя памяти ядра. У каждой NUMA разные политики памяти. Numastat пытается отобразить таблицу, удобную для чтения на терминале. Следовательно, «Numastat» предполагает, что ширина терминала составляет 80 символов, поэтому он всегда отображает вывод соответствующим образом. Мы рассмотрели «Numstat» команда с ее опцией подробно.
How to get NUMA Information without numactl
I recently had a task to collect NUMA information from a particular system. For a while I had been using a command called “numactl”, specifically I had been calling:
and then parsing the output. This worked great, until I was no longer allowed to use numactl! numactl isn’t necessarily going to be installed on every system, so I couldn’t write plays/scripts expecting that it would be there. I perused the numactl man page to find a reference to a file in sysfs:
I’ve recently been trying to learn more about sysfs and am always surprised by the wealth of information in there. After a few minutes of poking around sysfs, I was able to find the information I needed. If you are doing write operations and want to be safe, it still might be a good idea to use the numactl command; but there may be times where you may not need to install numactl. You can see a sample of my work below (use them at your own caution ;):