From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Vrabel Subject: passthrough: improve interrupt injection locking Date: Fri, 23 Oct 2015 12:05:20 +0100 Message-ID: <1445598322-22154-1-git-send-email-david.vrabel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1ZpaAA-0003br-G2 for xen-devel@lists.xenproject.org; Fri, 23 Oct 2015 11:05:34 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: David Vrabel , Jan Beulich , Ian Campbell List-Id: xen-devel@lists.xenproject.org When injecting an interrupt for a passthrough device into a guest, the per-domain event_lock is held, reducing performance when a guest has many VCPUs and high interrupt rates. By using a per-interrupt lock in the hot paths, this contention is eliminated and performance improves (a bit). For testing, a 32 VCPU guest with an NVME device assigned to it was used. Continual reads with small (512 B) blocks were performed on all 32 hardware queues simultaneously. * Lock profiling: Before (elapsed: 60 s): (XEN) [ 3321.143155] Domain 1 event_lock: (XEN) [ 3321.143158] lock: 14411627(00000005:90714AEF), block: 6658599(00000003:709F82BD) After (elapsed: 60 s): (XEN) [ 1253.921427] Domain 2 event_lock: (XEN) [ 1253.921429] lock: 8287(00000000:01AE517C), block: 67(00000000:000D4C3A) * Aggregate performance: MB/s Before 60.8 After 68.4 David