Пожалуйста, помогите активировать чередование узлов NUMA для MariaDB.
Использование MariaDB 10.1.21 в CentOS Linux версии 7.3.1611.
Согласно инструкциям на https://mariadb.com/kb/en/mariadb/systemd/ добавлен /etc/systemd/system/mariadb.service.d/custom.conf:
[Service]
ExecStart=/usr/bin/numactl --interleave=all /usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION
/ var / log / messages показывает, что вызывается numactl:
Feb 23 10:40:46 host systemd: Starting MariaDB database server...
Feb 23 10:40:46 host numactl: 2017-02-23 10:40:46 140580844599552 [Note] /usr/sbin/mysqld (mysqld 10.1.21-MariaDB) starting as process 37349 ...
Feb 23 10:40:51 host systemd: Started MariaDB database server.
Но numastat показывает, что чередование узлов NUMA не работает:
[root@host ~]# numastat -p $(pidof mysqld)
Per-node process memory usage (in MBs) for PID 37349 (mysqld)
Node 0 Node 1 Total
--------------- --------------- ---------------
Huge 0.00 0.00 0.00
Heap 0.00 0.00 0.00
Stack 2711.53 1330.39 4041.92
Private 23868.98 6126.55 29995.54
---------------- --------------- --------------- ---------------
Total 26580.51 7456.95 34037.46
Как видите, между узлом 0 и узлом 1 существует огромный дисбаланс.
Я бы рекомендовал начать сначала с проверки, применялась ли эта политика на самом деле. Проверьте, если /proc/…PID-of-interest…/numa_maps
есть записи, обозначенные как interleave:
.
Для е. грамм.:
7ffecdccd000 interleave:0-1 stack anon=8 dirty=8 active=1 N0=4 N1=4 kernelpagesize_kB=4
(Я полагаю, вы не найдете такого.)
Вторая вещь, о которой я могу думать, это:
[mysqld]
…
innodb_numa_interleave = on
…
[mysqld_safe]
…
numa_interleave = on
…
- По крайней мере, скрипты Percona обрабатывают предыдущую настройку, и может быть так, что, если вы явно не указали их, они будут установлены по умолчанию.