---
Hi,
Actually, for mbind and mlockall, i have made a test about the time consuming
for the different call sequence.
The results is shown below. It is obviously that mlockall called before mbind is
more time-consuming.
Besides, this patch is OK with memory hotplug.
TEST CODE:
if (mbind_first) {
printf("mbind --> mlockall\n");
mbind(ptr, ram_size/2, MPOL_BIND, &node0mask, 2,
MPOL_MF_STRICT | MPOL_MF_MOVE);
mbind(ptr + ram_size/2, ram_size/2, MPOL_BIND, &node1mask, 2,
MPOL_MF_STRICT | MPOL_MF_MOVE);
mlockall(MCL_CURRENT | MCL_FUTURE);
} else {
printf("mlockall --> mbind\n");
mlockall(MCL_CURRENT | MCL_FUTURE);
mbind(ptr, ram_size/2, MPOL_BIND, &node0mask, 2 ,
MPOL_MF_STRICT | MPOL_MF_MOVE);
mbind(ptr + ram_size/2, ram_size/2, MPOL_BIND, &node1mask, 2,
MPOL_MF_STRICT | MPOL_MF_MOVE);
}
RESULT 1:
#time /home/test_mbind 10240 0
memroy size 10737418240
mlockall --> mbind
real 0m11.886s
user 0m0.004s
sys 0m11.865s
#time /home/test_mbind 10240 1
memroy size 10737418240
mbind --> mlockall
real 0m5.334s
user 0m0.000s
sys 0m5.324s
RESULT 2:
#time /home/test_mbind 4096 0
memroy size 4294967296
mlockall --> mbind
real 0m5.503s
user 0m0.000s
sys 0m5.492s
#time /home/test_mbind 4096 1
memroy size 4294967296
mbind --> mlockall
real 0m2.139s
user 0m0.000s
sys 0m2.132s
Best Regards,
zhanghailiang
---
vl.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/vl.c b/vl.c
index dc792fe..adf4770 100644
--- a/vl.c
+++ b/vl.c
@@ -134,6 +134,7 @@ const char* keyboard_layout = NULL;
ram_addr_t ram_size;
const char *mem_path = NULL;
int mem_prealloc = 0; /* force preallocation of physical target memory */
+int enable_mlock = false;