Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Группы ресурсов
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Проверьте версию cgroup, настроенную в вашей системе, посмотрев файловые системы, монтируемые по умолчанию при загрузке:
stat -fc %T /sys/fs/cgroup/
Для cgroup v1 вывод будет tmpfs. Для cgroup v2 — cgroup2fs.
Если изменение версии cgroup не требуется, переходите сразу к разделу Настройка cgroup v1 или Настройка cgroup v2, чтобы завершить конфигурацию.
Чтобы переключиться с cgroup v1 на v2, выполните от имени root следующую команду:
grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="systemd.unified_cgroup_hierarchy=1"
vim /etc/default/grub
# добавьте или измените: GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=1"
update-grub
Чтобы переключиться с cgroup v2 на v1, выполните от имени root:
grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="systemd.unified_cgroup_hierarchy=0 systemd.legacy_systemd_cgroup_controller"
vim /etc/default/grub
# добавьте или измените: GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=0"
update-grub
Если вы планируете продолжать использовать cgroup v1, убедитесь, что в файлах memory.limit_in_bytes внутри /sys/fs/cgroup/memory/gpdb/ не установлены ограничения. Это касается как /sys/fs/cgroup/memory/gpdb/memory.limit_in_bytes, так и /sys/fs/cgroup/memory/gpdb/[OID]/memory.limit_in_bytes. Если ограничение задано, выполните:
echo -1 > memory.limit_in_bytes
Затем перезагрузите хост, чтобы изменения вступили в силу.
Примечание!
Для редактирования этого файла необходимо использовать суперпользователя или пользователя с правамиsudo.
vi /etc/cgconfig.conf
Добавьте в файл конфигурации следующее содержимое:
group gpdb {
perm {
task {
uid = mxadmin;
gid = mxadmin;
}
admin {
uid = mxadmin;
gid = mxadmin;
}
}
cpu {
}
cpuacct {
}
cpuset {
}
memory {
}
}
Эта конфигурация включает управление пропускной способностью ЦПУ, учёт использования ЦПУ, привязку к ядрам процессора и ограничение памяти под управлением пользователя mxadmin.
cgroup на каждом узле кластера YMatrix:cgconfigparser -l /etc/cgconfig.conf
systemctl enable cgconfig.service
systemctl start cgconfig.service
cgroup на узле:grep cgroup /proc/mounts
cgroup в /sys/fs/cgroup:tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_prio,net_cls 0 0
cgroup /sys/fs/cgroup/pids cgroup rw,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
ls -l <cgroup_mount_point>/cpu/gpdb
ls -l <cgroup_mount_point>/cpuset/gpdb
ls -l <cgroup_mount_point>/memory/gpdb
Если эти каталоги существуют и принадлежат пользователю mxadmin:mxadmin, значит, cgroup успешно настроен для управления ресурсами YMatrix.
grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1"
reboot now
/sys/fs/cgroup/matrixdb6.service, включите все необходимые контроллеры и убедитесь, что пользователь mxadmin имеет права на чтение и запись:mkdir -p /sys/fs/cgroup/matrixdb6.service
echo "+cpuset +io +cpu +memory" | tee -a /sys/fs/cgroup/cgroup.subtree_control
chown -R mxadmin:mxadmin /sys/fs/cgroup/matrixdb6.service
При выполнении этих команд может возникнуть ошибка «invalid argument». Она появляется, потому что cgroup v2 не поддерживает управление процессами реального времени, если не все такие процессы находятся в корневой cgroup. В этом случае найдите все процессы реального времени, переместите их в корневую cgroup, а затем повторно включите контроллеры.
Убедитесь, что у пользователя mxadmin есть право записи в /sys/fs/cgroup/cgroup.procs. Это позволяет процессам YMatrix после запуска кластера перемещаться из пользовательского среза (user slice) в /sys/fs/cgroup/matrixdb6.service/, обеспечивая управление процессом postmaster и его вспомогательными процессами:
chmod a+w /sys/fs/cgroup/cgroup.procs
Поскольку группы ресурсов управляют файлами cgroup вручную, это разрешение будет утеряно после перезагрузки системы. Чтобы сделать его постоянным, настройте systemd на автоматический запуск скрипта при загрузке. Выполните следующие действия от имени root:
Создайте файл юнита matrixdb6.service:
vim /etc/systemd/system/matrixdb6.service
Добавьте в matrixdb6.service следующее содержимое. При необходимости замените mxadmin на соответствующего пользователя:
[Unit]
Description=Greenplum Cgroup v2 Configuration Service
[Service]
Type=simple
WorkingDirectory=/sys/fs/cgroup/matrixdb6.service
Delegate=yes
Slice=-.slice
# set hierarchies only if cgroup v2 mounted
ExecCondition=bash -c '[ xcgroup2fs = x$(stat -fc "%%T" /sys/fs/cgroup) ] || exit 1'
ExecStartPre=bash -ec " \
chown -R mxadmin:mxadmin .; \
chmod a+w ../cgroup.procs; \
mkdir -p helper.scope"
ExecStart=sleep infinity
ExecStartPost=bash -ec "echo $MAINPID > /sys/fs/cgroup/cgroup.procs;"
[Install]
WantedBy=basic.target
systemd и включите службу:systemctl daemon-reload
systemctl enable matrixdb6.service