diff options
author | Dennis Zhou <dennis@kernel.org> | 2019-02-13 11:10:30 -0800 |
---|---|---|
committer | Dennis Zhou <dennis@kernel.org> | 2019-03-13 12:25:31 -0700 |
commit | b239f7daf5530f562000bf55f02cc8028703f507 (patch) | |
tree | 699b64a042de071ada97dc59288d1882181b64b9 /mm/percpu-km.c | |
parent | 8744d859427c6198dce490619809754336954297 (diff) | |
download | lwn-b239f7daf5530f562000bf55f02cc8028703f507.tar.gz lwn-b239f7daf5530f562000bf55f02cc8028703f507.zip |
percpu: set PCPU_BITMAP_BLOCK_SIZE to PAGE_SIZE
Previously, block size was flexible based on the constraint that the
GCD(PCPU_BITMAP_BLOCK_SIZE, PAGE_SIZE) > 1. However, this carried the
overhead that keeping a floating number of populated free pages required
scanning over the free regions of a chunk.
Setting the block size to be fixed at PAGE_SIZE lets us know when an
empty page becomes used as we will break a full contig_hint of a block.
This means we no longer have to scan the whole chunk upon breaking a
contig_hint which empty page management piggybacked off. A later patch
takes advantage of this to optimize the allocation path by only scanning
forward using the scan_hint introduced later too.
Signed-off-by: Dennis Zhou <dennis@kernel.org>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'mm/percpu-km.c')
-rw-r--r-- | mm/percpu-km.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/percpu-km.c b/mm/percpu-km.c index b68d5df14731..3a2ff5c9192c 100644 --- a/mm/percpu-km.c +++ b/mm/percpu-km.c @@ -70,7 +70,7 @@ static struct pcpu_chunk *pcpu_create_chunk(gfp_t gfp) chunk->base_addr = page_address(pages); spin_lock_irqsave(&pcpu_lock, flags); - pcpu_chunk_populated(chunk, 0, nr_pages, false); + pcpu_chunk_populated(chunk, 0, nr_pages); spin_unlock_irqrestore(&pcpu_lock, flags); pcpu_stats_chunk_alloc(); |