Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Графовая база данных
Введение
Предложения
Функции
Расширенные темы
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
SQL-команда
Часто задаваемые вопросы
В этом документе описано, как использовать привязку к NUMA Node при запуске кластера YMatrix. После того как mxtool init numa-wrapper создаст скрипт NUMA Wrapper и файл сопоставления NUMA, команда mxstart может использовать Wrapper для привязки процессов postmaster к NUMA Node, чтобы каждый экземпляр преимущественно использовал локальные CPU и память.
Применимая версия: YMatrix 6.8.2 и выше.
Перед выполнением убедитесь, что:
numactl.Начиная с YMatrix 6.8.2, во время запуска mxstart можно использовать Wrapper для привязки процессов postmaster к NUMA Node.
Команда mxtool init numa-wrapper автоматически создает следующие файлы на основе текущей топологии кластера и может развернуть их на узлах:
/home/mxadmin/scripts/mxstart_numa_wrapper.sh./home/mxadmin/scripts/mxstart_numa_map.conf.Политика памяти по умолчанию: preferred:
Если необходимо строго ограничить выделение памяти указанным NUMA Node, используйте --memory-policy=membind.
Внимание!
mxtool init numa-wrapperтолько создает и развертывает файлы Wrapper. Команда не изменяет текущий работающий кластер и не перезапускает экземпляры базы данных автоматически. Привязка к NUMA Node вступает в силу при следующем запуске кластера черезmxstart.
Выполните команду ниже, чтобы только просмотреть создаваемый скрипт Wrapper и файл сопоставления NUMA. Удаленные файлы изменены не будут:
mxtool init numa-wrapper
Следующая строка в выводе означает режим Dry Run:
Mode: DRY RUN (no remote files will be changed)
Пример вывода:
[mxadmin@sdw ~]$ mxtool init numa-wrapper
Mode: DRY RUN (no remote files will be changed)
host=sdw action=would-write wrapper=/home/mxadmin/scripts/mxstart_numa_wrapper.sh map=/home/mxadmin/scripts/mxstart_numa_map.conf memory_policy=preferred
host=sdw-other action=would-write wrapper=/home/mxadmin/scripts/mxstart_numa_wrapper.sh map=/home/mxadmin/scripts/mxstart_numa_map.conf memory_policy=preferred
host=sdw hostname=sdw numa_nodes=0,1
/data/mxdata_20260622122230/master/mxseg-1 0
/data/mxdata_20260622122230/primary/mxseg0 1
/data/mxdata_20260622122230/primary/mxseg1 0
...
host=sdw-other hostname=sdw-other numa_nodes=0,1
/data/mxdata_20260622122230/primary/mxseg8 0
/data/mxdata_20260622122230/primary/mxseg9 1
...
Формат каждой строки сопоставления экземпляра:
<каталог данных> <NUMA Node ID>
Например:
/data/mxdata_20260622122230/primary/mxseg0 1
Это означает, что при запуске экземпляр будет привязан к NUMA Node 1.
После проверки вывода Dry Run выполните команду ниже, чтобы развернуть скрипт Wrapper и файл сопоставления NUMA на всех узлах:
mxtool init numa-wrapper --apply
Следующая строка в выводе означает режим Apply:
Mode: APPLY (remote files will be deployed)
Пример вывода:
[mxadmin@sdw ~]$ mxtool init numa-wrapper --apply
Mode: APPLY (remote files will be deployed)
host=sdw action=deployed wrapper=/home/mxadmin/scripts/mxstart_numa_wrapper.sh map=/home/mxadmin/scripts/mxstart_numa_map.conf memory_policy=preferred
host=sdw backups=/home/mxadmin/scripts/mxstart_numa_wrapper.sh.bak.20260628130639,/home/mxadmin/scripts/mxstart_numa_map.conf.bak.20260628130639
host=sdw-other action=deployed wrapper=/home/mxadmin/scripts/mxstart_numa_wrapper.sh map=/home/mxadmin/scripts/mxstart_numa_map.conf memory_policy=preferred
host=sdw-other backups=/home/mxadmin/scripts/mxstart_numa_wrapper.sh.bak.20260628130639,/home/mxadmin/scripts/mxstart_numa_map.conf.bak.20260628130639
Если целевой файл уже существует, команда автоматически создает резервную копию. Пути резервных копий выводятся после backups=.
membindЧтобы строго ограничить выделение памяти привязанным NUMA Node, выполните:
mxtool init numa-wrapper --memory-policy=membind --apply
Внимание! Политика
membindболее строгая. Если на привязанном NUMA Node недостаточно памяти, экземпляр может не выделить память. Перед использованием в production убедитесь в емкости памяти каждого NUMA Node и распределении экземпляров.
mxtool init numa-wrapper поддерживает следующие параметры:
| Параметр | Обязательный | Значение по умолчанию | Описание |
|---|---|---|---|
--apply |
Нет | Отключено | Развертывает скрипт Wrapper и файл сопоставления NUMA на удаленных хостах. Если параметр не указан, выполняется только предварительный просмотр без изменения удаленных файлов. |
--scope |
Нет | all |
Задает область экземпляров для генерации сопоставления. Поддерживаются all, master, standby, primary, mirror, а также комбинации через запятую, например primary,mirror. |
--target-dir |
Нет | /home/mxadmin/scripts |
Задает удаленный каталог генерации. |
--script-name |
Нет | mxstart_numa_wrapper.sh |
Задает имя файла скрипта Wrapper. |
--map-name |
Нет | mxstart_numa_map.conf |
Задает имя файла сопоставления NUMA. |
--memory-policy |
Нет | preferred |
Задает политику памяти NUMA. Поддерживаются preferred и membind. |
Команда mxtool init numa-wrapper только создает или развертывает скрипт Wrapper и файл сопоставления NUMA. Она не изменяет работающие экземпляры и не перезапускает кластер автоматически.
После развертывания при следующем запуске кластера включите привязку к NUMA Node через параметры --wrapper и --wrapper-args команды mxstart:
mxstart -a --wrapper=/home/mxadmin/scripts/mxstart_numa_wrapper.sh --wrapper-args=/home/mxadmin/scripts/mxstart_numa_map.conf
После успешного запуска в журнале будут показаны параметры Wrapper, например:
[mxadmin@mxui ~]$ mxstart -a --wrapper=/home/mxadmin/numa_wrapper.sh --wrapper-args=/home/mxadmin/seg_numa_map.csv
2026-06-24:14:04:07.552 mxstart:mxadmin:mxui:2267293-[INFO]:-Starting MatrixDB cluster with: [no-prompt:true wrapper:/home/mxadmin/numa_wrapper.sh wrapper-args:/home/mxadmin/seg_numa_map.csv].
...
2026-06-24:14:04:14.381 mxstart:mxadmin:mxui:2267293-[INFO]:-MatrixDB cluster successfully started.
После запуска кластера проверьте информацию /proc процесса postmaster.
Получите PID процесса postmaster целевого экземпляра и выполните:
cat /proc/<postmaster_pid>/status | grep Cpus_allowed_list
Если привязка CPU действует, Cpus_allowed_list покажет диапазон CPU, разрешенный процессу.
Выполните:
cat /proc/<postmaster_pid>/numa_maps
При политике preferred можно увидеть строку вида:
prefer:0
При политике membind можно увидеть строку вида:
bind:0
Число означает NUMA Node ID, к которому привязан текущий экземпляр.
При использовании --apply, если целевой скрипт Wrapper или файл сопоставления NUMA уже существует, команда сначала создает резервную копию старого файла, а затем развертывает новый.
Имя резервного файла содержит временную метку, например:
host=sdw backups=/home/mxadmin/scripts/mxstart_numa_wrapper.sh.bak.20260628130639,/home/mxadmin/scripts/mxstart_numa_map.conf.bak.20260628130639
Tip: mxstart -a --wrapper=/home/mxadmin/scripts/mxstart_numa_wrapper.sh --wrapper-args=/home/mxadmin/scripts/mxstart_numa_map.conf