From 402c7584a81c6c2bca00ae7890d501221c5f8096 Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Fri, 23 Mar 2018 12:58:11 +1100 Subject: [PATCH] MDEV-13785: move defination HAVE_LARGE_PAGES -> HAVE_LINUX_LARGE_PAGES HAVE_LARGE_PAGES was always Linux but now there is HAVE_SOLARIS_LARGE_PAGES in the code base. Innodb was using HAVE_LINUX_LARGE_PAGES so keep this consistent everywhere. Test plan: $ grep Hugepagesize: /proc/meminfo Hugepagesize: 2048 kB $ sudo sysctl vm.nr_hugepages=1024 vm.nr_hugepages = 1024 $ sudo sysctl kernel.shmmax=$(( 2 * 1024 *1024 * 1024 )) kernel.shmmax = 2147483648 No errors in ouput: $ sql/mysqld --skip-networking --datadir=/tmp/datadir --log-bin=/tmp/datadir/mysqlbin --socket /tmp/s.sock --lc-messages-dir=${PWD}/sql/share --verbose --large-pages=1 2018-03-23 12:51:18 139697428129984 [Note] sql/mysqld (mysqld 10.2.14-MariaDB-log) starting as process 25406 ... 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Uses event mutexes 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Compressed tables use zlib 1.2.11 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Using Linux native AIO 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Number of pools: 1 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Using SSE2 crc32 instructions 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Completed initialization of buffer pool 2018-03-23 12:51:18 139696883590912 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Highest supported file format is Barracuda. 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: 128 out of 128 rollback segments are active. 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1" 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Creating shared tablespace for temporary tables 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: File './ibtmp1' size is now 12 MB. 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: 5.7.21 started; log sequence number 1620099 2018-03-23 12:51:18 139696713733888 [Note] InnoDB: Loading buffer pool(s) from /tmp/datadir/ib_buffer_pool 2018-03-23 12:51:18 139696713733888 [Note] InnoDB: Buffer pool(s) load completed at 180323 12:51:18 2018-03-23 12:51:18 139697428129984 [Note] Plugin 'FEEDBACK' is disabled. 2018-03-23 12:51:18 139697428129984 [Note] Reading of all Master_info entries succeded 2018-03-23 12:51:18 139697428129984 [Note] Added new Master_info '' to hash table 2018-03-23 12:51:18 139697428129984 [Note] sql/mysqld: ready for connections. Version: '10.2.14-MariaDB-log' socket: '/tmp/s.sock' port: 0 Source distribution $ grep -i huge /proc/25406/smaps | grep -v ' 0 kB' Private_Hugetlb: 8192 kB Private_Hugetlb: 2048 kB $ grep huge /proc/25406/numa_maps 7f0d74400000 default file=/SYSV00000000\040(deleted) huge 7f0dbd200000 default file=/SYSV00000000\040(deleted) huge dirty=4 N0=4 kernelpagesize_kB=2048 7f0dc5600000 default file=/SYSV00000000\040(deleted) huge 7f0dd1200000 default file=/SYSV00000000\040(deleted) huge dirty=1 N0=1 kernelpagesize_kB=2048 $ grep Huge /proc/meminfo AnonHugePages: 0 kB ShmemHugePages: 0 kB HugePages_Total: 940 HugePages_Free: 935 HugePages_Rsvd: 177 HugePages_Surp: 0 Hugepagesize: 2048 kB Ran again with --memlock (note needs ulimit -l > size) $ grep Huge /proc/meminfo AnonHugePages: 0 kB ShmemHugePages: 0 kB HugePages_Total: 940 HugePages_Free: 758 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB $ grep huge /proc/26020/numa_maps 7fe870400000 default file=/SYSV00000000\040(deleted) huge dirty=62 N0=62 kernelpagesize_kB=2048 7fe8b3a00000 default file=/SYSV00000000\040(deleted) huge dirty=66 N0=66 kernelpagesize_kB=2048 7fe8bd600000 default file=/SYSV00000000\040(deleted) huge dirty=53 N0=53 kernelpagesize_kB=2048 7fe8c8400000 default file=/SYSV00000000\040(deleted) huge dirty=1 N0=1 kernelpagesize_kB=2048 $ grep -i huge /proc/26020/smaps | grep -v ' 0 kB' Private_Hugetlb: 126976 kB Private_Hugetlb: 135168 kB Private_Hugetlb: 108544 kB Private_Hugetlb: 2048 kB --- cmake/os/Linux.cmake | 2 +- config.h.cmake | 2 +- include/my_sys.h | 6 +++--- mysys/CMakeLists.txt | 2 +- mysys/my_largepage.c | 4 ++-- mysys/my_static.c | 2 +- sql/mysqld.cc | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cmake/os/Linux.cmake b/cmake/os/Linux.cmake index b0680d92a1b..6c846570ea7 100644 --- a/cmake/os/Linux.cmake +++ b/cmake/os/Linux.cmake @@ -45,7 +45,7 @@ SET(_FILE_OFFSET_BITS 64) # Linux specific HUGETLB /large page support CHECK_SYMBOL_EXISTS(SHM_HUGETLB sys/shm.h HAVE_DECL_SHM_HUGETLB) IF(HAVE_DECL_SHM_HUGETLB) - SET(HAVE_LARGE_PAGES 1) + SET(HAVE_LINUX_LARGE_PAGES 1) SET(HUGETLB_USE_PROC_MEMINFO 1) SET(HAVE_LARGE_PAGE_OPTION 1) ENDIF() diff --git a/config.h.cmake b/config.h.cmake index c18e17179fd..3e5a9a95397 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -394,7 +394,7 @@ #cmakedefine HAVE_GCC_C11_ATOMICS 1 #cmakedefine HAVE_SOLARIS_ATOMIC 1 #cmakedefine HAVE_DECL_SHM_HUGETLB 1 -#cmakedefine HAVE_LARGE_PAGES 1 +#cmakedefine HAVE_LINUX_LARGE_PAGES 1 #cmakedefine HUGETLB_USE_PROC_MEMINFO 1 #cmakedefine NO_FCNTL_NONBLOCK 1 #cmakedefine NO_ALARM 1 diff --git a/include/my_sys.h b/include/my_sys.h index fb3e15b64a4..a7ab851a5fe 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -176,7 +176,7 @@ extern void *my_memdup(const void *from,size_t length,myf MyFlags); extern char *my_strdup(const char *from,myf MyFlags); extern char *my_strndup(const char *from, size_t length, myf MyFlags); -#ifdef HAVE_LARGE_PAGES +#ifdef HAVE_LINUX_LARGE_PAGES extern uint my_get_large_page_size(void); extern uchar * my_large_malloc(size_t size, myf my_flags); extern void my_large_free(uchar *ptr); @@ -184,7 +184,7 @@ extern void my_large_free(uchar *ptr); #define my_get_large_page_size() (0) #define my_large_malloc(A,B) my_malloc_lock((A),(B)) #define my_large_free(A) my_free_lock((A)) -#endif /* HAVE_LARGE_PAGES */ +#endif /* HAVE_LINUX_LARGE_PAGES */ void my_init_atomic_write(void); #ifdef __linux__ @@ -242,7 +242,7 @@ extern int sf_leaking_memory; /* set to 1 to disable memleak detection */ extern void (*proc_info_hook)(void *, const PSI_stage_info *, PSI_stage_info *, const char *, const char *, const unsigned int); -#ifdef HAVE_LARGE_PAGES +#ifdef HAVE_LINUX_LARGE_PAGES extern my_bool my_use_large_pages; extern uint my_large_page_size; #endif diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt index b9f92124cc3..26dbd953324 100644 --- a/mysys/CMakeLists.txt +++ b/mysys/CMakeLists.txt @@ -63,7 +63,7 @@ IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND CMAKE_C_COMPILER_ID MATCHES "SunPro") PROPERTIES COMPILE_FLAGS "${CMAKE_CURRENT_SOURCE_DIR}/my_timer_cycles.il") ENDIF() -IF(HAVE_LARGE_PAGES) +IF(HAVE_LINUX_LARGE_PAGES) SET(MYSYS_SOURCES ${MYSYS_SOURCES} my_largepage.c) ENDIF() diff --git a/mysys/my_largepage.c b/mysys/my_largepage.c index 59f815a9d87..dab63ae3817 100644 --- a/mysys/my_largepage.c +++ b/mysys/my_largepage.c @@ -15,7 +15,7 @@ #include "mysys_priv.h" -#ifdef HAVE_LARGE_PAGES +#ifdef HAVE_LINUX_LARGE_PAGES #ifdef HAVE_SYS_IPC_H #include @@ -163,4 +163,4 @@ my_bool my_large_free_int(uchar *ptr) } #endif /* HAVE_DECL_SHM_HUGETLB */ -#endif /* HAVE_LARGE_PAGES */ +#endif /* HAVE_LINUX_LARGE_PAGES */ diff --git a/mysys/my_static.c b/mysys/my_static.c index 08edf2c4200..f2a9fbb7335 100644 --- a/mysys/my_static.c +++ b/mysys/my_static.c @@ -59,7 +59,7 @@ USED_MEM* my_once_root_block=0; /* pointer to first block */ uint my_once_extra=ONCE_ALLOC_INIT; /* Memory to alloc / block */ /* from my_largepage.c */ -#ifdef HAVE_LARGE_PAGES +#ifdef HAVE_LINUX_LARGE_PAGES my_bool my_use_large_pages= 0; uint my_large_page_size= 0; #endif diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 01f5febd5a0..1c4fcaeca20 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -4318,7 +4318,7 @@ static int init_common_variables() DBUG_PRINT("info",("%s Ver %s for %s on %s\n",my_progname, server_version, SYSTEM_TYPE,MACHINE_TYPE)); -#ifdef HAVE_LARGE_PAGES +#ifdef HAVE_LINUX_LARGE_PAGES /* Initialize large page size */ if (opt_large_pages) { @@ -4333,7 +4333,7 @@ static int init_common_variables() else SYSVAR_AUTOSIZE(opt_large_pages, 0); } -#endif /* HAVE_LARGE_PAGES */ +#endif /* HAVE_LINUX_LARGE_PAGES */ #ifdef HAVE_SOLARIS_LARGE_PAGES #define LARGE_PAGESIZE (4*1024*1024) /* 4MB */ #define SUPER_LARGE_PAGESIZE (256*1024*1024) /* 256MB */