block: enable per-cpu bio caching for the fs bio set
Jens Axboe
maintainerPATCH 1/1 block: enable per-cpu bio caching for the fs bio set
This is useful for polled IO on a file, or for polled IO with the io_uring passthrough mechanism. If bio allocations are done with REQ_POLLED for those cases, then initializing the bio set with BIOSET_PERCPU_CACHE enables the local per-cpu cache which eliminates allocations (and frees) of bio structs when possible.
Signed-off-by Jens Axboe <[email protected]>
---
block/bio.c +2 -1
@@ -1754,7 +1754,8 @@ static int __init init_bio(void)cpuhp_setup_state_multi (CPUHP_BIO_DEAD ,"block/bio:dead" ,NULL , bio_cpu_dead); -if (bioset_init (&fs_bio_set,BIO_POOL_SIZE ,0 ,BIOSET_NEED_BVECS )) +if (bioset_init (&fs_bio_set,BIO_POOL_SIZE ,0 , +BIOSET_NEED_BVECS |BIOSET_PERCPU_CACHE ))panic ("bio: can't allocate bios\n" );if (bioset_integrity_create (&fs_bio_set,BIO_POOL_SIZE ))
Signature · 1 line
Jens Axboe
Quoted 7 lines · Jens Axboe
This is useful for polled IO on a file, or for polled IO with the
io_uringpassthrough mechanism. If bio allocations are done withREQ_POLLEDfor those cases, then initializing the bio set withBIOSET_PERCPU_CACHEenables the local per-cpu cache which eliminates allocations (and frees) of bio structs when possible.Signed-off-by Jens Axboe <[email protected]>
Reviewed-by Kanchan Joshi <[email protected]>