Messages in this thread Patch in this message | | | Date | Mon, 10 Jan 2005 11:28:38 +0100 (MET) | From | Jan Engelhardt <> | Subject | keventd gives exceptional priority to usermode helpers |
| |
Hi,
on SUSE 9.2, we experienced that plugging in an USB stick slows the system down considerably. In the end, I tracked (one half of the problem) down to kernelspace, where keventd starts the /sbin/hotplug usermode helper with priority -20. This is bad because hotplug, udev or the programs that ship with the whole hotplug subsystem (possibly including SUSE's own scripts) require some CPU -- and with nice -20 get it definitely.
keventd itself should stay at nice level -20, since it also spawns kreiserfsd, just to name one. So the (attached) patch reprioritizes *user*mode helpers/tasks back to nice 0.
Signed-off-by: Jan Engelhardt <jengelh@linux01.gwdg.de>
Jan Engelhardt -- ENOSPC#============================================================================== # Linux 2.6-HX MODIFICATION # Copyright (C) Jan Engelhardt <jengelh [at] linux01 gwdg de>, 2004 # -- License restrictions apply (GPL2) # -- For details see doc/GPL2.txt. # http://linux01.org:2222/prog-hxtools.php #============================================================================== # File: utf8fix.diff # Class: # # - udev and friends need a fair amount of CPU, and really bring down the # system when they run -- usually in nice -20 # Fix it in that usermode helpers always get nice 0 by default # #------------------------------------------------------------------------------ diff -dpu usr_A/src/kotd/linux-2.6.8-20041204030200/kernel/kmod.c usr_B/src/kotd/linux-2.6.8-20041204030200/kernel/kmod.c --- usr_A/src/kotd/linux-2.6.8-20041204030200/kernel/kmod.c 2004-12-06 14:28:44.000000000 +0100 +++ usr_B/src/kotd/linux-2.6.8-20041204030200/kernel/kmod.c 2005-01-06 11:44:04.130600000 +0100 @@ -165,6 +165,7 @@ static int ____call_usermodehelper(void /* We can run anywhere, unlike our parent keventd(). */ set_cpus_allowed(current, CPU_MASK_ALL); + set_user_nice(current, 0); retval = -EPERM; if (current->fs->root) | |