Message ID | 20241119012224.1698238-1-krisman@suse.de (mailing list archive) |
---|---|
Headers | show |
Series | Clean up alloc_cache allocations | expand |
On 11/18/24 6:22 PM, Gabriel Krisman Bertazi wrote: > Jens, Pavel, > > The allocation paths that use alloc_cache duplicate the same code > pattern, sometimes in a quite convoluted way. This series cleans up > that code by folding the allocation into the cache code itself, making > it just an allocator function, and keeping the cache policy invisible to > callers. A bigger justification for doing this, beyond code simplicity, > is that it makes it trivial to test the impact of disabling the cache > and using slab directly, which I've used for slab improvement > experiments. I think this is one step forward in the direction > eventually lifting the alloc_cache into a proper magazine layer in slab > out of io_uring. Nice! Patchset looks good, from a quick look, even from just a cleanup perspective. We're obviously inside the merge window right now, so it's a 6.14 target at this point. I'll take some timer to review it a bit closer later this week. > It survived liburing testsuite, and when microbenchmarking the > read-write path with mmtests and fio, I didn't observe any significant > performance variation (there was actually a 2% gain, but that was > within the variance of the test runs, making it not signficant and > surely test noise). > > I'm specifically interested, and happy to do so, if there are specific > benchmarks you'd like me to run it against. In general, running the liburing test suite with various types of files and devices and with KASAN and LOCKDEP turned on is a good test of not having messed something up, in a big way at least. But maybe you already ran that too?
Jens Axboe <axboe@kernel.dk> writes: > On 11/18/24 6:22 PM, Gabriel Krisman Bertazi wrote: >> Jens, Pavel, >> >> The allocation paths that use alloc_cache duplicate the same code >> pattern, sometimes in a quite convoluted way. This series cleans up >> that code by folding the allocation into the cache code itself, making >> it just an allocator function, and keeping the cache policy invisible to >> callers. A bigger justification for doing this, beyond code simplicity, >> is that it makes it trivial to test the impact of disabling the cache >> and using slab directly, which I've used for slab improvement >> experiments. I think this is one step forward in the direction >> eventually lifting the alloc_cache into a proper magazine layer in slab >> out of io_uring. > > Nice! > > Patchset looks good, from a quick look, even from just a cleanup > perspective. We're obviously inside the merge window right now, so it's > a 6.14 target at this point. I'll take some timer to review it a bit > closer later this week. > >> It survived liburing testsuite, and when microbenchmarking the >> read-write path with mmtests and fio, I didn't observe any significant >> performance variation (there was actually a 2% gain, but that was >> within the variance of the test runs, making it not signficant and >> surely test noise). >> >> I'm specifically interested, and happy to do so, if there are specific >> benchmarks you'd like me to run it against. > > In general, running the liburing test suite with various types of files > and devices and with KASAN and LOCKDEP turned on is a good test of not > having messed something up, in a big way at least. But maybe you already > ran that too? I was thinking more of extra performance benchmark, but I always forget to enable KASAN. I'll rerun to confirm it is fine. :) thanks,