[dpdk-dev] doc: Adds reference to use mlockall() in the Programmer's guide

Message ID 138d85856e7b5c6c09abfccdb885927458120be8.1506689397.git.echaudro@redhat.com (mailing list archive)
State Superseded, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Eelco Chaudron Sept. 29, 2017, 12:50 p.m. UTC
  When I was adding mlockall() to the testpmd application it was
suggested to add a reference to the use case of mlockall().

Signed-off-by: Eelco Chaudron <echaudro@redhat.com>
---
 doc/guides/prog_guide/writing_efficient_code.rst | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
  

Comments

John McNamara Sept. 29, 2017, 3:44 p.m. UTC | #1
Hi Eelco,

Thanks for that. It is always good to get doc improvements.
Some minor comments below.


> -----Original Message-----
> From: Eelco Chaudron [mailto:echaudro@redhat.com]
> Sent: Friday, September 29, 2017 1:51 PM
> To: Mcnamara, John <john.mcnamara@intel.com>
> Cc: dev@dpdk.org
> Subject: [PATCH] doc: Adds reference to use mlockall() in the Programmer's
> guide

The title should be lowercase (except for known acronyms), <= 50 characters
and the verb should be in the imperative. This is explained in the  Contributor's
Guide:

http://dpdk.org/doc/guides/contributing/patches.html#commit-messages-subject-line

Also you can check with the DPDK check-git-log.sh tool:

    $ devtools/check-git-log.sh 
    Wrong headline uppercase:
        doc: Adds reference to use mlockall() in the Programmer's guide
    Headline too long:
        doc: Adds reference to use mlockall() in the Programmer's guide

I'd suggest a title like:

    doc: add use of mlockall to programmers guide

> 
> diff --git a/doc/guides/prog_guide/writing_efficient_code.rst
> b/doc/guides/prog_guide/writing_efficient_code.rst
> index 8223aceea..3975026ce 100644
> --- a/doc/guides/prog_guide/writing_efficient_code.rst
> +++ b/doc/guides/prog_guide/writing_efficient_code.rst
> @@ -105,6 +105,20 @@ meaning that if all memory access operations are done
> on the first channel only,
> 
>  By default, the  :ref:`Mempool Library <Mempool_Library>` spreads the
> addresses of objects among memory channels.
> 
> +Locking memory pages
> +~~~~~~~~~~~~~~~~~~~~

Add a blank line after a header+underline.

> +The underlying operating system is allowed to load/unload memory pages at
> its own discretion.
> +These page loads could impact the performance, as the process is on hold
> when the kernel fetches them.
> +
> +To avoid these you could pre-load, and lock them into memory with the
> mlockall() call.

Include the function call in backquotes: ``mlockall()``.

Thanks,

John

Reviewed-by: John McNamara <john.mcnamara@intel.com>
  
Eelco Chaudron Oct. 2, 2017, 10:22 a.m. UTC | #2
On 29/09/17 17:44, Mcnamara, John wrote:
> Hi Eelco,
>
> Thanks for that. It is always good to get doc improvements.
> Some minor comments below.
>
Thanks for pointing out the below issues, and I send out a V2.

> The title should be lowercase (except for known acronyms), <= 50 
> characters
> and the verb should be in the imperative. This is explained in the  Contributor's
> Guide:
>
> http://dpdk.org/doc/guides/contributing/patches.html#commit-messages-subject-line
>
> Also you can check with the DPDK check-git-log.sh tool:
>
>      $ devtools/check-git-log.sh
>      Wrong headline uppercase:
>          doc: Adds reference to use mlockall() in the Programmer's guide
>      Headline too long:
>          doc: Adds reference to use mlockall() in the Programmer's guide
>
> I'd suggest a title like:
>
>      doc: add use of mlockall to programmers guide
>
>> diff --git a/doc/guides/prog_guide/writing_efficient_code.rst
>> b/doc/guides/prog_guide/writing_efficient_code.rst
>> index 8223aceea..3975026ce 100644
>> --- a/doc/guides/prog_guide/writing_efficient_code.rst
>> +++ b/doc/guides/prog_guide/writing_efficient_code.rst
>> @@ -105,6 +105,20 @@ meaning that if all memory access operations are done
>> on the first channel only,
>>
>>   By default, the  :ref:`Mempool Library <Mempool_Library>` spreads the
>> addresses of objects among memory channels.
>>
>> +Locking memory pages
>> +~~~~~~~~~~~~~~~~~~~~
> Add a blank line after a header+underline.
>
>> +The underlying operating system is allowed to load/unload memory pages at
>> its own discretion.
>> +These page loads could impact the performance, as the process is on hold
>> when the kernel fetches them.
>> +
>> +To avoid these you could pre-load, and lock them into memory with the
>> mlockall() call.
> Include the function call in backquotes: ``mlockall()``.
>
> Thanks,
>
> John
>
> Reviewed-by: John McNamara <john.mcnamara@intel.com>
>
>
  

Patch

diff --git a/doc/guides/prog_guide/writing_efficient_code.rst b/doc/guides/prog_guide/writing_efficient_code.rst
index 8223aceea..3975026ce 100644
--- a/doc/guides/prog_guide/writing_efficient_code.rst
+++ b/doc/guides/prog_guide/writing_efficient_code.rst
@@ -105,6 +105,20 @@  meaning that if all memory access operations are done on the first channel only,
 
 By default, the  :ref:`Mempool Library <Mempool_Library>` spreads the addresses of objects among memory channels.
 
+Locking memory pages
+~~~~~~~~~~~~~~~~~~~~
+The underlying operating system is allowed to load/unload memory pages at its own discretion.
+These page loads could impact the performance, as the process is on hold when the kernel fetches them.
+
+To avoid these you could pre-load, and lock them into memory with the mlockall() call.
+
+.. code-block:: c
+
+    if (mlockall(MCL_CURRENT | MCL_FUTURE)) {
+        RTE_LOG(NOTICE, USER1, "mlockall() failed with error \"%s\"\n",
+                strerror(errno));
+    }
+
 Communication Between lcores
 ----------------------------