Hi all,<div><br></div><div>I am running gluster-3.4.5 on 2 servers. Each of them has 7 2TB HDDs to build a 7 * 2 distributed + replicated volume.</div><div>I just notice that the glusterd consume about 120GB memory and get a coredump today. I read the mempool code try to identify which mempool eat the memory. Unfortunetly, the glusterd did not run with --mem-accounting. Now I just have a coredump file to debug... Anyway, I read some codes about mem_pool try to identify which mem_pool consumes such large memory. Here is the result:</div><div><br></div><div>I wrote a gdb script to print out the glusterfsd_ctx-&gt;mempool_list:</div><div><br></div><div># script of gdb to print out all none-zero mem_pool</div><div><div>set $head = &amp;glusterfsd_ctx-&gt;mempool_list</div><div>set $offset = (unsigned long)(&amp;((struct mem_pool*)0)-&gt;global_list)</div><div>set $pos = (struct mem_pool*)((unsigned long)($head-&gt;next) - $offset)</div><div>set $memsum = 0</div><div>while ( &amp;$pos-&gt;global_list != $head)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if ($pos-&gt;hot_count + $pos-&gt;curr_stdalloc)</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>p *$pos</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>set $thismempoolsize = ($pos-&gt;hot_count + $pos-&gt;curr_stdalloc) * $pos-&gt;padded_sizeof_type</div><div><span class="Apple-tab-span" style="white-space:pre">                </span># This is the single mem_pool memory consume</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>p $pos-&gt;name</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>p $thismempoolsize</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>set $memsum += $thismempoolsize</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>end</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>set $pos = (struct mem_pool*)((unsigned long)($pos-&gt;global_list.next) - $offset)</div><div>end</div><div>echo &quot;Total mem used\n&quot;</div><div>p $memsum</div></div><div><br></div><div>Then I got this output:</div><div><br></div><div><div>(gdb) source gdb_show_mempool_list.gdb </div><div>$459 = {list = {next = 0x1625a50, prev = 0x1625a50}, hot_count = 64, cold_count = 0, lock = 1, padded_sizeof_type = 6116, pool = 0x7ff2c9f94010, pool_end = 0x7ff2c9ff3910, real_sizeof_type = 6088, </div><div>  alloc_count = 16919588, pool_misses = 16919096, max_alloc = 64, curr_stdalloc = 16824653, max_stdalloc = 16824655, name = 0x1625ad0 &quot;management:rpcsvc_request_t&quot;, global_list = {next = 0x16211f8, </div><div>    prev = 0x1639368}}</div><div>$460 = 0x1625ad0 &quot;management:rpcsvc_request_t&quot;</div><div>$461 = 102899969172</div><div>$462 = {list = {next = 0x7ff2cc0bf374, prev = 0x7ff2cc0bc2b4}, hot_count = 16352, cold_count = 32, lock = 1, padded_sizeof_type = 52, pool = 0x7ff2cc0bc010, pool_end = 0x7ff2cc18c010, </div><div>  real_sizeof_type = 24, alloc_count = 169845909, pool_misses = 168448980, max_alloc = 16384, curr_stdalloc = 168231365, max_stdalloc = 168231560, name = 0x1621210 &quot;glusterfs:data_t&quot;, global_list = {</div><div>    next = 0x1621158, prev = 0x1625ab8}}</div><div>$463 = 0x1621210 &quot;glusterfs:data_t&quot;</div><div>$464 = 8748881284</div><div>$465 = {list = {next = 0x7ff2cc18e770, prev = 0x7ff2cc18d2fc}, hot_count = 16350, cold_count = 34, lock = 1, padded_sizeof_type = 68, pool = 0x7ff2cc18d010, pool_end = 0x7ff2cc29d010, </div><div>  real_sizeof_type = 40, alloc_count = 152853817, pool_misses = 151477891, max_alloc = 16384, curr_stdalloc = 151406417, max_stdalloc = 151406601, name = 0x1621170 &quot;glusterfs:data_pair_t&quot;, </div><div>  global_list = {next = 0x16210b8, prev = 0x16211f8}}</div><div>$466 = 0x1621170 &quot;glusterfs:data_pair_t&quot;</div><div>$467 = 10296748156</div><div>$468 = {list = {next = 0x1621050, prev = 0x1621050}, hot_count = 4096, cold_count = 0, lock = 1, padded_sizeof_type = 140, pool = 0x7ff2cc29e010, pool_end = 0x7ff2cc32a010, real_sizeof_type = 112, </div><div>  alloc_count = 16995288, pool_misses = 16986651, max_alloc = 4096, curr_stdalloc = 16820855, max_stdalloc = 16820882, name = 0x16210d0 &quot;glusterfs:dict_t&quot;, global_list = {next = 0x1621018, </div><div>    prev = 0x1621158}}</div><div>$469 = 0x16210d0 &quot;glusterfs:dict_t&quot;</div><div>$470 = 2355493140</div><div>&quot;Total mem used</div><div>&quot;$471 = 124301091752</div></div><div><br></div><div>--------------------------------------------------------------------------------------</div><div>&quot;management:rpcsvc_request_t&quot; used 100G</div><div>&quot;glusterfs:data_t&quot; used 8.7GB</div><div>&quot;glusterfs:data_pair_t&quot; used 10GB</div><div>&quot;glusterfs:dict_t&quot; use 2.3G</div><div>Total: 124GB memory</div><div><br></div><div>---------------------------------------------------------------------------------------</div><div>I assume this might happen in a lot of rpc request and not free. </div><div>This happened several days ago, I am still trying to figure out what happen several days ago on my servers.</div><div>Hope someone here might encountered this issue before, or any advices will be grateful!!!</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div>