On Fri 17-03-23 16:25:04, Ojaswin Mujoo wrote: > On Thu, Mar 09, 2023 at 03:14:22PM +0100, Jan Kara wrote: > > On Fri 27-01-23 18:07:35, Ojaswin Mujoo wrote: > > > Currently, ext4_mb_prefetch() and ext4_mb_prefetch_fini() skip > > > BLOCK_UNINIT groups since fetching their bitmaps doesn't need disk IO. > > > As a consequence, we end not initializing the buddy structures and CR0/1 > > > lists for these BGs, even though it can be done without any disk IO > > > overhead. Hence, don't skip such BGs during prefetch and prefetch_fini. > > > > > > This improves the accuracy of CR0/1 allocation as earlier, we could have > > > essentially empty BLOCK_UNINIT groups being ignored by CR0/1 due to their buddy > > > not being initialized, leading to slower CR2 allocations. With this patch CR0/1 > > > will be able to discover these groups as well, thus improving performance. > > > > > > Signed-off-by: Ojaswin Mujoo <ojaswin@xxxxxxxxxxxxx> > > > Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@xxxxxxxxx> > > > > The patch looks good. I just somewhat wonder - this change may result in > > uninitialized groups being initialized and used earlier (previously we'd > > rather search in other already initialized groups) which may spread > > allocations more. But I suppose that's fine and uninit groups are not > > really a feature meant to limit fragmentation and as the filesystem ages > > the differences should be minimal. So feel free to add: > > > > Reviewed-by: Jan Kara <jack@xxxxxxx> > > > > Honza > Thanks for the review. As for the allocation spread, I agree that it > should be something our goal determination logic should take care of > rather than limiting the BGs available to the allocator. > > Another point I wanted to discuss wrt this patch series was why were the > BLOCK_UNINIT groups not being prefetched earlier. One point I can think > of is that this might lead to memory pressure when we have too many > empty BGs in a very large (say terabytes) disk. > > But i'd still like to know if there's some history behind not > prefetching block uninit. Hum, I don't remember anything. Maybe Ted will. You can ask him today on a call. Honza -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR