Bug #78953 innodb_numa_interleave is not available in generic linux .tar.gz

Submitted: 24 Oct 2015 12:33 Modified: 26 Jan 7:50
Reporter: Shane Bester (Platinum Quality Contributor) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Compiling Severity:S4 (Feature request)
Version:5.6.27 OS:Any
Assigned to: CPU Architecture:Any

[24 Oct 2015 12:33] Shane Bester
Description:
I want to try out innodb_numa_interleave but do not want to build mysqld myself or use RPM.

mysql> show variables like 'innodb_numa_interleave';
Empty set (0.00 sec)

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.27    |
+-----------+
1 row in set (0.00 sec)

How to repeat:
http://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_numa_interleav...

Suggested fix:
Can numa functions be built into existing binary but just disabled if OS doesn't support it?
[6 Jan 2016 14:31] Smith Tim
It is also reproducible with MySQL 5.6.28 on Windows via the MSI installer.

 mysql> show global variables like '%version%'; 
 +-------------------------+------------------------------+ 
 | Variable_name | Value | 
 +-------------------------+------------------------------+ 
 | innodb_version | 5.6.28 | 
 | protocol_version | 10 | 
 | slave_type_conversions | | 
 | version | 5.6.28-log | 
 | version_comment | MySQL Community Server (GPL) | 
 | version_compile_machine | x86_64 | 
 | version_compile_os | Win64 | 
 +-------------------------+------------------------------+ 
 7 rows in set (0.00 sec) 

 mysql> show global variables like '%numa%'; 
 Empty set (0.00 sec)
[15 Jun 2016 18:14] Ivan Groenewold
This was fixed in the Percona 5.7.12 release. To fix in the 5.6 branch the following changes are needed:

diff --git a/config.h.cmake b/config.h.cmake
index 5b7445f..03de450 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -663,5 +663,6 @@
 
 #cmakedefine CPU_LEVEL1_DCACHE_LINESIZE @CPU_LEVEL1_DCACHE_LINESIZE@
 #cmakedefine HAVE_LIBNUMA 1
+#cmakedefine WITH_NUMA 1
 
 #endif
diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc
index 6f20691..6096d0c 100644
--- a/storage/innobase/buf/buf0buf.cc
+++ b/storage/innobase/buf/buf0buf.cc
@@ -53,10 +53,10 @@ Created 11/5/1995 Heikki Tuuri
 #include "page0zip.h"
 #include "srv0mon.h"
 #include "buf0checksum.h"
-#ifdef HAVE_LIBNUMA
+#ifdef HAVE_LIBNUMA && defined(WITH_NUMA) && !defined(UNIV_INNOCHECKSUM)
 #include <numa.h>
 #include <numaif.h>
-#endif // HAVE_LIBNUMA
+#endif // HAVE_LIBNUMA && WITH_NUMA
 
 /*
                IMPLEMENTATION OF THE BUFFER POOL
[26 Jan 7:55] Shane Bester
this was already solved in all supported versions, not sure exactly when

[x@y mysql-commercial-8.0.43-linux-glibc2.17-x86_64]$ ./bin/mysqld --help --verbose | grep numa
  --innodb-numa-interleave
innodb-numa-interleave                                       FALSE

[x@y mysql-commercial-8.4.6-linux-glibc2.17-x86_64]$ ./bin/mysqld --help --verbose | grep numa
  --innodb-numa-interleave
                      (Defaults to on; use --skip-innodb-numa-interleave to disable.)
innodb-numa-interleave                                       TRUE

[x@y mysql-commercial-9.4.0-linux-glibc2.17-x86_64]$ ./bin/mysqld --help --verbose | grep numa
  --innodb-numa-interleave
                      (Defaults to on; use --skip-innodb-numa-interleave to disable.)
innodb-numa-interleave                                       TRUE

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.038 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.