Thread (14 messages) 14 messages, 6 authors, 2012-11-21

Re: [REPOST-v2] sched: Prevent wakeup to enter critical section needlessly

From: Ivo Sieben <hidden>
Date: 2012-11-19 15:34:08
Also in: lkml

Hi

2012/11/19 Oleg Nesterov [off-list ref]:
I am wondering if it makes sense unconditionally. A lot of callers do

        if (waitqueue_active(q))
                wake_up(...);

this patch makes the optimization above pointless and adds mb().


But I won't argue.

Oleg.
This patch solved an issue for me that I had with the TTY line
discipline idle handling:
Testing on a PREEMPT_RT system with TTY serial communication. Each
time the TTY line discipline is dereferenced the Idle handling wait
queue is woken up (see function put_ldisc in /drivers/tty/tty_ldisc.c)
However line discipline idle handling is not used very often so the
wait queue is empty most of the time. But still the wake_up() function
enters the critical section guarded by spin locks. This causes
additional scheduling overhead when a lower priority thread has
control of that same lock.

The /drivers/tty/tty_ldisc.c did not use the waitqueue_active() call
to check if the waitqueue was filled.... maybe I should solve this
problem the other way around: and make tty_ldisc.c first do the
waitqueue_active() call?

Regards,
Ivo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help