NUMA 节点交错不适用于 MariaDB

NUMA 节点交错不适用于 MariaDB

请帮助激活 MariaDB 的 NUMA 节点交错。

在 CentOS Linux 版本 7.3.1611 上使用 MariaDB 10.1.21。

根据说明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 之间存在巨大的不平衡。

答案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 的脚本正在处理前一种设置,如果您没有明确指定它们,它们将被设置为默认值。

相关内容