Gentoo Archives: gentoo-commits

From: Brian Evans <grknight@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/mysql-extras:master commit in: /
Date: Fri, 09 Feb 2018 21:42:25
Message-Id: 1518212509.04ef58d781e50b4f676789e70899e761dbdcdd0f.grknight@gentoo
1 commit: 04ef58d781e50b4f676789e70899e761dbdcdd0f
2 Author: Brian Evans <grknight <AT> gentoo <DOT> org>
3 AuthorDate: Fri Feb 9 21:41:49 2018 +0000
4 Commit: Brian Evans <grknight <AT> gentoo <DOT> org>
5 CommitDate: Fri Feb 9 21:41:49 2018 +0000
6 URL: https://gitweb.gentoo.org/proj/mysql-extras.git/commit/?id=04ef58d7
7
8 Add patch to enable NUMA in MariaDB 10.1
9
10 20029_all_mariadb-10.1.31-enable-numa.patch | 209 ++++++++++++++++++++++++++++
11 1 file changed, 209 insertions(+)
12
13 diff --git a/20029_all_mariadb-10.1.31-enable-numa.patch b/20029_all_mariadb-10.1.31-enable-numa.patch
14 new file mode 100644
15 index 0000000..41c8fa0
16 --- /dev/null
17 +++ b/20029_all_mariadb-10.1.31-enable-numa.patch
18 @@ -0,0 +1,209 @@
19 +Backport MariaDB 10.2 support into 10.1
20 +
21 +diff --git a/cmake/numa.cmake b/cmake/numa.cmake
22 +new file mode 100644
23 +index 000000000000..d5234a5ef4f6
24 +--- /dev/null
25 ++++ b/cmake/numa.cmake
26 +@@ -0,0 +1,43 @@
27 ++MACRO (MYSQL_CHECK_NUMA)
28 ++
29 ++ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
30 ++ CHECK_INCLUDE_FILES(numa.h HAVE_NUMA_H)
31 ++ CHECK_INCLUDE_FILES(numaif.h HAVE_NUMAIF_H)
32 ++
33 ++ IF(HAVE_NUMA_H AND HAVE_NUMAIF_H)
34 ++ OPTION(WITH_NUMA "Explicitly set NUMA memory allocation policy" ON)
35 ++ ELSE()
36 ++ OPTION(WITH_NUMA "Explicitly set NUMA memory allocation policy" OFF)
37 ++ ENDIF()
38 ++
39 ++ IF(WITH_NUMA AND HAVE_NUMA_H AND HAVE_NUMAIF_H)
40 ++ SET(SAVE_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
41 ++ SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} numa)
42 ++ CHECK_C_SOURCE_COMPILES(
43 ++ "
44 ++ #include <numa.h>
45 ++ #include <numaif.h>
46 ++ int main()
47 ++ {
48 ++ struct bitmask *all_nodes= numa_all_nodes_ptr;
49 ++ set_mempolicy(MPOL_DEFAULT, 0, 0);
50 ++ return all_nodes != NULL;
51 ++ }"
52 ++ HAVE_LIBNUMA)
53 ++ SET(CMAKE_REQUIRED_LIBRARIES ${SAVE_CMAKE_REQUIRED_LIBRARIES})
54 ++ IF(HAVE_LIBNUMA)
55 ++ ADD_DEFINITIONS(-DHAVE_LIBNUMA=1)
56 ++ SET(NUMA_LIBRARY "numa")
57 ++ ENDIF()
58 ++ ENDIF()
59 ++
60 ++ IF(WITH_NUMA AND NOT HAVE_LIBNUMA)
61 ++ # Forget it in cache, abort the build.
62 ++ UNSET(WITH_NUMA CACHE)
63 ++ UNSET(NUMA_LIBRARY CACHE)
64 ++ MESSAGE(FATAL_ERROR "Could not find numa headers/libraries")
65 ++ ENDIF()
66 ++ ENDIF()
67 ++
68 ++ENDMACRO()
69 ++
70 +diff --git a/mysql-test/suite/sys_vars/t/innodb_numa_interleave_basic-master.opt b/mysql-test/suite/sys_vars/t/innodb_numa_interleave_basic-master.opt
71 +new file mode 100644
72 +index 000000000000..c1c2bb26b8ac
73 +--- /dev/null
74 ++++ b/mysql-test/suite/sys_vars/t/innodb_numa_interleave_basic-master.opt
75 +@@ -0,0 +1,1 @@
76 ++--loose-innodb_numa_interleave=1
77 +diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt
78 +index 7e667d5ebb29..c80ef6f09937 100644
79 +--- a/storage/innobase/CMakeLists.txt
80 ++++ b/storage/innobase/CMakeLists.txt
81 +@@ -23,12 +23,14 @@ INCLUDE(lzo)
82 + INCLUDE(lzma)
83 + INCLUDE(bzip2)
84 + INCLUDE(snappy)
85 ++INCLUDE(numa)
86 +
87 + MYSQL_CHECK_LZ4()
88 + MYSQL_CHECK_LZO()
89 + MYSQL_CHECK_LZMA()
90 + MYSQL_CHECK_BZIP2()
91 + MYSQL_CHECK_SNAPPY()
92 ++MYSQL_CHECK_NUMA()
93 +
94 + IF(CMAKE_CROSSCOMPILING)
95 + # Use CHECK_C_SOURCE_COMPILES instead of CHECK_C_SOURCE_RUNS when
96 +@@ -63,5 +63,2 @@
97 + ENDIF()
98 + ADD_DEFINITIONS("-DUNIV_LINUX -D_GNU_SOURCE=1")
99 +- IF(HAVE_LIBNUMA)
100 +- LINK_LIBRARIES(numa)
101 +- ENDIF()
102 +@@ -517,6 +517,10 @@
103 + MYSQL_ADD_PLUGIN(innobase ${INNOBASE_SOURCES} STORAGE_ENGINE
104 + MODULE_ONLY
105 + MODULE_OUTPUT_NAME ha_innodb
106 +- LINK_LIBRARIES ${ZLIB_LIBRARY} ${LIBSYSTEMD} ${LINKER_SCRIPT})
107 ++ LINK_LIBRARIES
108 ++ ${ZLIB_LIBRARY}
109 ++ ${NUMA_LIBRARY}
110 ++ ${LIBSYSTEMD}
111 ++ ${LINKER_SCRIPT})
112 +
113 + ADD_DEPENDENCIES(innobase GenError)
114 +diff --git a/storage/xtradb/CMakeLists.txt b/storage/xtradb/CMakeLists.txt
115 +index 7d2a3fad56dc..51e24b3cd8a2 100644
116 +--- a/storage/xtradb/CMakeLists.txt
117 ++++ b/storage/xtradb/CMakeLists.txt
118 +@@ -23,12 +23,14 @@ INCLUDE(lzo)
119 + INCLUDE(lzma)
120 + INCLUDE(bzip2)
121 + INCLUDE(snappy)
122 ++INCLUDE(numa)
123 +
124 + MYSQL_CHECK_LZ4()
125 + MYSQL_CHECK_LZO()
126 + MYSQL_CHECK_LZMA()
127 + MYSQL_CHECK_BZIP2()
128 + MYSQL_CHECK_SNAPPY()
129 ++MYSQL_CHECK_NUMA()
130 +
131 + IF(CMAKE_CROSSCOMPILING)
132 + # Use CHECK_C_SOURCE_COMPILES instead of CHECK_C_SOURCE_RUNS when
133 +@@ -63,5 +63,2 @@
134 + ENDIF()
135 + ADD_DEFINITIONS("-DUNIV_LINUX -D_GNU_SOURCE=1")
136 +- IF(HAVE_LIBNUMA)
137 +- LINK_LIBRARIES(numa)
138 +- ENDIF()
139 +@@ -507,6 +507,9 @@
140 + MYSQL_ADD_PLUGIN(xtradb ${INNOBASE_SOURCES} STORAGE_ENGINE
141 + DEFAULT RECOMPILE_FOR_EMBEDDED
142 +- LINK_LIBRARIES ${ZLIB_LIBRARY} ${LINKER_SCRIPT})
143 ++ LINK_LIBRARIES
144 ++ ${ZLIB_LIBRARY}
145 ++ ${NUMA_LIBRARY}
146 ++ ${LINKER_SCRIPT})
147 +
148 + IF(TARGET xtradb AND NOT XTRADB_OK)
149 + MESSAGE(FATAL_ERROR "Percona XtraDB is not supported on this platform")
150 +diff --git a/mysql-test/include/have_numa.inc b/mysql-test/include/have_numa.inc
151 +new file mode 100644
152 +index 000000000000..18bca99e04d7
153 +--- /dev/null
154 ++++ b/mysql-test/include/have_numa.inc
155 +@@ -0,0 +1,9 @@
156 ++let $numa_support = `SELECT COUNT(VARIABLE_VALUE) = 1 FROM
157 ++ INFORMATION_SCHEMA.GLOBAL_VARIABLES
158 ++ WHERE VARIABLE_NAME='innodb_numa_interleave'`;
159 ++
160 ++if ( $numa_support == 0 )
161 ++{
162 ++ --skip Test requires: Binary must be built with NUMA support.
163 ++}
164 ++
165 +diff --git a/mysql-test/suite/sys_vars/r/innodb_numa_interleave_basic.result b/mysql-test/suite/sys_vars/r/innodb_numa_interleave_basic.result
166 +new file mode 100644
167 +index 000000000000..21ed16c1dab8
168 +--- /dev/null
169 ++++ b/mysql-test/suite/sys_vars/r/innodb_numa_interleave_basic.result
170 +@@ -0,0 +1,11 @@
171 ++call mtr.add_suppression("InnoDB: Failed to set NUMA memory policy");
172 ++SELECT @@GLOBAL.innodb_numa_interleave;
173 ++@@GLOBAL.innodb_numa_interleave
174 ++1
175 ++SET @@GLOBAL.innodb_numa_interleave=off;
176 ++ERROR HY000: Variable 'innodb_numa_interleave' is a read only variable
177 ++SELECT @@GLOBAL.innodb_numa_interleave;
178 ++@@GLOBAL.innodb_numa_interleave
179 ++1
180 ++SELECT @@SESSION.innodb_numa_interleave;
181 ++ERROR HY000: Variable 'innodb_numa_interleave' is a GLOBAL variable
182 +diff --git a/mysql-test/suite/sys_vars/t/innodb_numa_interleave_basic.test b/mysql-test/suite/sys_vars/t/innodb_numa_interleave_basic.test
183 +new file mode 100644
184 +index 000000000000..518b5ebba177
185 +--- /dev/null
186 ++++ b/mysql-test/suite/sys_vars/t/innodb_numa_interleave_basic.test
187 +@@ -0,0 +1,15 @@
188 ++--source include/have_innodb.inc
189 ++--source include/have_numa.inc
190 ++
191 ++call mtr.add_suppression("InnoDB: Failed to set NUMA memory policy");
192 ++
193 ++SELECT @@GLOBAL.innodb_numa_interleave;
194 ++
195 ++--error ER_INCORRECT_GLOBAL_LOCAL_VAR
196 ++SET @@GLOBAL.innodb_numa_interleave=off;
197 ++
198 ++SELECT @@GLOBAL.innodb_numa_interleave;
199 ++
200 ++--error ER_INCORRECT_GLOBAL_LOCAL_VAR
201 ++SELECT @@SESSION.innodb_numa_interleave;
202 ++
203 +diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb.result b/mysql-test/suite/sys_vars/r/sysvars_innodb.result
204 +index 87e000faf025..ad6dcc1bb643 100644
205 +--- a/mysql-test/suite/sys_vars/r/sysvars_innodb.result
206 ++++ b/mysql-test/suite/sys_vars/r/sysvars_innodb.result
207 +@@ -2,6 +2,7 @@ select * from information_schema.system_variables
208 + where variable_name like 'innodb%' and
209 + variable_name not in (
210 + 'innodb_disallow_writes', # only available WITH_WSREP
211 ++'innodb_numa_interleave', # only available WITH_NUMA
212 + 'innodb_sched_priority_cleaner', # linux only
213 + 'innodb_use_native_aio') # default value depends on OS
214 + order by variable_name;
215 +diff --git a/mysql-test/suite/sys_vars/t/sysvars_innodb.test b/mysql-test/suite/sys_vars/t/sysvars_innodb.test
216 +index bd8442b6a443..38f248cb6113 100644
217 +--- a/mysql-test/suite/sys_vars/t/sysvars_innodb.test
218 ++++ b/mysql-test/suite/sys_vars/t/sysvars_innodb.test
219 +@@ -9,6 +9,7 @@ select * from information_schema.system_variables
220 + where variable_name like 'innodb%' and
221 + variable_name not in (
222 + 'innodb_disallow_writes', # only available WITH_WSREP
223 ++ 'innodb_numa_interleave', # only available WITH_NUMA
224 + 'innodb_sched_priority_cleaner', # linux only
225 + 'innodb_use_native_aio') # default value depends on OS
226 + order by variable_name;
227 +