All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv3 0/6] evtchn: Improve scalebility
@ 2015-06-17 12:02 David Vrabel
  2015-06-17 12:02 ` [PATCHv3 1/6] evtchn: clear xen_consumer when clearing state David Vrabel
                   ` (5 more replies)
  0 siblings, 6 replies; 24+ messages in thread
From: David Vrabel @ 2015-06-17 12:02 UTC (permalink / raw)
  To: xen-devel
  Cc: Keir Fraser, Tim Deegan, David Vrabel, Jan Beulich, Ian Campbell

The per-domain event channel lock limits scalability when many VCPUs
are trying to send interdomain events.  A per-channel lock is
introduced eliminating any lock contention when sending an event.

See this graph for the performance improvements:

  http://xenbits.xen.org/people/dvrabel/evtchn-scalability.png

A different test (using Linux's evtchn device which masks/unmasks
event channels) showed the following lock profile improvements:

Per-domain lock:
(XEN)   lock:    69267976(00000004:19830041), block:    27777407(00000002:3C7C5C96)

Per-event channel lock 
(XEN)   lock:      686530(00000000:076AF5F6), block:        1787(00000000:000B4D22)

Locking removed from evtchn_unmask():
(XEN)   lock:       10769(00000000:00512999), block:          99(00000000:00009491)

v3:
- Clear xen_consumer when clearing state.
- Defer freeing struct evtchn's until evtchn_destroy_final().
- Remove redundant d->evtchn test from port_is_valid().
- Use port_is_valid() again.
- Drop event lock from notify_via_xen_event_channel().

v2:
- Use unsigned int for d->valid_evtchns.
- Compare channel pointers in double_evtchn_lock().

David

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2015-06-19 16:58 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-17 12:02 [PATCHv3 0/6] evtchn: Improve scalebility David Vrabel
2015-06-17 12:02 ` [PATCHv3 1/6] evtchn: clear xen_consumer when clearing state David Vrabel
2015-06-18 10:30   ` Jan Beulich
2015-06-17 12:02 ` [PATCHv3 2/6] evtchn: defer freeing struct evtchn's until evtchn_destroy_final() David Vrabel
2015-06-18 10:36   ` Jan Beulich
2015-06-18 10:40     ` David Vrabel
2015-06-18 11:01       ` Jan Beulich
2015-06-19  9:29       ` Jan Beulich
2015-06-19  9:52         ` David Vrabel
2015-06-19 10:55           ` Jan Beulich
2015-06-19 12:23             ` David Vrabel
2015-06-19 13:04               ` Jan Beulich
2015-06-19 16:58                 ` David Vrabel
2015-06-17 12:03 ` [PATCHv3 3/6] evtchn: simplify port_is_valid() David Vrabel
2015-06-17 12:03 ` [PATCHv3 4/6] evtchn: use a per-event channel lock for sending events David Vrabel
2015-06-18 11:20   ` Jan Beulich
2015-06-18 11:39     ` David Vrabel
2015-06-17 12:03 ` [PATCHv3 5/6] evtchn: remove the locking when unmasking an event channel David Vrabel
2015-06-18 11:30   ` Jan Beulich
2015-06-18 11:36     ` David Vrabel
2015-06-18 12:08       ` Jan Beulich
2015-06-18 12:17         ` David Vrabel
2015-06-17 12:03 ` [PATCHv3 6/6] evtchn: pad struct evtchn to 64 bytes David Vrabel
2015-06-18 11:31   ` Jan Beulich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.