diff options
| author | Davidlohr Bueso <[email protected]> | 2020-04-23 22:48:37 -0700 |
|---|---|---|
| committer | Paolo Bonzini <[email protected]> | 2020-05-13 12:14:56 -0400 |
| commit | da4ad88cab5867ee240dfd0585e9d115a8cc47db (patch) | |
| tree | b145ec0dedb065d2633ba62466cc5c7232a894af /tools/perf/scripts/python/bin | |
| parent | 191a43be61d6791fd4a9098a35c1a09e73f55228 (diff) | |
kvm: Replace vcpu->swait with rcuwait
The use of any sort of waitqueue (simple or regular) for
wait/waking vcpus has always been an overkill and semantically
wrong. Because this is per-vcpu (which is blocked) there is
only ever a single waiting vcpu, thus no need for any sort of
queue.
As such, make use of the rcuwait primitive, with the following
considerations:
- rcuwait already provides the proper barriers that serialize
concurrent waiter and waker.
- Task wakeup is done in rcu read critical region, with a
stable task pointer.
- Because there is no concurrency among waiters, we need
not worry about rcuwait_wait_event() calls corrupting
the wait->task. As a consequence, this saves the locking
done in swait when modifying the queue. This also applies
to per-vcore wait for powerpc kvm-hv.
The x86 tscdeadline_latency test mentioned in 8577370fb0cb
("KVM: Use simple waitqueue for vcpu->wq") shows that, on avg,
latency is reduced by around 15-20% with this change.
Cc: Paul Mackerras <[email protected]>
Cc: [email protected]
Cc: [email protected]
Reviewed-by: Marc Zyngier <[email protected]>
Signed-off-by: Davidlohr Bueso <[email protected]>
Message-Id: <[email protected]>
[Avoid extra logic changes. - Paolo]
Signed-off-by: Paolo Bonzini <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/bin')
0 files changed, 0 insertions, 0 deletions