On 6/17/20 5:32 AM, Roman Gushchin wrote: > On Tue, Jun 16, 2020 at 08:05:39PM -0700, Shakeel Butt wrote: >> On Tue, Jun 16, 2020 at 7:41 PM Roman Gushchin <guro@xxxxxx> wrote: >> > >> > On Tue, Jun 16, 2020 at 06:46:56PM -0700, Shakeel Butt wrote: >> > > On Mon, Jun 8, 2020 at 4:07 PM Roman Gushchin <guro@xxxxxx> wrote: >> > > > >> [...] >> > > >> > > Have you performed any [perf] testing on SLAB with this patchset? >> > >> > The accounting part is the same for SLAB and SLUB, so there should be no >> > significant difference. I've checked that it compiles, boots and passes >> > kselftests. And that memory savings are there. >> > >> >> What about performance? Also you mentioned that sharing kmem-cache >> between accounted and non-accounted can have additional overhead. Any >> difference between SLAB and SLUB for such a case? > > Not really. > > Sharing a single set of caches adds some overhead to root- and non-accounted > allocations, which is something I've tried hard to avoid in my original version. > But I have to admit, it allows to simplify and remove a lot of code, and here > it's hard to argue with Johanness, who pushed on this design. > > With performance testing it's not that easy, because it's not obvious what > we wanna test. Obviously, per-object accounting is more expensive, and > measuring something like 1000000 allocations and deallocations in a line from > a single kmem_cache will show a regression. But in the real world the relative > cost of allocations is usually low, and we can get some benefits from a smaller > working set and from having shared kmem_cache objects cache hot. > Not speaking about some extra memory and the fragmentation reduction. > > We've done an extensive testing of the original version in Facebook production, > and we haven't noticed any regressions so far. But I have to admit, we were > using an original version with two sets of kmem_caches. > > If you have any specific tests in mind, I can definitely run them. Or if you > can help with the performance evaluation, I'll appreciate it a lot. Jesper provided some pointers here [1], it would be really great if you could run at least those microbenchmarks. With mmtests it's the major question of which subset/profiles to run, maybe the referenced commits provide some hints, or maybe Mel could suggest what he used to evaluate SLAB vs SLUB not so long ago. [1] https://lore.kernel.org/linux-mm/20200527103545.4348ac10@carbon/ > Thanks! >