Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save v0112358/7d1c4e32922f339b08783afee13131c3 to your computer and use it in GitHub Desktop.
Save v0112358/7d1c4e32922f339b08783afee13131c3 to your computer and use it in GitHub Desktop.
Slow startup MySQL 5.7 with innodb_numa_interleave=ON
  • innodb_numa_interleave=OFF
# time systemctl restart mysqld

real	0m18.380s
user	0m0.007s
sys	0m0.005s
2021-03-11T11:25:45.500980+07:00 0 [Note] InnoDB: Uses event mutexes
2021-03-11T11:25:45.500983+07:00 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2021-03-11T11:25:45.500988+07:00 0 [Note] InnoDB: Compressed tables use zlib 1.2.7
2021-03-11T11:25:45.501000+07:00 0 [Note] InnoDB: Using Linux native AIO
2021-03-11T11:25:45.501740+07:00 0 [Note] InnoDB: Number of pools: 1
2021-03-11T11:25:45.501859+07:00 0 [Note] InnoDB: Using CPU crc32 instructions
2021-03-11T11:25:45.507234+07:00 0 [Note] InnoDB: Initializing buffer pool, total size = 272G, instances = 64, chunk size = 128M
2021-03-11T11:25:52.337316+07:00 0 [Note] InnoDB: Completed initialization of buffer pool
$ sudo numactl -H
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 24 25 26 27 28 29 30 31 32 33 34 35
node 0 size: 193266 MB
node 0 free: 165523 MB
node 1 cpus: 12 13 14 15 16 17 18 19 20 21 22 23 36 37 38 39 40 41 42 43 44 45 46 47
node 1 size: 193531 MB
node 1 free: 187182 MB
node distances:
node   0   1
  0:  10  20
  1:  20  10
  • innodb_numa_interleave=ON
# time systemctl restart mysqld

real	4m38.087s
user	0m0.003s
sys	0m0.010s
2021-03-11T11:26:34.986108+07:00 0 [Note] InnoDB: Uses event mutexes
2021-03-11T11:26:34.986118+07:00 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2021-03-11T11:26:34.986128+07:00 0 [Note] InnoDB: Compressed tables use zlib 1.2.7
2021-03-11T11:26:34.986180+07:00 0 [Note] InnoDB: Using Linux native AIO
2021-03-11T11:26:34.986990+07:00 0 [Note] InnoDB: Number of pools: 1
2021-03-11T11:26:34.987122+07:00 0 [Note] InnoDB: Using CPU crc32 instructions
2021-03-11T11:26:34.992321+07:00 0 [Note] InnoDB: Initializing buffer pool, total size = 272G, instances = 64, chunk size = 128M
2021-03-11T11:26:34.992357+07:00 0 [Note] InnoDB: Setting NUMA memory policy to MPOL_INTERLEAVE


2021-03-11T11:30:58.111169+07:00 0 [Note] InnoDB: Setting NUMA memory policy to MPOL_DEFAULT
2021-03-11T11:30:58.111262+07:00 0 [Note] InnoDB: Completed initialization of buffer pool
$ sudo numactl -H
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 24 25 26 27 28 29 30 31 32 33 34 35
node 0 size: 193266 MB
node 0 free: 36306 MB
node 1 cpus: 12 13 14 15 16 17 18 19 20 21 22 23 36 37 38 39 40 41 42 43 44 45 46 47
node 1 size: 193531 MB
node 1 free: 39534 MB
node distances:
node   0   1
  0:  10  20
  1:  20  10

InnoDB: The new innodb_numa_interleave read-only configuration option allows you to enable the NUMA interleave memory policy for allocation of the InnoDB buffer pool. When innodb_numa_interleave is enabled, the NUMA memory policy is set to MPOL_INTERLEAVE for the mysqld process. After the InnoDB buffer pool is allocated, the NUMA memory policy is set back to MPOL_DEFAULT. This option is only available on NUMA-enabled Linux systems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment