On 1/17/20 1:01 PM, Olivier Matz wrote: > On Fri, Jan 17, 2020 at 10:51:49AM +0100, Olivier Matz wrote: >> When allocating a mempool which is larger than the largest >> available area, it can take a lot of time: >> >> a- the mempool calculate the required memory size, and tries >> to allocate it, it fails >> b- then it tries to allocate the largest available area (this >> does not request new huge pages) >> c- add this zone to the mempool, this triggers the allocation >> of a mem hdr, which request a new huge page >> d- back to a- until mempool is populated or until there is no >> more memory >> >> This can take a lot of time to finally fail (several minutes): in step >> a- it takes all available hugepages on the system, then release them >> after it fails. >> >> The problem appeared with commit eba11e364614 ("mempool: reduce wasted >> space on populate"), because smaller chunks are now allowed. Previously, >> it had to be at least one page size, which is not the case in step b-. >> >> To fix this, implement our own way to allocate the largest available >> area instead of using the feature from memzone: if an allocation fails, >> try to divide the size by 2 and retry. When the requested size falls >> below min_chunk_size, stop and return an error. >> >> Fixes: eba11e364614 ("mempool: reduce wasted space on populate") >> Cc: sta...@dpdk.org >> >> Signed-off-by: Olivier Matz <olivier.m...@6wind.com> > > Sorry I forgot to report Anatoly's ack on v1 > http://patchwork.dpdk.org/patch/64370/ > > Acked-by: Anatoly Burakov <anatoly.bura...@intel.com>
Reviewed-by: Andrew Rybchenko <arybche...@solarflare.com>