mbox series

[RFT,0/5] module: avoid userspace pressure on unwanted allocations

Message ID 20230319214926.1794108-1-mcgrof@kernel.org (mailing list archive)
Headers show
Series module: avoid userspace pressure on unwanted allocations | expand

Message

Luis Chamberlain March 19, 2023, 9:49 p.m. UTC
Finally this third patch set spins the first RFC I put out to help
reduce memory pressure [0]. It updates the commit log with some stats
obtained on a guest, but I need to do more tests on more systems and
then also with stress-ng. I posted a patch to run stress-ng for modules,
so it stresses running finit_module() [1]. Using that instead of
kmod test 0008 should be useful as that really puts some heavy load
without going through the kernel module auto-loader, that has a
restriction of just allowing 50 threads concurrently. The issue with
that stress test so far is that unloading doesn't seem to unload yet.

The last patch is purely for testing purposes and its value can only be
shown if it really does help the use case of a large system with many
CPUs. That situation is known currently to cuase issues with subsystems
which end up loading tons of the same drivers and so this tries to be
a bit defensive for subsystems that might need some love in this area.

I have two trees for this patchset, the first one had the ELF checker
and validity tests at the end [2], and the latest one re-adjusts the
ordering to put this patch set as the last series [3], in line with
the order in which I've submitted the patches. I had only run time
tested the patch order on [2] but it makes sense to put more of the
heavier functional changes at the very end, and request for further
testing.

[0] https://lkml.kernel.org/r/20230311051712.4095040-1-mcgrof@kernel.org
[1] https://lore.kernel.org/all/ZBUA6E3kYh0Xuu/c@bombadil.infradead.org/?q=stress-ng+mcgrof
[2] https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git/log/?h=20230319-module-alloc-opts

Luis Chamberlain (5):
  module: move finished_loading()
  module: extract patient module check into helper
  module: avoid allocation if module is already present and ready
  module: use list_add_tail_rcu() when adding module
  module: add a sanity check prior to allowing kernel module
    auto-loading

 kernel/module/internal.h |   1 +
 kernel/module/kmod.c     |   7 ++
 kernel/module/main.c     | 139 ++++++++++++++++++++++++---------------
 3 files changed, 93 insertions(+), 54 deletions(-)