Index: mysql-5.7.4-m14/sql/mysqld.cc =================================================================== --- mysql-5.7.4-m14.orig/sql/mysqld.cc +++ mysql-5.7.4-m14/sql/mysqld.cc @@ -22,6 +22,10 @@ #include #include +#if HAVE_LIBNUMA +#include +#endif + #include "sql_priv.h" #include "unireg.h" #include @@ -4246,6 +4250,10 @@ int mysqld_main(int argc, char **argv) */ my_progname= argv[0]; +#ifdef HAVE_LIBNUMA + set_mempolicy(MPOL_INTERLEAVE, NULL, 0); +#endif + #ifndef _WIN32 #ifdef WITH_PERFSCHEMA_STORAGE_ENGINE pre_initialize_performance_schema(); @@ -4687,6 +4695,12 @@ int mysqld_main(int argc, char **argv) Service.SetRunning(); #endif +#ifdef HAVE_LIBNUMA + set_mempolicy(MPOL_DEFAULT, NULL, 0); + sql_print_information("Setting NUMA memory allocation policy"); +#else + sql_print_information("NOT setting NUMA memory allocation policy."); +#endif /* Signal threads waiting for server to be started */ mysql_mutex_lock(&LOCK_server_started); Index: mysql-5.7.4-m14/config.h.cmake =================================================================== --- mysql-5.7.4-m14.orig/config.h.cmake +++ mysql-5.7.4-m14/config.h.cmake @@ -483,4 +483,5 @@ #cmakedefine DISABLE_PSI_MEMORY 1 #cmakedefine DISABLE_PSI_TRANSACTION 1 +#cmakedefine HAVE_LIBNUMA 1 #endif Index: mysql-5.7.4-m14/configure.cmake =================================================================== --- mysql-5.7.4-m14.orig/configure.cmake +++ mysql-5.7.4-m14/configure.cmake @@ -963,3 +963,17 @@ CHECK_STRUCT_HAS_MEMBER("struct sockaddr "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_SOCKADDR_IN6_SIN6_LEN) SET(CMAKE_EXTRA_INCLUDE_FILES) + +CHECK_INCLUDE_FILES (numaif.h HAVE_NUMAIF_H) +SET(WITH_NUMA 1 CACHE BOOL "Explicitly set NUMA memory allocation policy") +IF(HAVE_NUMAIF_H AND WITH_NUMA) + SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} numa) + CHECK_C_SOURCE_COMPILES( + " + #include + int main() + { + set_mempolicy(MPOL_DEFAULT, 0, 0); + }" + HAVE_LIBNUMA) +ENDIF() Index: mysql-5.7.4-m14/sql/CMakeLists.txt =================================================================== --- mysql-5.7.4-m14.orig/sql/CMakeLists.txt +++ mysql-5.7.4-m14/sql/CMakeLists.txt @@ -385,6 +385,10 @@ ENDIF() SET_TARGET_PROPERTIES(mysqld PROPERTIES ENABLE_EXPORTS TRUE) TARGET_LINK_LIBRARIES(mysqld sql binlog rpl master slave sql mysys mysys_ssl) +IF(HAVE_LIBNUMA) + TARGET_LINK_LIBRARIES(sql numa) +ENDIF() + # Provide plugins with minimal set of libraries SET(INTERFACE_LIBS ${LIBRT}) IF(INTERFACE_LIBS)