From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751876AbcF0OQo (ORCPT ); Mon, 27 Jun 2016 10:16:44 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:34389 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751634AbcF0OQn (ORCPT ); Mon, 27 Jun 2016 10:16:43 -0400 Subject: Re: [PATCH v2 0/2] pvclock: more code cleanup To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org References: <1465994811-55091-1-git-send-email-pbonzini@redhat.com> Cc: Andy Lutomirski , Ingo Molnar , x86@kernel.org, Minfei Huang From: Paolo Bonzini Message-ID: Date: Mon, 27 Jun 2016 16:16:34 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 MIME-Version: 1.0 In-Reply-To: <1465994811-55091-1-git-send-email-pbonzini@redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 15/06/2016 14:46, Paolo Bonzini wrote: > Patch 1 simplifies the pvclock.h API by moving seqcount logic into > two new functions pvclock_read_begin and pvclock_read_retry. > Patch 2 uses the new simplified API in the vDSO. Andy, I've now benchmarked the patches. Patch 2 introduces no meaningful difference, however patch 1 makes clock_gettime slower by about 3%. I can get this back with: diff --git a/arch/x86/include/asm/pvclock.h b/arch/x86/include/asm/pvclock.h index 0ee92db1e9f3..d019f0cc80ec 100644 --- a/arch/x86/include/asm/pvclock.h +++ b/arch/x86/include/asm/pvclock.h @@ -40,7 +40,7 @@ bool pvclock_read_retry(const struct pvclock_vcpu_time_info *src, { /* Make sure that the version is re-read after the data. */ virt_rmb(); - return version != src->version; + return unlikely(version != src->version); } /* ... which for whatever reason makes GCC inline more aggressively. I'm going to send v3. Paolo > Paolo > > Paolo Bonzini (2): > pvclock: introduce seqcount-like API > x86: vdso: use __pvclock_read_cycles > > arch/x86/entry/vdso/vclock_gettime.c | 25 +++++------------------ > arch/x86/include/asm/pvclock.h | 39 +++++++++++++++++++++--------------- > arch/x86/kernel/pvclock.c | 17 ++++++---------- > 3 files changed, 34 insertions(+), 47 deletions(-) >