mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
Add support for basic NUMA awareness
Add basic NUMA awareness routines, using a minimal src/port/pg_numa.c portability wrapper and an optional build dependency, enabled by --with-libnuma configure option. For now this is Linux-only, other platforms may be supported later. A built-in SQL function pg_numa_available() allows checking NUMA support, i.e. that the server was built/linked with the NUMA library. The main function introduced is pg_numa_query_pages(), which allows determining the NUMA node for individual memory pages. Internally the function uses move_pages(2) syscall, as it allows batching, and is more efficient than get_mempolicy(2). Author: Jakub Wartak <jakub.wartak@enterprisedb.com> Co-authored-by: Bertrand Drouvot <bertranddrouvot.pg@gmail.com> Reviewed-by: Andres Freund <andres@anarazel.de> Reviewed-by: Álvaro Herrera <alvherre@alvh.no-ip.org> Reviewed-by: Tomas Vondra <tomas@vondra.me> Discussion: https://postgr.es/m/CAKZiRmxh6KWo0aqRqvmcoaX2jUxZYb4kGp3N%3Dq1w%2BDiH-696Xw%40mail.gmail.com
This commit is contained in:
23
meson.build
23
meson.build
@ -943,6 +943,27 @@ else
|
||||
endif
|
||||
|
||||
|
||||
###############################################################
|
||||
# Library: libnuma
|
||||
###############################################################
|
||||
|
||||
libnumaopt = get_option('libnuma')
|
||||
if not libnumaopt.disabled()
|
||||
# via pkg-config
|
||||
libnuma = dependency('numa', required: false)
|
||||
if not libnuma.found()
|
||||
libnuma = cc.find_library('numa', required: libnumaopt)
|
||||
endif
|
||||
if not cc.has_header('numa.h', dependencies: libnuma, required: libnumaopt)
|
||||
libnuma = not_found_dep
|
||||
endif
|
||||
if libnuma.found()
|
||||
cdata.set('USE_LIBNUMA', 1)
|
||||
endif
|
||||
else
|
||||
libnuma = not_found_dep
|
||||
endif
|
||||
|
||||
|
||||
###############################################################
|
||||
# Library: liburing
|
||||
@ -3279,6 +3300,7 @@ backend_both_deps += [
|
||||
icu_i18n,
|
||||
ldap,
|
||||
libintl,
|
||||
libnuma,
|
||||
liburing,
|
||||
libxml,
|
||||
lz4,
|
||||
@ -3935,6 +3957,7 @@ if meson.version().version_compare('>=0.57')
|
||||
'icu': icu,
|
||||
'ldap': ldap,
|
||||
'libcurl': libcurl,
|
||||
'libnuma': libnuma,
|
||||
'liburing': liburing,
|
||||
'libxml': libxml,
|
||||
'libxslt': libxslt,
|
||||
|
Reference in New Issue
Block a user