Messages in this thread | | | Date | Tue, 25 Nov 2014 15:21:08 -0200 | From | Marcelo Tosatti <> | Subject | [patch -rt 0/2] use simple waitqueue for kvm vcpu waitqueue (v2) |
| |
The problem:
On -RT, an emulated LAPIC timer instances has the following path:
1) hard interrupt 2) ksoftirqd is scheduled 3) ksoftirqd wakes up vcpu thread 4) vcpu thread is scheduled
This extra context switch introduces unnecessary latency in the LAPIC path for a KVM guest.
The solution:
Allow waking up vcpu thread from hardirq context, thus avoiding the need for ksoftirqd to be scheduled.
Normal waitqueues make use of spinlocks, which on -RT are sleepable locks. Therefore, waking up a waitqueue waiter involves locking a sleeping lock, which is not allowed from hard interrupt context.
cyclictest command line: # cyclictest -m -n -q -p99 -l 1000000 -h60 -D 1m
This patch reduces the average latency in my tests from 14us to 11us.
v2: improve changelog (Rik van Riel)
| |