On Mon, Jul 24, 2017 at 07:02:17PM -0400, Dennis Zhou wrote: > From: "Dennis Zhou (Facebook)" <dennisszhou@xxxxxxxxx> > > The bitmap allocator must keep metadata consistent. The easiest way is > to scan after every allocation for each affected block and the entire > chunk. This is rather expensive. > > The free path can take advantage of current contig hints to prevent > scanning within the start and end block. If a scan is needed, it can > be done by scanning backwards from the start and forwards from the end > to identify the entire free area this can be combined with. The blocks > can then be updated by some basic checks rather than complete block > scans. > > A chunk scan happens when the freed area makes a page free, a block > free, or spans across blocks. This is necessary as the contig hint at > this point could span across blocks. The check uses the minimum of page > size and the block size to allow for variable sized blocks. There is a > tradeoff here with not updating after every free. It is possible a > contig hint in one block can be merged with the contig hint in the next > block. This means the contig hint can be off by up to a page. However, > if the chunk's contig hint is contained in one block, the contig hint > will be accurate. > > Signed-off-by: Dennis Zhou <dennisszhou@xxxxxxxxx> Reviewed-by: Josef Bacik <jbacik@xxxxxx> Thanks, Josef -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>