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