Path: csiph.com!goblin2!goblin1!goblin.stu.neva.ru!newsfeed.CARNet.hr!news.spin.it!bofh.it!news.nic.it!robomod From: Wanpeng Li Newsgroups: linux.kernel Subject: Re: [PATCH v4] KVM: halt-polling: poll for the upcoming fire timers Date: Wed, 25 May 2016 03:30:02 +0200 Message-ID: References: X-Original-To: David Matlack Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=Ek+ipnpu+WhHE8RNCeN1m4HpzyBvZZza2GrJBrorqt4=; b=GvyEFO6hlfIbCm2hO8kalGW0nr1EjG++wOqU5a72trjCIfzxizdBNDQ+Ik9CutFbde R3ftFevBMsH00OGbF1F3WYPkyQoOC1gEMhOov2LTaF8csdY/NYZpfig6pvuNX43Mva+1 g79WJzRq1G3s0l7nReoOc2WfGlI5CGNSXsB9VDJxJwgvnM8s1pkShEHhoBKHswmmj0cN snO0g1J/TPr50VIt4r/tGgNrryr2HLiJveFZbt8JzJprIhSJC6zuzpmG4TGCxPqM9YS0 M3UEjEWA+Va52/tM126Usqn3hhtemn3js+wSIQhT/nNJNLZgP+rzWZ5uo5cgF/c6ZLqK kL1Q== X-Google-Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=Ek+ipnpu+WhHE8RNCeN1m4HpzyBvZZza2GrJBrorqt4=; b=h2kJwQWHQN22CIIpSk8FYGSka8TIaooYdY6FcjncMmkoipbBciC4sYeymc/R9HOtSH pKZ+D6J8Cq3jwyvVb0kvPGW374l+iAR4fwRSwJgj7fI30HHekIG5f9yct9OqxiOO469j SWgASh/pRPo220tv5GOM/R5i3lfuAs95b1y/wg35wfdkACr/euQQM/ljW5OqSZJTGiYC 1HTvrGjM7YpIi1I/78nKswrOUZJ5X0wj/u20hDhz2UKbvMPBZCXm/byjEy0+w3/mRQvF +kDH2PDc0lyub/TZljAe/LNATBZ97ZRRPKgs9clNXnhavM8kVcDaHa/fw2epJneLwtm6 bY4Q== X-Gm-Message-State: ALyK8tIqf2gl5s06Z0EtBtKPHrRm2zr7TkW4bco6O+zJwSzVjk1AaY2j82AQrxIN7o8z3Fv8kq7ovUD+UjPwng== MIME-Version: 1.0 X-Received: by 10.202.212.86 with SMTP id l83mr652208oig.190.1464139784034; Tue, 24 May 2016 18:29:44 -0700 (PDT) Content-Type: text/plain; charset=UTF-8 Sender: robomod@news.nic.it List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Approved: robomod@news.nic.it Lines: 53 Organization: linux.* mail to news gateway X-Original-Cc: "linux-kernel@vger.kernel.org" , kvm list , Wanpeng Li , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Christian Borntraeger , Yang Zhang X-Original-Date: Wed, 25 May 2016 09:29:43 +0800 X-Original-Message-ID: X-Original-References: <1464076674-4024-1-git-send-email-wanpeng.li@hotmail.com> X-Original-Sender: linux-kernel-owner@vger.kernel.org Xref: csiph.com linux.kernel:1406555 2016-05-25 8:47 GMT+08:00 Wanpeng Li : > 2016-05-25 7:37 GMT+08:00 David Matlack : >> On Tue, May 24, 2016 at 4:11 PM, Wanpeng Li wrote: >>> 2016-05-25 6:38 GMT+08:00 David Matlack : >>>> On Tue, May 24, 2016 at 12:57 AM, Wanpeng Li wrote: >>>>> From: Wanpeng Li >>>>> >>>>> If an emulated lapic timer will fire soon(in the scope of 10us the >>>>> base of dynamic halt-polling, lower-end of message passing workload >>>>> latency TCP_RR's poll time < 10us) we can treat it as a short halt, >>>>> and poll to wait it fire, the fire callback apic_timer_fn() will set >>>>> KVM_REQ_PENDING_TIMER, and this flag will be check during busy poll. >>>>> This can avoid context switch overhead and the latency which we wake >>>>> up vCPU. >>>>> >>>>> This feature is slightly different from current advance expiration >>>>> way. Advance expiration rely on the vCPU is running(do polling before >>>>> vmentry). But in some cases, the timer interrupt may be blocked by >>>>> other thread(i.e., IF bit is clear) and vCPU cannot be scheduled to >>>>> run immediately. So even advance the timer early, vCPU may still see >>>>> the latency. But polling is different, it ensures the vCPU to aware >>>>> the timer expiration before schedule out. >>>>> >>>>> echo HRTICK > /sys/kernel/debug/sched_features in dynticks guests. > > > ^^^^^^^^^^^^^^^^^ > >>>>> >>>>> Context switching - times in microseconds - smaller is better >>>>> ------------------------------------------------------------------------- >>>>> Host OS 2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K >>>>> ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw >>>>> --------- ------------- ------ ------ ------ ------ ------ ------- ------- >>>>> kernel Linux 4.6.0+ 7.9800 11.0 10.8 14.6 9.4300 13.0 10.2 vanilla >>>>> kernel Linux 4.6.0+ 15.3 13.6 10.7 12.5 9.0000 12.8 7.38000 poll >>>> >>>> These results aren't very compelling. Sometimes polling is faster, >>>> sometimes vanilla is faster, sometimes they are about the same. Pin vCPUs get more difference. Context switching - times in microseconds - smaller is better ------------------------------------------------------------------------- Host OS 2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw --------- ------------- ------ ------ ------ ------ ------ ------- ------- kernel Linux 4.6.0+ 11.6 14.0 11.8 53.1 12.5 8.16000 11.4 vanilla kernel Linux 4.6.0+ 45.8 15.1 2.3000 12.9 1.4200 14.6 4.52000 poll Regards, Wanpeng Li