From 1c036b16c284d6f1b94bd2d8362519e0454c6600 Mon Sep 17 00:00:00 2001 From: Eelco Chaudron Date: Fri, 29 Sep 2017 10:11:10 +0200 Subject: [PATCH] app/testpmd: avoid pages being swapped out Call the mlockall() function, to attempt to lock all of its process memory into physical RAM, and preventing the kernel from paging any of its memory to disk. When using testpmd for performance testing, depending on the code path taken, we see a couple of page faults in a row. These faults effect the overall drop-rate of testpmd. On Linux the mlockall() call will prefault all the pages of testpmd (and the DPDK libraries if linked dynamically), even without LD_BIND_NOW. Signed-off-by: Eelco Chaudron Acked-by: Aaron Conole Acked-by: Maxime Coquelin --- app/test-pmd/testpmd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index ecd94b63bd..69d64026cc 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -2322,6 +2323,11 @@ main(int argc, char** argv) if (diag < 0) rte_panic("Cannot init EAL\n"); + if (mlockall(MCL_CURRENT | MCL_FUTURE)) { + RTE_LOG(NOTICE, USER1, "mlockall() failed with error \"%s\"\n", + strerror(errno)); + } + #ifdef RTE_LIBRTE_PDUMP /* initialize packet capture framework */ rte_pdump_init(NULL); -- 2.20.1