mirror of
https://github.com/MariaDB/server.git
synced 2026-05-13 10:30:10 +02:00
MDEV-10829: Enable Innodb NUMA interleave
Code was already existing within the innobase/xtradb storage engines however without this cmake code it was never enabled. num.cmake heavily based off work by Annamalai Gurusami <annamalai.gurusami@oracle.com> Signed-off-by: Daniel Black <daniel.black@au.ibm.com>
This commit is contained in:
parent
26e3117ca9
commit
8103f6f223
6 changed files with 63 additions and 2 deletions
|
|
@ -154,6 +154,7 @@ INCLUDE(install_macros)
|
|||
INCLUDE(systemd)
|
||||
INCLUDE(mysql_add_executable)
|
||||
INCLUDE(crc32-vpmsum)
|
||||
INCLUDE(numa)
|
||||
|
||||
# Handle options
|
||||
OPTION(DISABLE_SHARED
|
||||
|
|
|
|||
38
cmake/numa.cmake
Normal file
38
cmake/numa.cmake
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
MACRO (MYSQL_CHECK_NUMA)
|
||||
|
||||
CHECK_INCLUDE_FILES(numa.h HAVE_NUMA_H)
|
||||
CHECK_INCLUDE_FILES(numaif.h HAVE_NUMAIF_H)
|
||||
|
||||
IF(HAVE_NUMA_H AND HAVE_NUMAIF_H)
|
||||
OPTION(WITH_NUMA "Explicitly set NUMA memory allocation policy" ON)
|
||||
ELSE()
|
||||
OPTION(WITH_NUMA "Explicitly set NUMA memory allocation policy" OFF)
|
||||
ENDIF()
|
||||
|
||||
IF(WITH_NUMA AND HAVE_NUMA_H AND HAVE_NUMAIF_H)
|
||||
SET(SAVE_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
|
||||
SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} numa)
|
||||
CHECK_C_SOURCE_COMPILES(
|
||||
"
|
||||
#include <numa.h>
|
||||
#include <numaif.h>
|
||||
int main()
|
||||
{
|
||||
struct bitmask *all_nodes= numa_all_nodes_ptr;
|
||||
set_mempolicy(MPOL_DEFAULT, 0, 0);
|
||||
return all_nodes != NULL;
|
||||
}"
|
||||
HAVE_LIBNUMA)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES ${SAVE_CMAKE_REQUIRED_LIBRARIES})
|
||||
ELSE()
|
||||
SET(HAVE_LIBNUMA 0)
|
||||
ENDIF()
|
||||
|
||||
IF(WITH_NUMA AND NOT HAVE_LIBNUMA)
|
||||
# Forget it in cache, abort the build.
|
||||
UNSET(WITH_NUMA CACHE)
|
||||
MESSAGE(FATAL_ERROR "Could not find numa headers/libraries")
|
||||
ENDIF()
|
||||
|
||||
ENDMACRO()
|
||||
|
||||
|
|
@ -106,6 +106,7 @@
|
|||
#cmakedefine HAVE_LIBWRAP 1
|
||||
#cmakedefine HAVE_SYSTEMD 1
|
||||
#cmakedefine HAVE_CRC32_VPMSUM 1
|
||||
#cmakedefine HAVE_LIBNUMA 1
|
||||
|
||||
/* Does "struct timespec" have a "sec" and "nsec" field? */
|
||||
#cmakedefine HAVE_TIMESPEC_TS_SEC 1
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
--loose-innodb_numa_interleave=1
|
||||
|
|
@ -29,6 +29,7 @@ MYSQL_CHECK_LZO()
|
|||
MYSQL_CHECK_LZMA()
|
||||
MYSQL_CHECK_BZIP2()
|
||||
MYSQL_CHECK_SNAPPY()
|
||||
MYSQL_CHECK_NUMA()
|
||||
|
||||
IF(CMAKE_CROSSCOMPILING)
|
||||
# Use CHECK_C_SOURCE_COMPILES instead of CHECK_C_SOURCE_RUNS when
|
||||
|
|
@ -506,8 +507,17 @@ ELSE()
|
|||
SET(LINKER_SCRIPT)
|
||||
ENDIF()
|
||||
|
||||
UNSET(NUMA_LIBRARY)
|
||||
IF(HAVE_LIBNUMA)
|
||||
SET(NUMA_LIBRARY "numa")
|
||||
ENDIF()
|
||||
|
||||
MYSQL_ADD_PLUGIN(innobase ${INNOBASE_SOURCES} STORAGE_ENGINE
|
||||
MODULE_ONLY
|
||||
MODULE_OUTPUT_NAME ha_innodb
|
||||
LINK_LIBRARIES ${ZLIB_LIBRARY} ${CRC32_VPMSUM_LIBRARY} ${LINKER_SCRIPT})
|
||||
LINK_LIBRARIES
|
||||
${ZLIB_LIBRARY}
|
||||
${CRC32_VPMSUM_LIBRARY}
|
||||
${NUMA_LIBRARY}
|
||||
${LINKER_SCRIPT})
|
||||
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ MYSQL_CHECK_LZO()
|
|||
MYSQL_CHECK_LZMA()
|
||||
MYSQL_CHECK_BZIP2()
|
||||
MYSQL_CHECK_SNAPPY()
|
||||
MYSQL_CHECK_NUMA()
|
||||
|
||||
IF(CMAKE_CROSSCOMPILING)
|
||||
# Use CHECK_C_SOURCE_COMPILES instead of CHECK_C_SOURCE_RUNS when
|
||||
|
|
@ -496,9 +497,18 @@ SET(INNOBASE_SOURCES
|
|||
ut/ut0wqueue.cc
|
||||
ut/ut0timer.cc)
|
||||
|
||||
UNSET(NUMA_LIBRARY)
|
||||
IF(HAVE_LIBNUMA)
|
||||
SET(NUMA_LIBRARY "numa")
|
||||
ENDIF()
|
||||
|
||||
MYSQL_ADD_PLUGIN(xtradb ${INNOBASE_SOURCES} STORAGE_ENGINE
|
||||
DEFAULT RECOMPILE_FOR_EMBEDDED
|
||||
LINK_LIBRARIES ${ZLIB_LIBRARY} ${CRC32_VPMSUM_LIBRARY} ${LINKER_SCRIPT})
|
||||
LINK_LIBRARIES
|
||||
${ZLIB_LIBRARY}
|
||||
${CRC32_VPMSUM_LIBRARY}
|
||||
${NUMA_LIBRARY}
|
||||
${LINKER_SCRIPT})
|
||||
|
||||
IF(TARGET xtradb AND NOT XTRADB_OK)
|
||||
MESSAGE(FATAL_ERROR "Percona XtraDB is not supported on this platform")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue