diff --git a/ChangeLog b/ChangeLog index b2df03d8f63..b6a3fc9e935 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ This release: - Significantly reduces the libpmem's stack usage. + - Make memset_* function non-inline to prevent huge stack consumption. Tue Aug 8 2023 Oksana Sałyk diff --git a/src/libpmem2/x86_64/memset/memset_t_avx.c b/src/libpmem2/x86_64/memset/memset_t_avx.c index 4c989d86706..919d017416e 100644 --- a/src/libpmem2/x86_64/memset/memset_t_avx.c +++ b/src/libpmem2/x86_64/memset/memset_t_avx.c @@ -86,7 +86,7 @@ memset_mov1x64b(char *dest, __m256i ymm, flush64b_fn flush64b) flush64b(dest + 0 * 64); } -static force_inline void +static void memset_mov_avx(char *dest, int c, size_t len, flush_fn flush, flush64b_fn flush64b) { diff --git a/src/libpmem2/x86_64/memset/memset_t_avx512f.c b/src/libpmem2/x86_64/memset/memset_t_avx512f.c index f2127f2b09c..0d6b2880892 100644 --- a/src/libpmem2/x86_64/memset/memset_t_avx512f.c +++ b/src/libpmem2/x86_64/memset/memset_t_avx512f.c @@ -179,7 +179,7 @@ memset_mov1x64b(char *dest, __m512i zmm, flush64b_fn flush64b) flush64b(dest + 0 * 64); } -static force_inline void +static void memset_mov_avx512f(char *dest, int c, size_t len, flush_fn flush, flush64b_fn flush64b) { diff --git a/src/stats/stack-usage-debug.txt b/src/stats/stack-usage-debug.txt index 5b857ae20a4..90ad2a12ffb 100644 --- a/src/stats/stack-usage-debug.txt +++ b/src/stats/stack-usage-debug.txt @@ -68,16 +68,8 @@ 19536 memset_movnt_avx512f_clflush : src/debug/libpmem2/memset_nt_avx512f.su:memset_nt_avx512f.c dynamic,bounded 19536 memset_movnt_avx512f_clflushopt : src/debug/libpmem/memset_nt_avx512f.su:memset_nt_avx512f.c dynamic,bounded 19536 memset_movnt_avx512f_clflushopt : src/debug/libpmem2/memset_nt_avx512f.su:memset_nt_avx512f.c dynamic,bounded -19024 memset_mov_avx512f_noflush : src/debug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded -19024 memset_mov_avx512f_noflush : src/debug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded -19024 memset_mov_avx512f_empty : src/debug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded -19024 memset_mov_avx512f_empty : src/debug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded -19024 memset_mov_avx512f_clwb : src/debug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded -19024 memset_mov_avx512f_clwb : src/debug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded -19024 memset_mov_avx512f_clflush : src/debug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded -19024 memset_mov_avx512f_clflush : src/debug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded -19024 memset_mov_avx512f_clflushopt : src/debug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded -19024 memset_mov_avx512f_clflushopt : src/debug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded +18880 memset_mov_avx512f : src/debug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c static +18880 memset_mov_avx512f : src/debug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c static 16480 obj_vg_check_no_undef : src/debug/libpmemobj/obj.su:obj.c static 13840 memmove_mov_avx_noflush : src/debug/libpmem/memcpy_t_avx.su:memcpy_t_avx.c dynamic,bounded 13840 memmove_mov_avx_noflush : src/debug/libpmem2/memcpy_t_avx.su:memcpy_t_avx.c dynamic,bounded @@ -155,16 +147,8 @@ 6768 memset_movnt_sse2_clflushopt_nobarrier : src/debug/libpmem2/memset_nt_sse2.su:memset_nt_sse2.c dynamic,bounded 6768 memset_movnt_sse2_clflush_nobarrier : src/debug/libpmem/memset_nt_sse2.su:memset_nt_sse2.c dynamic,bounded 6768 memset_movnt_sse2_clflush_nobarrier : src/debug/libpmem2/memset_nt_sse2.su:memset_nt_sse2.c dynamic,bounded -5936 memset_mov_avx_noflush : src/debug/libpmem/memset_t_avx.su:memset_t_avx.c dynamic,bounded -5936 memset_mov_avx_noflush : src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c dynamic,bounded -5936 memset_mov_avx_empty : src/debug/libpmem/memset_t_avx.su:memset_t_avx.c dynamic,bounded -5936 memset_mov_avx_empty : src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c dynamic,bounded -5936 memset_mov_avx_clwb : src/debug/libpmem/memset_t_avx.su:memset_t_avx.c dynamic,bounded -5936 memset_mov_avx_clwb : src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c dynamic,bounded -5936 memset_mov_avx_clflush : src/debug/libpmem/memset_t_avx.su:memset_t_avx.c dynamic,bounded -5936 memset_mov_avx_clflush : src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c dynamic,bounded -5936 memset_mov_avx_clflushopt : src/debug/libpmem/memset_t_avx.su:memset_t_avx.c dynamic,bounded -5936 memset_mov_avx_clflushopt : src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c dynamic,bounded +5856 memset_mov_avx : src/debug/libpmem/memset_t_avx.su:memset_t_avx.c static +5856 memset_mov_avx : src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c static 4384 pool_params_parse : src/debug/libpmempool/pool.su:pool.c dynamic,bounded 4352 out_init : src/debug/libpmempool/out.su:out.c dynamic,bounded 4352 out_init : src/debug/libpmem/out.su:out.c dynamic,bounded @@ -1672,6 +1656,26 @@ 64 obj_replica_init : src/debug/libpmemobj/obj.su:obj.c static 64 obj_pool_open : src/debug/libpmemobj/obj.su:obj.c dynamic,bounded 64 obj_ctl_init_and_load : src/debug/libpmemobj/obj.su:obj.c dynamic,bounded +64 memset_mov_avx_noflush : src/debug/libpmem/memset_t_avx.su:memset_t_avx.c dynamic,bounded +64 memset_mov_avx_noflush : src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c dynamic,bounded +64 memset_mov_avx_empty : src/debug/libpmem/memset_t_avx.su:memset_t_avx.c dynamic,bounded +64 memset_mov_avx_empty : src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c dynamic,bounded +64 memset_mov_avx_clwb : src/debug/libpmem/memset_t_avx.su:memset_t_avx.c dynamic,bounded +64 memset_mov_avx_clwb : src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c dynamic,bounded +64 memset_mov_avx_clflush : src/debug/libpmem/memset_t_avx.su:memset_t_avx.c dynamic,bounded +64 memset_mov_avx_clflush : src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c dynamic,bounded +64 memset_mov_avx_clflushopt : src/debug/libpmem/memset_t_avx.su:memset_t_avx.c dynamic,bounded +64 memset_mov_avx_clflushopt : src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c dynamic,bounded +64 memset_mov_avx512f_noflush : src/debug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded +64 memset_mov_avx512f_noflush : src/debug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded +64 memset_mov_avx512f_empty : src/debug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded +64 memset_mov_avx512f_empty : src/debug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded +64 memset_mov_avx512f_clwb : src/debug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded +64 memset_mov_avx512f_clwb : src/debug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded +64 memset_mov_avx512f_clflush : src/debug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded +64 memset_mov_avx512f_clflush : src/debug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded +64 memset_mov_avx512f_clflushopt : src/debug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded +64 memset_mov_avx512f_clflushopt : src/debug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c dynamic,bounded 64 membuf_alloc : src/debug/libpmempool/membuf.su:membuf.c static 64 membuf_alloc : src/debug/libpmemobj/membuf.su:membuf.c static 64 membuf_alloc : src/debug/libpmem2/membuf.su:membuf.c static diff --git a/src/stats/stack-usage-nondebug.txt b/src/stats/stack-usage-nondebug.txt index 7ac24525825..5e309786157 100644 --- a/src/stats/stack-usage-nondebug.txt +++ b/src/stats/stack-usage-nondebug.txt @@ -42,8 +42,6 @@ 4144 pmem2_deep_flush_write : src/nondebug/libpmem2/deep_flush_linux.su:deep_flush_linux.c static 4144 pmem2_deep_flush_write : src/nondebug/common/deep_flush_linux.su:deep_flush_linux.c static 4112 pool_set_type : src/nondebug/libpmempool/pool.su:pool.c static -3840 memset_mov_avx512f_empty : src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c static -3840 memset_mov_avx512f_empty : src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c static 2144 util_map_hint_unused : src/nondebug/libpmempool/mmap_posix.su:mmap_posix.c static 2144 util_map_hint_unused : src/nondebug/libpmemobj/mmap_posix.su:mmap_posix.c static 2144 util_map_hint_unused : src/nondebug/libpmem/mmap_posix.su:mmap_posix.c static @@ -51,8 +49,6 @@ 2016 memmove_mov_avx_empty : src/nondebug/libpmem/memcpy_t_avx.su:memcpy_t_avx.c static 2016 memmove_mov_avx_empty : src/nondebug/libpmem2/memcpy_t_avx.su:memcpy_t_avx.c static 1184 heap_init : src/nondebug/libpmemobj/heap.su:heap.c static -1088 memset_mov_avx_empty : src/nondebug/libpmem/memset_t_avx.su:memset_t_avx.c static -1088 memset_mov_avx_empty : src/nondebug/libpmem2/memset_t_avx.su:memset_t_avx.c static 1088 memmove_mov_sse2_empty : src/nondebug/libpmem/memcpy_t_sse2.su:memcpy_t_sse2.c static 1088 memmove_mov_sse2_empty : src/nondebug/libpmem2/memcpy_t_sse2.su:memcpy_t_sse2.c static 720 ulog_entry_buf_create : src/nondebug/libpmemobj/ulog.su:ulog.c dynamic @@ -264,14 +260,8 @@ 192 memset_movnt_avx_clflushopt_nobarrier : src/nondebug/libpmem2/memset_nt_avx.su:memset_nt_avx.c static 192 memset_movnt_avx_clflush_nobarrier : src/nondebug/libpmem/memset_nt_avx.su:memset_nt_avx.c static 192 memset_movnt_avx_clflush_nobarrier : src/nondebug/libpmem2/memset_nt_avx.su:memset_nt_avx.c static -192 memset_mov_avx512f_noflush : src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c static -192 memset_mov_avx512f_noflush : src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c static -192 memset_mov_avx512f_clwb : src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c static -192 memset_mov_avx512f_clwb : src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c static -192 memset_mov_avx512f_clflush : src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c static -192 memset_mov_avx512f_clflush : src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c static -192 memset_mov_avx512f_clflushopt : src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c static -192 memset_mov_avx512f_clflushopt : src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c static +192 memset_mov_avx512f : src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c static +192 memset_mov_avx512f : src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c static 192 memmove_movnt_avx512f_noflush : src/nondebug/libpmem/memcpy_nt_avx512f.su:memcpy_nt_avx512f.c static 192 memmove_movnt_avx512f_noflush : src/nondebug/libpmem2/memcpy_nt_avx512f.su:memcpy_nt_avx512f.c static 192 memmove_movnt_avx512f_clwb : src/nondebug/libpmem/memcpy_nt_avx512f.su:memcpy_nt_avx512f.c static @@ -412,14 +402,8 @@ 128 pmem2_badblock_context_new : src/nondebug/libpmem2/badblocks_ndctl.su:badblocks_ndctl.c static 128 pmem2_badblock_context_new : src/nondebug/common/badblocks_ndctl.su:badblocks_ndctl.c static 128 pmalloc : src/nondebug/libpmemobj/pmalloc.su:pmalloc.c dynamic,bounded -128 memset_mov_avx_noflush : src/nondebug/libpmem/memset_t_avx.su:memset_t_avx.c static -128 memset_mov_avx_noflush : src/nondebug/libpmem2/memset_t_avx.su:memset_t_avx.c static -128 memset_mov_avx_clwb : src/nondebug/libpmem/memset_t_avx.su:memset_t_avx.c static -128 memset_mov_avx_clwb : src/nondebug/libpmem2/memset_t_avx.su:memset_t_avx.c static -128 memset_mov_avx_clflush : src/nondebug/libpmem/memset_t_avx.su:memset_t_avx.c static -128 memset_mov_avx_clflush : src/nondebug/libpmem2/memset_t_avx.su:memset_t_avx.c static -128 memset_mov_avx_clflushopt : src/nondebug/libpmem/memset_t_avx.su:memset_t_avx.c static -128 memset_mov_avx_clflushopt : src/nondebug/libpmem2/memset_t_avx.su:memset_t_avx.c static +128 memset_mov_avx : src/nondebug/libpmem/memset_t_avx.su:memset_t_avx.c static +128 memset_mov_avx : src/nondebug/libpmem2/memset_t_avx.su:memset_t_avx.c static 128 memblock_header_legacy_reinit : src/nondebug/libpmemobj/memblock.su:memblock.c static 128 memblock_from_offset_opt : src/nondebug/libpmemobj/memblock.su:memblock.c static 128 list_insert_new_user : src/nondebug/libpmemobj/list.su:list.c dynamic,bounded @@ -1850,6 +1834,18 @@ 8 pmem_emit_log : src/nondebug/libpmem/pmem.su:pmem.c static 8 pmem_drain : src/nondebug/libpmem/pmem.su:pmem.c static 8 pmem_deep_drain : src/nondebug/libpmem/pmem.su:pmem.c static +8 pmem_clwb : src/nondebug/libpmem/memset_t_avx.su:flush.h static +8 pmem_clwb : src/nondebug/libpmem/memset_t_avx512f.su:flush.h static +8 pmem_clwb : src/nondebug/libpmem2/memset_t_avx.su:flush.h static +8 pmem_clwb : src/nondebug/libpmem2/memset_t_avx512f.su:flush.h static +8 pmem_clflush : src/nondebug/libpmem/memset_t_avx.su:flush.h static +8 pmem_clflush : src/nondebug/libpmem/memset_t_avx512f.su:flush.h static +8 pmem_clflush : src/nondebug/libpmem2/memset_t_avx.su:flush.h static +8 pmem_clflush : src/nondebug/libpmem2/memset_t_avx512f.su:flush.h static +8 pmem_clflushopt : src/nondebug/libpmem/memset_t_avx.su:flush.h static +8 pmem_clflushopt : src/nondebug/libpmem/memset_t_avx512f.su:flush.h static +8 pmem_clflushopt : src/nondebug/libpmem2/memset_t_avx.su:flush.h static +8 pmem_clflushopt : src/nondebug/libpmem2/memset_t_avx512f.su:flush.h static 8 pmem2_vm_reservation_get_size : src/nondebug/libpmem2/vm_reservation.su:vm_reservation.c static 8 pmem2_vm_reservation_get_address : src/nondebug/libpmem2/vm_reservation.su:vm_reservation.c static 8 pmem2_region_get_next_badblock : src/nondebug/libpmempool/badblocks_ndctl.su:badblocks_ndctl.c static @@ -2252,6 +2248,34 @@ 8 obj_norep_memcpy : src/nondebug/libpmemobj/obj.su:obj.c static 8 obj_norep_drain : src/nondebug/libpmemobj/obj.su:obj.c static 8 obj_drain_empty : src/nondebug/libpmemobj/obj.su:obj.c static +8 noflush : src/nondebug/libpmem/memset_t_avx.su:memcpy_memset.h static +8 noflush : src/nondebug/libpmem/memset_t_avx512f.su:memcpy_memset.h static +8 noflush : src/nondebug/libpmem2/memset_t_avx.su:memcpy_memset.h static +8 noflush : src/nondebug/libpmem2/memset_t_avx512f.su:memcpy_memset.h static +8 noflush64b : src/nondebug/libpmem/memset_t_avx.su:memcpy_memset.h static +8 noflush64b : src/nondebug/libpmem/memset_t_avx512f.su:memcpy_memset.h static +8 noflush64b : src/nondebug/libpmem2/memset_t_avx.su:memcpy_memset.h static +8 noflush64b : src/nondebug/libpmem2/memset_t_avx512f.su:memcpy_memset.h static +8 memset_mov_avx_noflush : src/nondebug/libpmem/memset_t_avx.su:memset_t_avx.c static +8 memset_mov_avx_noflush : src/nondebug/libpmem2/memset_t_avx.su:memset_t_avx.c static +8 memset_mov_avx_empty : src/nondebug/libpmem/memset_t_avx.su:memset_t_avx.c static +8 memset_mov_avx_empty : src/nondebug/libpmem2/memset_t_avx.su:memset_t_avx.c static +8 memset_mov_avx_clwb : src/nondebug/libpmem/memset_t_avx.su:memset_t_avx.c static +8 memset_mov_avx_clwb : src/nondebug/libpmem2/memset_t_avx.su:memset_t_avx.c static +8 memset_mov_avx_clflush : src/nondebug/libpmem/memset_t_avx.su:memset_t_avx.c static +8 memset_mov_avx_clflush : src/nondebug/libpmem2/memset_t_avx.su:memset_t_avx.c static +8 memset_mov_avx_clflushopt : src/nondebug/libpmem/memset_t_avx.su:memset_t_avx.c static +8 memset_mov_avx_clflushopt : src/nondebug/libpmem2/memset_t_avx.su:memset_t_avx.c static +8 memset_mov_avx512f_noflush : src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c static +8 memset_mov_avx512f_noflush : src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c static +8 memset_mov_avx512f_empty : src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c static +8 memset_mov_avx512f_empty : src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c static +8 memset_mov_avx512f_clwb : src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c static +8 memset_mov_avx512f_clwb : src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c static +8 memset_mov_avx512f_clflush : src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c static +8 memset_mov_avx512f_clflush : src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c static +8 memset_mov_avx512f_clflushopt : src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c static +8 memset_mov_avx512f_clflushopt : src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c static 8 memory_barrier : src/nondebug/libpmem/init.su:init.c static 8 memory_barrier : src/nondebug/libpmem2/init.su:init.c static 8 membuf_ptr_user_data : src/nondebug/libpmempool/membuf.su:membuf.c static @@ -2302,12 +2326,32 @@ 8 hash64 : src/nondebug/libpmemobj/rand.su:rand.c static 8 hash64 : src/nondebug/common/rand.su:rand.c static 8 flush_empty : src/nondebug/libpmem/pmem.su:pmem.c static +8 flush_empty_nolog : src/nondebug/libpmem/memset_t_avx.su:pmem2_arch.h static +8 flush_empty_nolog : src/nondebug/libpmem/memset_t_avx512f.su:pmem2_arch.h static +8 flush_empty_nolog : src/nondebug/libpmem2/memset_t_avx.su:pmem2_arch.h static +8 flush_empty_nolog : src/nondebug/libpmem2/memset_t_avx512f.su:pmem2_arch.h static 8 flush_clwb : src/nondebug/libpmem/init.su:init.c static 8 flush_clwb : src/nondebug/libpmem2/init.su:init.c static +8 flush_clwb_nolog : src/nondebug/libpmem/memset_t_avx.su:flush.h static +8 flush_clwb_nolog : src/nondebug/libpmem/memset_t_avx512f.su:flush.h static +8 flush_clwb_nolog : src/nondebug/libpmem2/memset_t_avx.su:flush.h static +8 flush_clwb_nolog : src/nondebug/libpmem2/memset_t_avx512f.su:flush.h static 8 flush_clflush : src/nondebug/libpmem/init.su:init.c static 8 flush_clflush : src/nondebug/libpmem2/init.su:init.c static 8 flush_clflushopt : src/nondebug/libpmem/init.su:init.c static 8 flush_clflushopt : src/nondebug/libpmem2/init.su:init.c static +8 flush_clflushopt_nolog : src/nondebug/libpmem/memset_t_avx.su:flush.h static +8 flush_clflushopt_nolog : src/nondebug/libpmem/memset_t_avx512f.su:flush.h static +8 flush_clflushopt_nolog : src/nondebug/libpmem2/memset_t_avx.su:flush.h static +8 flush_clflushopt_nolog : src/nondebug/libpmem2/memset_t_avx512f.su:flush.h static +8 flush_clflush_nolog : src/nondebug/libpmem/memset_t_avx.su:flush.h static +8 flush_clflush_nolog : src/nondebug/libpmem/memset_t_avx512f.su:flush.h static +8 flush_clflush_nolog : src/nondebug/libpmem2/memset_t_avx.su:flush.h static +8 flush_clflush_nolog : src/nondebug/libpmem2/memset_t_avx512f.su:flush.h static +8 flush64b_empty : src/nondebug/libpmem/memset_t_avx.su:flush.h static +8 flush64b_empty : src/nondebug/libpmem/memset_t_avx512f.su:flush.h static +8 flush64b_empty : src/nondebug/libpmem2/memset_t_avx.su:flush.h static +8 flush64b_empty : src/nondebug/libpmem2/memset_t_avx512f.su:flush.h static 8 fence_empty : src/nondebug/libpmem/pmem.su:pmem.c static 8 debug_ctl_register : src/nondebug/libpmemobj/ctl_debug.su:ctl_debug.c static 8 ctl__worker_read : src/nondebug/libpmemobj/tx.su:tx.c static