All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] app/testpmd: adds mlockall() to avoid pages being swapped out
@ 2017-09-29  8:11 Eelco Chaudron
  2017-10-09 23:40 ` Ferruh Yigit
  0 siblings, 1 reply; 2+ messages in thread
From: Eelco Chaudron @ 2017-09-29  8:11 UTC (permalink / raw)
  To: jingjing.wu; +Cc: dev

v2:
* Moved mlockall() after rte_eal_init() to allow rte_log() to be used
* Check for mlockall() return value, and add an rte_log()

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 <echaudro@redhat.com>
---
 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 e097ee04e..f741fcd0a 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -38,6 +38,7 @@
 #include <string.h>
 #include <time.h>
 #include <fcntl.h>
+#include <sys/mman.h>
 #include <sys/types.h>
 #include <errno.h>
 
@@ -2337,6 +2338,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.13.5

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] app/testpmd: adds mlockall() to avoid pages being swapped out
  2017-09-29  8:11 [PATCH v2] app/testpmd: adds mlockall() to avoid pages being swapped out Eelco Chaudron
@ 2017-10-09 23:40 ` Ferruh Yigit
  0 siblings, 0 replies; 2+ messages in thread
From: Ferruh Yigit @ 2017-10-09 23:40 UTC (permalink / raw)
  To: Eelco Chaudron, jingjing.wu; +Cc: dev

On 9/29/2017 9:11 AM, Eelco Chaudron wrote:
> v2:
> * Moved mlockall() after rte_eal_init() to allow rte_log() to be used
> * Check for mlockall() return value, and add an rte_log()
> 
> 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 <echaudro@redhat.com>

Acked-by: Aaron Conole <aconole@redhat.com>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Applied to dpdk/master, thanks.

(Kept ACKs from previous version of the patch)

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-10-09 23:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-29  8:11 [PATCH v2] app/testpmd: adds mlockall() to avoid pages being swapped out Eelco Chaudron
2017-10-09 23:40 ` Ferruh Yigit

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.