On Fri, Nov 11, 2022 at 11:33:30AM +0100, Vlastimil Babka wrote: > On 11/8/22 22:44, Pasha Tatashin wrote: > > On Tue, Nov 8, 2022 at 10:55 AM Vlastimil Babka <vbabka@xxxxxxx> wrote: > >> > >> Hi, > >> > >> as we all know, we currently have three slab allocators. As we discussed > >> at LPC [1], it is my hope that one of these allocators has a future, and > >> two of them do not. > >> > >> The unsurprising reasons include code maintenance burden, other features > >> compatible with only a subset of allocators (or more effort spent on the > >> features), blocking API improvements (more on that below), and my > >> inability to pronounce SLAB and SLUB in a properly distinguishable way, > >> without resorting to spelling out the letters. > >> > >> I think (but may be proven wrong) that SLOB is the easier target of the > >> two to be removed, so I'd like to focus on it first. > >> > >> I believe SLOB can be removed because: > >> > >> - AFAIK nobody really uses it? It strives for minimal memory footprint > >> by putting all objects together, which has its CPU performance costs > >> (locking, lack of percpu caching, searching for free space...). I'm not > >> aware of any "tiny linux" deployment that opts for this. For example, > >> OpenWRT seems to use SLUB and the devices these days have e.g. 128MB > >> RAM, not up to 16 MB anymore. I've heard anecdotes that the performance > >> SLOB impact is too much for those who tried. Googling for > >> "CONFIG_SLOB=y" yielded nothing useful. > > > > I am all for removing SLOB. > > > > There are some devices with configs where SLOB is enabled by default. > > Perhaps, the owners/maintainers of those devices/configs should be > > included into this thread: > > > > tatashin@soleen:~/x/linux$ git grep SLOB=y > > arch/riscv/configs/nommu_k210_defconfig:CONFIG_SLOB=y > > arch/riscv/configs/nommu_k210_sdcard_defconfig:CONFIG_SLOB=y > > arch/riscv/configs/nommu_virt_defconfig:CONFIG_SLOB=y > > Turns out that since SLOB depends on EXPERT, many of those lack it so > running make defconfig ends up with SLUB anyway, unless I miss something. > Only a subset has both SLOB and EXPERT: > > > git grep CONFIG_EXPERT `git grep -l "CONFIG_SLOB=y"` > arch/riscv/configs/nommu_virt_defconfig:CONFIG_EXPERT=y I suppose there's not really a concern with the virt defconfig, but I did check the output of `make nommu_k210_defconfig" and despite not having expert it seems to end up CONFIG_SLOB=y in the generated .config. I do have a board with a k210 so I checked with s/SLOB/SLUB and it still boots etc, but I have no workloads or w/e to run on it.