On 19/09/17 09:28, Olivier MATZ wrote:
Hi,

On Thu, Sep 14, 2017 at 09:22:38AM +0200, Eelco Chaudron wrote:
On 13/09/17 11:39, Thomas Monjalon wrote:
12/09/2017 15:08, Eelco Chaudron:
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.
Does it work on FreeBSD?
I do not have a FreeBSD setup, but from the documentation I've read the call
is supported by FreeBSD.
If some one has a working setup, please give this patch a quick try.
Is there any drawback?
Do we need to add an option for it?
The only drawback I can think of is that with this change memory phyiscal
memory is consumed as pages are pre-loaded.
For testpmd (just loaded not doing anything) this is 2MB vs 35MB of memory
used. I do not think this yields an extra option.
One small comment: the call to mlockall() will fail if we don't have
the permissions. I guess it's not an issue, but I wonder if we should
log it?
I did not at add a log, as the rte log subsystem is not yet initialized.
However we could add a printf("WARNING: mlockall() failed with error %s")
like message. What do you think?

Olivier


Reply via email to