<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Courier;
panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"Helvetica Neue Light";
panose-1:2 0 4 3 0 0 0 2 0 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:10.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:62922036;
mso-list-template-ids:-20395004;}
@list l0:level1
{mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level2
{mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level3
{mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level4
{mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level5
{mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level6
{mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level7
{mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level8
{mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level9
{mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1
{mso-list-id:1083995310;
mso-list-template-ids:297816706;}
@list l1:level1
{mso-level-start-at:4;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level2
{mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level3
{mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level4
{mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level5
{mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level6
{mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level7
{mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level8
{mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level9
{mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2
{mso-list-id:1165197170;
mso-list-template-ids:230053488;}
@list l2:level1
{mso-level-start-at:6;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level2
{mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level3
{mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level4
{mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level5
{mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level6
{mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level7
{mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level8
{mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level9
{mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3
{mso-list-id:1268584696;
mso-list-template-ids:1463614722;}
@list l3:level1
{mso-level-start-at:5;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level2
{mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level3
{mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level4
{mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level5
{mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level6
{mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level7
{mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level8
{mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level9
{mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l4
{mso-list-id:1732773566;
mso-list-template-ids:-2006271034;}
@list l4:level1
{mso-level-start-at:2;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l4:level2
{mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l4:level3
{mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l4:level4
{mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l4:level5
{mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l4:level6
{mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l4:level7
{mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l4:level8
{mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l4:level9
{mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l5
{mso-list-id:2054965017;
mso-list-template-ids:-1302050570;}
@list l5:level1
{mso-level-start-at:3;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l5:level2
{mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l5:level3
{mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l5:level4
{mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l5:level5
{mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l5:level6
{mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l5:level7
{mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l5:level8
{mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l5:level9
{mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></style>
</head>
<body lang="EN-IN" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Hi Stephen/Anatoly Burakov<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Please help us in below RTE EAL CRASH reason is it we are not getting segments for POOL creation or a bug in DPDK 19.11.5 ?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">We are blocked !!!!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Thanks<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Umakiran<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Umakiran Godavarthi (ugodavar) <ugodavar@cisco.com><br>
<b>Date: </b>Wednesday, 21 September 2022 at 12:20 PM<br>
<b>To: </b>anatoly.burakov@intel.com <anatoly.burakov@intel.com>, dev@dpdk.org <dev@dpdk.org><br>
<b>Subject: </b>Re: DPDK 19.11.5 Legacy Memory Design Query<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:Courier;color:black">Hi Team,</span><o:p></o:p></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:Courier;color:black">Have sent a message to DPDK alias. Can you please have a look and share</span><o:p></o:p></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:Courier;color:black">your thoughts on this ?</span><o:p></o:p></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:Courier;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:Courier;color:black">Please reply on legacy memory design and thoughts on the crash reason ?</span><o:p></o:p></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:Courier;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.5pt;font-family:Courier;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> </span><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F">#<span style="background:yellow">6 sigcrash (signo=11,
info=0x7fff1c1867f0, ctx=0x7fff1c1866c0)</span></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> #7 </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> <span style="background:yellow">#8 malloc_elem_can_hold () from ./usr/lib64/dpdk-19/librte_eal.so.20.0</span></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;background:yellow"> #9 find_suitable_element () from ./usr/lib64/dpdk-19/librte_eal.so.20.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;background:yellow"> #10 malloc_heap_alloc () from ./usr/lib64/dpdk-19/librte_eal.so.20.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> #11 rte_malloc_socket () from ./usr/lib64/dpdk-19/librte_eal.so.20.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> #12 rte_mempool_create_empty () from ./usr/lib64/dpdk-19/librte_mempool.so.20.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> #13 rte_pktmbuf_pool_create_by_ops () from ./usr/lib64/dpdk-19/librte_mbuf.so.20.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> #14 rte_pktmbuf_pool_create () from ./usr/lib64/dpdk-19/librte_mbuf.so.20.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> #15 dpdk_create_mbuf_pool (mem_chunk_tbl=0x555d556de8e0 , num_mbufs=46080, frame_len=2048, name=0x7fff1c1873c0 "DPDK_POOL_0")
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Is there a bug in DPDK 19.11.5 it crashes when it searches for pages for POOL creation
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Please let us know this is second email
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Thanks</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Umakiran</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Umakiran Godavarthi (ugodavar) <ugodavar@cisco.com><br>
<b>Date: </b>Wednesday, 14 September 2022 at 1:00 PM<br>
<b>To: </b>anatoly.burakov@intel.com <anatoly.burakov@intel.com>, dev@dpdk.org <dev@dpdk.org><br>
<b>Subject: </b>DPDK 19.11.5 Legacy Memory Design Query</span><o:p></o:p></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black">Hi Anatoly/DPDK-Developers</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black">I am working on DPDK 19.11.5 Legacy Memory design and have a query about how to boot up in Legacy memory mode.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<ol style="margin-top:0cm" start="1" type="1">
<li class="MsoNormal" style="color:black;mso-list:l0 level1 lfo1"><span lang="EN-US" style="font-size:11.0pt;background:yellow"><br>
Linux kernel boots up with huge pages (‘N’) and free huge pages (‘N’) initially </span><o:p></o:p></li></ol>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<ol style="margin-top:0cm" start="2" type="1">
<li class="MsoNormal" style="color:black;mso-list:l4 level1 lfo2"><span lang="EN-US" style="font-size:11.0pt">We calculate huge pages we need for data path (Driver need buffers for all queues) by sorting the memory fragments 2MB huge pages fragments and find <span style="background:yellow">we
need ‘X’ pages , so we go to kernel and set SYSFS attribute nr_hugepages (/proc/sys/vm/nr_hugepages) to X pages</span>. We also store the sorted physical memory fragments as POOL_0, POOL_1, POOL_2….etc. (Just for pool count purpose enough for all ports and
queues to initialize)</span><o:p></o:p></li></ol>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black">For example, if host has memory pattern huge pages like this for total 500 we get in step 1 kernel reservation.
</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow">250, 90, 80, 70 , 10 -> Sum is 500 (N pages)</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow">We need only 350 pages (350 based on no of ports, queues dpdk application needs)</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow">So we need 250, 90, 10.</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black;background:yellow">So total 3 pools POOL_0 -> 250 pages, POOL_1 -> 90, POOL_2 -> 10 pages</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<ol style="margin-top:0cm" start="3" type="1">
<li class="MsoNormal" style="color:black;mso-list:l5 level1 lfo3"><span lang="EN-US" style="font-size:11.0pt">We boot up DPDK by RTE_EAL_INIT </span><o:p></o:p></li></ol>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<ol style="margin-top:0cm" start="4" type="1">
<li class="MsoNormal" style="color:black;mso-list:l1 level1 lfo4"><span lang="EN-US" style="font-size:11.0pt">Then we go to DPDK Memory segment list walkthrough and for each FBARRAY , we find the used pages by DPDK and unmap the remaining pages by below code
(Idea is to free the huge pages taken by DPDK process virtual memory) -> <span style="background:yellow">Free_HP will be 0 then, as X pages are used by DPDK and all unnecessary pages are freed in this step)</span></span><o:p></o:p></li></ol>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black">Sample Code of 4 :</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:black"> </span><span style="font-size:11.0pt;color:black">rte_memseg_list_walk_thread_unsafe(dpdk_find_and_free_unused, NULL); ->DPDK_FIND_AND_FREE_UNUSED is called for each
Memory segment list (FBARRAY pointer is derived from MSL like below)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> dpdk_find_and_free_unused(const struct rte_memseg_list *msl,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> void *arg UNUSED)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> {</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> Int ms_idx;</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> arr = (struct rte_fbarray *) &msl->memseg_arr;</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> /*</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> * use size of 2 instead of 1 to find the next free slot but </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> * not hole.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> */</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> ms_idx = rte_fbarray_find_next_n_free(arr, 0, 2); </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> if (ms_idx >= 0) {</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> addr = RTE_PTR_ADD(msl->base_va, ms_idx * msl->page_sz);</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> munmap(addr, RTE_PTR_DIFF(RTE_PTR_ADD(msl->base_va, msl->len), addr));</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> }</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> }</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<ol style="margin-top:0cm" start="5" type="1">
<li class="MsoNormal" style="color:black;mso-list:l3 level1 lfo5"><span style="font-size:11.0pt">With NR_PAGES As ‘X’ and FREE_PAGES as 0, we create MBUF pools using RTE API and we face crash (We take care ‘X” pages has multi pools based on memory fragmentation
given to the primary process, so pool by pool we have confidence that DPDK should find physical memory segment contiguous and allocate successfully)</span><o:p></o:p></li></ol>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> struct rte_mempool *pool;</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> pool = rte_pktmbuf_pool_create(name, num_mbufs,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> RTE_MIN(num_mbufs/4, MBUF_CACHE_SIZE),</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> MBUF_PRIV_SIZE,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> frame_len + RTE_PKTMBUF_HEADROOM,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> rte_socket_id()</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<ol style="margin-top:0cm" start="6" type="1">
<li class="MsoNormal" style="color:black;mso-list:l2 level1 lfo6"><span style="font-size:11.0pt">Sometimes randomly we face a crash during pool create in Step 5 for each POOL stored in Step 2 process for all ports and queues initialize later on</span><o:p></o:p></li></ol>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> DPDK EAL core comes with BT like this</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> </span><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F">#<span style="background:yellow">6 sigcrash (signo=11,
info=0x7fff1c1867f0, ctx=0x7fff1c1866c0)</span></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> #7 </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> <span style="background:yellow">#8 malloc_elem_can_hold () from ./usr/lib64/dpdk-19/librte_eal.so.20.0</span></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;background:yellow"> #9 find_suitable_element () from ./usr/lib64/dpdk-19/librte_eal.so.20.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F;background:yellow"> #10 malloc_heap_alloc () from ./usr/lib64/dpdk-19/librte_eal.so.20.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> #11 rte_malloc_socket () from ./usr/lib64/dpdk-19/librte_eal.so.20.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> #12 rte_mempool_create_empty () from ./usr/lib64/dpdk-19/librte_mempool.so.20.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> #13 rte_pktmbuf_pool_create_by_ops () from ./usr/lib64/dpdk-19/librte_mbuf.so.20.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> #14 rte_pktmbuf_pool_create () from ./usr/lib64/dpdk-19/librte_mbuf.so.20.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Helvetica Neue Light";color:#0F0F0F"> #15 dpdk_create_mbuf_pool (mem_chunk_tbl=0x555d556de8e0 , num_mbufs=46080, frame_len=2048, name=0x7fff1c1873c0 "DPDK_POOL_0")
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> We see find suitable element does not able to find a suitable element in DPDK memory segment lists it searches for HEAP ALLOC and returns NULL and NULL dereference crashes boot
up process</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black;background:yellow">Please let me know any comments on boot up process for 1-6 and any reason behind the crash ?</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black">We are suspecting Step 4 where FBARRAY unused pages freeing at last should free the least contiguous memory segments right ? (munmap after finding 2 free pages , entire length we unmap in step
4 to free virtual memory)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black">Please let me know thoughts on <span style="background:yellow">FBARRAY design, is it expected to map the most contiguous…..least contiguous in a virtual address space right ?</span></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black">So our most contiguous segments in Step 2 is safe even after Step 3, Step 4 we believe. Please correct my understanding if anything wrong.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black">Thanks</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:black">Umakiran</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
</div>
</body>
</html>