Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp2436797rwd; Fri, 2 Jun 2023 09:21:03 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6cYUbGf1ebYH+M1E2m/DPzV6KJ9ikhWseRpIeZ+K4RvYOyyagKOIQgANp9pB9GQn/n5CwY X-Received: by 2002:a05:6a21:158a:b0:100:ac13:9a57 with SMTP id nr10-20020a056a21158a00b00100ac139a57mr7347281pzb.55.1685722863568; Fri, 02 Jun 2023 09:21:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685722863; cv=none; d=google.com; s=arc-20160816; b=qdYxYcEj8/1vQDkj/4WFk7kDN4+SelgbvKX5aMvApzqqvTj2kk7FdClne19f1jQ0mN 4F4V5P0y9GXU43iZ3FjBJbiAYd8LIrrtBSWMv646fat9KaYXNDRKUT5g2gyi86MmM5YC Sj6t1Q4UzETnP7maFccUvO40ec1YibLnH5wn9Gmcdpn+Snpn/57KZDLAfm6oMxwpCXc1 EdRy2srawkEOFC+Wi6dfe6ncSuSSY+SyY2knvU0Sz81TmNocReAXhD6/0nhlFxABMiGX op1+ypisXJheIC73LCoENCmK6LUucRmWj8wXDDY8dCOY40zr7H63U3C8g6kUdvjjSVgo t7yw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:dkim-signature; bh=U16a7SsqQ7yjyv5J8Y2N4u7Ylkl11H9qatwpuhmZUgo=; b=ZVTzTdRbh0Zs75/gsQIQvFcDnNngnzJODrTnFH98LQoA5GcDlB+qSiP1jG/Ft5Srkn LLQrn33zrfElGDlmC75LyiHor4OupyJc4HE2b4/mklJ+E7hpkzqzrTBLZs/uzFOnSiPM jbqAP3xwK7VvuzQCjQuqX1Mnf2mszVz/ASlg8Pg+/Yvpg/xhGXxTbgwgI0CBZB//FfWF 9w4Ek/ofP+uT3NQi1dc9QHxAYXn13trl9iBL0LeZ3hPOKj1B/gc+MjWl6qlUW5wCa/7Y zo/Mjf+lqkgisBE7ikZ7MIwmgr6YTNmrzUVqlOjFqtzNdZugV6yQyFdqjSIVva1pS72t F35A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=636YoGkh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 27-20020a630e5b000000b005428f77eff7si1043778pgo.854.2023.06.02.09.20.31; Fri, 02 Jun 2023 09:21:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=636YoGkh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236644AbjFBQJd (ORCPT + 99 others); Fri, 2 Jun 2023 12:09:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236561AbjFBQJ2 (ORCPT ); Fri, 2 Jun 2023 12:09:28 -0400 Received: from mail-pj1-x104a.google.com (mail-pj1-x104a.google.com [IPv6:2607:f8b0:4864:20::104a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 50AAD132 for ; Fri, 2 Jun 2023 09:09:26 -0700 (PDT) Received: by mail-pj1-x104a.google.com with SMTP id 98e67ed59e1d1-2566b668cc5so1567374a91.0 for ; Fri, 02 Jun 2023 09:09:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1685722166; x=1688314166; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=U16a7SsqQ7yjyv5J8Y2N4u7Ylkl11H9qatwpuhmZUgo=; b=636YoGkhL1EaD07rsMfPK9rB926Ht76M8pVZszNcRp8cSFBaHFxW4ESJErvKH1m1wQ b8SVVb+49Lm4c7lpuGUxvabzksatMUh3aHtTfXuucGjqsfAbB7x8jB5X+IIkfWd/B+pM hI1Jypk91JlkfEFB2dbGzi8Bjd9QmphZBvbPzeFfXopwyd64oFIEk7hcFeTi49fzsYb0 jMhjapC0h8n44W4QCQ7q/RI4lKIJPywJjobPFbGliUK4+jwpyLj3v9rdAbRrHTavotzv jSbTLKdo3Rd++6WRrKKX3ZluUSmLDy9wL6sxwwb/x/fXUrLPPNX7BCJ2JivFRXiwGY+V XR9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685722166; x=1688314166; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=U16a7SsqQ7yjyv5J8Y2N4u7Ylkl11H9qatwpuhmZUgo=; b=j8TsfQiCqClzJoCwWB0J6H0nT2RL3YDiL48roj3ah1+OPLhSgYfArdzeYpbSCGNRAq LsM65gYyRL5mCKSDnaF8k7CcSb1uJBy8wDMOsiuC0Yx/BJ2lIxQ0Chgr97cyQwjG252t Ubyi99NpXpbkCUZkzSvpTSw8eeWDPhMTQBL6k2+nBRM2d61ex0Cl/ABKnk7DaAUFKcet RjMKYMNlAdr3Qf038gPhYwEYojYLb5LcjtRzyy60kFR3d4e4qFr0qivYuZfUQFIyvhWF Md6N+ruPaSrdDRreIRyks0ib2o8Zhe5omtbN//8ygPpAKKp0gVJH562hDASeYZHUNMwa 35ag== X-Gm-Message-State: AC+VfDz5GVzUhSVwpfw2H3L7kR5UsoBBW3pS7AFqGZZ+A4ugNSoB0U6A 20ReweYnPLmFLWXzrqFvHwKr0Rvy6QTc X-Received: from vipin.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:479f]) (user=vipinsh job=sendgmr) by 2002:a17:90a:de04:b0:24e:18ff:5bad with SMTP id m4-20020a17090ade0400b0024e18ff5badmr42850pjv.0.1685722165847; Fri, 02 Jun 2023 09:09:25 -0700 (PDT) Date: Fri, 2 Jun 2023 09:09:01 -0700 In-Reply-To: <20230602160914.4011728-1-vipinsh@google.com> Mime-Version: 1.0 References: <20230602160914.4011728-1-vipinsh@google.com> X-Mailer: git-send-email 2.41.0.rc0.172.g3f132b7071-goog Message-ID: <20230602160914.4011728-4-vipinsh@google.com> Subject: [PATCH v2 03/16] KVM: selftests: Pass the count of read and write accesses from guest to host From: Vipin Sharma To: maz@kernel.org, oliver.upton@linux.dev, james.morse@arm.com, suzuki.poulose@arm.com, yuzenghui@huawei.com, catalin.marinas@arm.com, will@kernel.org, chenhuacai@kernel.org, aleksandar.qemu.devel@gmail.com, tsbogend@alpha.franken.de, anup@brainfault.org, atishp@atishpatra.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, seanjc@google.com, pbonzini@redhat.com, dmatlack@google.com, ricarkol@google.com Cc: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-mips@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Vipin Sharma Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Pass the number of read and write accesses done in the memstress guest code to userspace. These counts will provide a way to measure vCPUs performance during memstress and dirty logging related tests. For example, in dirty_log_perf_test this can be used to measure how much progress vCPUs are able to do while VMM is getting and clearing dirty logs. In dirty_log_perf_test, each vCPU runs once and then waits until iteration value is incremented by main thread, therefore, these access counts will not provide much useful information except for observing read vs write counts. However, in future commits, dirty_log_perf_test behavior will be changed to allow vCPUs to execute independent of userspace iterations. This will mimic real world workload where guest keeps on executing while VMM is collecting and clearing dirty logs separately. With read and write accesses known for each vCPU, impact of get and clear dirty log APIs can be quantified. Note that access counts will not be 100% reliable in knowing vCPUs performances. Few things which can affect vCPU progress: 1. vCPUs are scheduled less by host 2. Userspace operations run for longer time which end up giving vCPUs more time to execute. Signed-off-by: Vipin Sharma --- tools/testing/selftests/kvm/lib/memstress.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/memstress.c b/tools/testing/selftests/kvm/lib/memstress.c index 5f1d3173c238..ac53cc6e36d7 100644 --- a/tools/testing/selftests/kvm/lib/memstress.c +++ b/tools/testing/selftests/kvm/lib/memstress.c @@ -49,6 +49,8 @@ void memstress_guest_code(uint32_t vcpu_idx) struct memstress_args *args = &memstress_args; struct memstress_vcpu_args *vcpu_args = &args->vcpu_args[vcpu_idx]; struct guest_random_state rand_state; + uint64_t write_access; + uint64_t read_access; uint64_t gva; uint64_t pages; uint64_t addr; @@ -64,6 +66,8 @@ void memstress_guest_code(uint32_t vcpu_idx) GUEST_ASSERT(vcpu_args->vcpu_idx == vcpu_idx); while (true) { + write_access = 0; + read_access = 0; for (i = 0; i < pages; i++) { if (args->random_access) page = guest_random_u32(&rand_state) % pages; @@ -72,13 +76,16 @@ void memstress_guest_code(uint32_t vcpu_idx) addr = gva + (page * args->guest_page_size); - if (guest_random_u32(&rand_state) % 100 < args->write_percent) + if (guest_random_u32(&rand_state) % 100 < args->write_percent) { *(uint64_t *)addr = 0x0123456789ABCDEF; - else + write_access++; + } else { READ_ONCE(*(uint64_t *)addr); + read_access++; + } } - GUEST_SYNC(1); + GUEST_SYNC_ARGS(1, read_access, write_access, 0, 0); } } -- 2.41.0.rc0.172.g3f132b7071-goog