From: Eelco Chaudron Date: Fri, 29 Sep 2017 08:11:10 +0000 (+0200) Subject: app/testpmd: avoid pages being swapped out X-Git-Tag: spdx-start~1676 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=1c036b16c284d6f1b94bd2d8362519e0454c6600;p=dpdk.git 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 --- 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);