From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752406AbaKYRYs (ORCPT ); Tue, 25 Nov 2014 12:24:48 -0500 Received: from mx1.redhat.com ([209.132.183.28]:48657 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750870AbaKYRYq (ORCPT ); Tue, 25 Nov 2014 12:24:46 -0500 Message-Id: <20141125172108.992070524@redhat.com> User-Agent: quilt/0.60-1 Date: Tue, 25 Nov 2014 15:21:08 -0200 From: Marcelo Tosatti To: linux-kernel@vger.kernel.org Cc: Luiz Capitulino , Rik van Riel , Steven Rostedt , Thomas Gleixner , kvm@vger.kernel.org Subject: [patch -rt 0/2] use simple waitqueue for kvm vcpu waitqueue (v2) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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)