On Thu, Oct 17, 2013 at 03:24:36PM +0000, Christoph Lameter wrote: > On Thu, 17 Oct 2013, Frederic Weisbecker wrote: > > > > - /* We can run anywhere, unlike our parent keventd(). */ > > > - set_cpus_allowed_ptr(current, cpu_all_mask); > > > + /* We can run anywhere kthreadd can run */ > > > + set_kthreadd_affinity(); > > > > If you really want your isolated CPUs to be undisturbed, you need this > > affinity to > > be set before the creation of this usermode helper. Otherwise it's going to > > run to any random > > place before you call the above function. > > > > Is there now way to control the kworker affinity which create this usermode > > helpers threads > > instead? > > The invocation is coming from keventd so the affinity seems to be set to > a different cpu before we get the thread moved.
Looking at alloc_singlethread_workqueue(), it seems to create a kthread by using kthread_create(). So I guess the resulting works have the affinity of that kthread. And thus call_usermodehelper() initially has that affinity, until it spreads it explicitly to all CPUs. Couldn't we instead make kthread children (those created with kthread_create()) to inherit kthread initial affinity? Currently kthread's children have cpu_all_mask. We could change that behaviour. This way the initial kthread affinity could be inherited all along. > > A tsc loop is running on the processor that gets hit by the usermodehelper > spawns. > > We see spawning by the tty notifier (when typing on a vt) as well as by a > mellanox driver (periodically).> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/