From 52b52b8ebbe82636b65f0adc6a0a40c165eda306 Mon Sep 17 00:00:00 2001 From: Joseph Schuchart Date: Tue, 29 Sep 2020 07:45:07 +0200 Subject: [PATCH] OSC RDMA: only touch pages before memory registration, don't fill them Signed-off-by: Joseph Schuchart --- ompi/mca/osc/rdma/osc_rdma_component.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ompi/mca/osc/rdma/osc_rdma_component.c b/ompi/mca/osc/rdma/osc_rdma_component.c index b984a049f4..1e79ff37aa 100644 --- a/ompi/mca/osc/rdma/osc_rdma_component.c +++ b/ompi/mca/osc/rdma/osc_rdma_component.c @@ -650,8 +650,12 @@ static int allocate_state_shared (ompi_osc_rdma_module_t *module, void **base, s } if (size && MPI_WIN_FLAVOR_ALLOCATE == module->flavor) { - *base = (void *)((intptr_t) module->segment_base + my_base_offset); - memset (*base, 0, size); + char *baseptr = (char *)((intptr_t) module->segment_base + my_base_offset); + *base = (void *)baseptr; + // touch each page to force allocation on local NUMA node + for (size_t i = 0; i < size; i += page_size) { + baseptr[i] = 0; + } } module->rank_array = (ompi_osc_rdma_rank_data_t *) module->segment_base;