From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christian Borntraeger Subject: Re: [PATCH v2] arm/arm64: KVM: Properly account for guest CPU time Date: Mon, 01 Jun 2015 15:37:32 +0200 Message-ID: <556C601C.4000501@de.ibm.com> References: <1432838950-28774-1-git-send-email-christoffer.dall@linaro.org> <556C0E22.9090401@de.ibm.com> <20150601090817.GA18722@cbox> <556C240F.5070501@de.ibm.com> <20150601133558.GA20286@cbox> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Cc: kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Marc Zyngier , Paolo Bonzini To: Christoffer Dall Return-path: Received: from e06smtp12.uk.ibm.com ([195.75.94.108]:54386 "EHLO e06smtp12.uk.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752844AbbFANhi (ORCPT ); Mon, 1 Jun 2015 09:37:38 -0400 Received: from /spool/local by e06smtp12.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 1 Jun 2015 14:37:36 +0100 Received: from b06cxnps3074.portsmouth.uk.ibm.com (d06relay09.portsmouth.uk.ibm.com [9.149.109.194]) by d06dlp03.portsmouth.uk.ibm.com (Postfix) with ESMTP id 328741B08074 for ; Mon, 1 Jun 2015 14:38:28 +0100 (BST) Received: from d06av06.portsmouth.uk.ibm.com (d06av06.portsmouth.uk.ibm.com [9.149.37.217]) by b06cxnps3074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id t51DbYbM22085716 for ; Mon, 1 Jun 2015 13:37:34 GMT Received: from d06av06.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av06.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id t518V8hg025712 for ; Mon, 1 Jun 2015 04:31:09 -0400 In-Reply-To: <20150601133558.GA20286@cbox> Sender: kvm-owner@vger.kernel.org List-ID: Am 01.06.2015 um 15:35 schrieb Christoffer Dall: > On Mon, Jun 01, 2015 at 11:21:19AM +0200, Christian Borntraeger wrote: >> Am 01.06.2015 um 11:08 schrieb Christoffer Dall: >> >>>>> >>>>> Second, looking at the ppc and mips code, they seem to also call >>>>> kvm_guest_exit() before enabling interrupts, so I don't understand how >>>>> guest CPU time accounting works on those architectures. >>>> >>>> Not an expert here, but I assume mips has the same logic as arm so if your >>>> patch is right for arm its probably also for mips. >>>> >>>> powerpc looks similar to what s390 does (not using the tick, instead it uses >>>> a hw-timer) so this should be fine. >>>> >>> I wonder if we can simply enable HAVE_VIRT_CPU_ACCOUNTING_GEN and get >>> this for free which would avoid the need for this patch? >> >> Asssuming that HAVE_VIRT_CPU_ACCOUNTING_GEN behaves similar to >> HAVE_VIRT_CPU_ACCOUNTING on s390/power in respect to not rely on ticks >> - yes it might work out. Can you give it a try? >> > Adding HAVE_VIRT_CPU_ACCOUNTING_GEN to arch/arm64/Kconfig works, but has > no effect unless you also enable CONFIG_NO_HZ_FULL, so that hardly feels > like a fix since it would be a shame to force users to use this config > option to report CPU usage correctly. > > I'm not entirely sure what the history and meaning behind these configs > are, so maybe there is an entirely different rework needed here. It > seems logical that you could simply sample the counter at entry/exit of > the guest, but if there is nowhere to store this data without > NO_HZ_FULL+VIRT_CPU_ACCOUNTING_GEN then I guess that would be why? Given Paolos response that irq_disable/enable is faster than save/restore at least on x86 your v2 patch might actually be the right thing to do. Christian From mboxrd@z Thu Jan 1 00:00:00 1970 From: borntraeger@de.ibm.com (Christian Borntraeger) Date: Mon, 01 Jun 2015 15:37:32 +0200 Subject: [PATCH v2] arm/arm64: KVM: Properly account for guest CPU time In-Reply-To: <20150601133558.GA20286@cbox> References: <1432838950-28774-1-git-send-email-christoffer.dall@linaro.org> <556C0E22.9090401@de.ibm.com> <20150601090817.GA18722@cbox> <556C240F.5070501@de.ibm.com> <20150601133558.GA20286@cbox> Message-ID: <556C601C.4000501@de.ibm.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Am 01.06.2015 um 15:35 schrieb Christoffer Dall: > On Mon, Jun 01, 2015 at 11:21:19AM +0200, Christian Borntraeger wrote: >> Am 01.06.2015 um 11:08 schrieb Christoffer Dall: >> >>>>> >>>>> Second, looking at the ppc and mips code, they seem to also call >>>>> kvm_guest_exit() before enabling interrupts, so I don't understand how >>>>> guest CPU time accounting works on those architectures. >>>> >>>> Not an expert here, but I assume mips has the same logic as arm so if your >>>> patch is right for arm its probably also for mips. >>>> >>>> powerpc looks similar to what s390 does (not using the tick, instead it uses >>>> a hw-timer) so this should be fine. >>>> >>> I wonder if we can simply enable HAVE_VIRT_CPU_ACCOUNTING_GEN and get >>> this for free which would avoid the need for this patch? >> >> Asssuming that HAVE_VIRT_CPU_ACCOUNTING_GEN behaves similar to >> HAVE_VIRT_CPU_ACCOUNTING on s390/power in respect to not rely on ticks >> - yes it might work out. Can you give it a try? >> > Adding HAVE_VIRT_CPU_ACCOUNTING_GEN to arch/arm64/Kconfig works, but has > no effect unless you also enable CONFIG_NO_HZ_FULL, so that hardly feels > like a fix since it would be a shame to force users to use this config > option to report CPU usage correctly. > > I'm not entirely sure what the history and meaning behind these configs > are, so maybe there is an entirely different rework needed here. It > seems logical that you could simply sample the counter at entry/exit of > the guest, but if there is nowhere to store this data without > NO_HZ_FULL+VIRT_CPU_ACCOUNTING_GEN then I guess that would be why? Given Paolos response that irq_disable/enable is faster than save/restore at least on x86 your v2 patch might actually be the right thing to do. Christian