On Sat, 2016-01-23 at 21:46 -0600, Christoph Lameter wrote: > On Sun, 24 Jan 2016, Mike Galbraith wrote: > > > By switching cross-core, I'm referring to scheduling of communicating > > tasks. > > ??? Its cancelling a work request. That is a "communicating task"?
No no no, pipe-test is two tasks playing ping-pong via a pipe. They are about as synchronous as it gets, so each task goes idle at high frequency. Idle is fastpath. > > Here's the sleeping lock for -rt: > > > > [ 2.279582] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.5.0-rt3 #7 > > [ 2.280444] Hardware name: MEDION MS-7848/MS-7848, BIOS M7848W08.20C > > 09/23/2013 > > [ 2.281316] ffff88040b00d640 ffff88040b01fe10 ffffffff812d20e2 > > 0000000000000000 > > [ 2.282202] ffff88040b01fe30 ffffffff81081095 ffff88041ec4cee0 > > ffff88041ec501e0 > > [ 2.283073] ffff88040b01fe48 ffffffff815ff910 ffff88041ec4cee0 > > ffff88040b01fe88 > > [ 2.283941] Call Trace: > > [ 2.284797] [] dump_stack+0x49/0x67 > > [ 2.285658] [] ___might_sleep+0xf5/0x180 > > [ 2.286521] [] rt_spin_lock+0x20/0x50 > > [ 2.287382] [] try_to_grab_pending+0x69/0x240 > > [ 2.288239] [] cancel_delayed_work+0x26/0xe0 > > OMG cancelling a work request causes a sleeping lock to be taken? Yup. In -rt, spinlocks that are not raw are transformed into rtmutex. -Mike