From nobody Sun May 12 21:17:31 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1682589269; cv=none; d=zohomail.com; s=zohoarc; b=GjYRiGKwKgsskl7F1ZoAbrQRgae7l6Uu7A8Rz4/OBprqrGlJdGMBhNb+mTSmFO6HqtWOhqMLqFHcpkzYNBz9U1/6o6+mToWH3usDROxV5oRSFL26lwbG55M6lBI/8IOOKGclFPKawDnElW5Mpq/HhP1KRBe/BvO9llQNnOmfAdA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682589269; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=G+QFx+Aqiw5usmuF3tqscQMneODVq40iixST2DAUc0c=; b=FfC7yndQ+y+C9VZGOM8GkgI+u1yCBjQrg6E25jwmAEqR4SDOVbGlQ2HE5iEgIvznUxdiYbMUyq4Fi1wHRtMWg7yKBGETNg0LezBK1XMxB1pd1XDuCacj/c9WLQ7oZTYYnM7E48bnPKRSLBw8uKM8wxyH7S5QfjUsMPnUeGXwOes= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1682589269452563.369527707873; Thu, 27 Apr 2023 02:54:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pryJA-0004mg-D5; Thu, 27 Apr 2023 05:53:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pryJ8-0004lw-Hn for qemu-devel@nongnu.org; Thu, 27 Apr 2023 05:52:58 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pryJ6-0000GN-Di for qemu-devel@nongnu.org; Thu, 27 Apr 2023 05:52:58 -0400 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-587-yheyZzCKNeC69TvsG_xqDw-1; Thu, 27 Apr 2023 05:52:54 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A19DD811E7C; Thu, 27 Apr 2023 09:52:53 +0000 (UTC) Received: from secure.mitica (unknown [10.39.193.238]) by smtp.corp.redhat.com (Postfix) with ESMTP id 88E4F2166B41; Thu, 27 Apr 2023 09:52:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1682589175; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=G+QFx+Aqiw5usmuF3tqscQMneODVq40iixST2DAUc0c=; b=Ep96USatlt/6RHtDt3oGISriYX1KoHWglqqJer+lWcIhZZTqabfV5EfXG2h8xhW7b9dQCi AnYu6oAUBfibX1JIjModLdzcN1slH169mgsQmAKJYhZqbRXyEfLvjp0MCvi17vAOf51ABZ Nl11tsjuhqAzk2WWIfutoUNviUueinI= X-MC-Unique: yheyZzCKNeC69TvsG_xqDw-1 From: Juan Quintela To: qemu-devel@nongnu.org Cc: Richard Henderson , Peter Xu , Leonardo Bras , Paolo Bonzini , Juan Quintela Subject: [PATCH v6 1/3] stat64: Add stat64_set() operation Date: Thu, 27 Apr 2023 11:52:48 +0200 Message-Id: <20230427095250.22350-2-quintela@redhat.com> In-Reply-To: <20230427095250.22350-1-quintela@redhat.com> References: <20230427095250.22350-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=quintela@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -22 X-Spam_score: -2.3 X-Spam_bar: -- X-Spam_report: (-2.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.171, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1682589269951100007 Content-Type: text/plain; charset="utf-8" From: Paolo Bonzini Signed-off-by: Paolo Bonzini Reviewed-by: Juan Quintela Signed-off-by: Juan Quintela Reviewed-by: Richard Henderson --- include/qemu/stats64.h | 6 ++++++ util/stats64.c | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/include/qemu/stats64.h b/include/qemu/stats64.h index 802402254b..99b5cb724a 100644 --- a/include/qemu/stats64.h +++ b/include/qemu/stats64.h @@ -40,6 +40,11 @@ static inline uint64_t stat64_get(const Stat64 *s) return qatomic_read__nocheck(&s->value); } =20 +static inline void stat64_set(Stat64 *s, uint64_t value) +{ + qatomic_set__nocheck(&s->value, value); +} + static inline void stat64_add(Stat64 *s, uint64_t value) { qatomic_add(&s->value, value); @@ -62,6 +67,7 @@ static inline void stat64_max(Stat64 *s, uint64_t value) } #else uint64_t stat64_get(const Stat64 *s); +void stat64_set(Stat64 *s, uint64_t value); bool stat64_min_slow(Stat64 *s, uint64_t value); bool stat64_max_slow(Stat64 *s, uint64_t value); bool stat64_add32_carry(Stat64 *s, uint32_t low, uint32_t high); diff --git a/util/stats64.c b/util/stats64.c index 897613c949..09736014ec 100644 --- a/util/stats64.c +++ b/util/stats64.c @@ -57,6 +57,17 @@ uint64_t stat64_get(const Stat64 *s) return ((uint64_t)high << 32) | low; } =20 +void stat64_set(Stat64 *s, uint64_t val) +{ + while (!stat64_wrtrylock(s)) { + cpu_relax(); + } + + qatomic_set(&s->high, val >> 32); + qatomic_set(&s->low, val); + stat64_wrunlock(s); +} + bool stat64_add32_carry(Stat64 *s, uint32_t low, uint32_t high) { uint32_t old; --=20 2.40.0 From nobody Sun May 12 21:17:31 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1682589245; cv=none; d=zohomail.com; s=zohoarc; b=hYDOVtB+i8MrPbDUxwkFT8/83kxtQDbmoKu+oAo5IoBDj7XeZxSvjRP3PliYtBHTxenGgiWMGST35z98diVvFVAcWge43UO9PWReL8tYT7GmnQ/wq8WKc6zlZxiJ/nFfU0yiZYX0Bk/XMYcjENhih+nSgkjmwOAiLv9u8+YkH6A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682589245; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0Qt324kHrKSLaQhSULUsRh7AlhSyDC/2OJ0zwyozXPs=; b=WmHe0Zivdu3DboQdMO4R6IyxkwIqNeis596mQiBxaBWiXXjvKLD5hO1Ct1cdWMcnyJejSGXAuctpilQzxcc0llRP4WnVf2O188eF2ij73aXAB2TowK7XoUBNsHKAMHlUjtPF+ULzCl6UjZlXKvgWlbJ7UVtCx//bOtniwOuumzM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1682589245584967.4252987175631; Thu, 27 Apr 2023 02:54:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pryJB-0004nC-Lr; Thu, 27 Apr 2023 05:53:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pryJ9-0004mI-OZ for qemu-devel@nongnu.org; Thu, 27 Apr 2023 05:52:59 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pryJ8-0000Ga-08 for qemu-devel@nongnu.org; Thu, 27 Apr 2023 05:52:59 -0400 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-76-gYGmBEvJNsW1BJX0bFXeGg-1; Thu, 27 Apr 2023 05:52:55 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 05EED2806041; Thu, 27 Apr 2023 09:52:55 +0000 (UTC) Received: from secure.mitica (unknown [10.39.193.238]) by smtp.corp.redhat.com (Postfix) with ESMTP id E79DE2166B41; Thu, 27 Apr 2023 09:52:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1682589176; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0Qt324kHrKSLaQhSULUsRh7AlhSyDC/2OJ0zwyozXPs=; b=UmVBKI8e+5t/27khUuLBCFM7Y/01MxpYHYw6Vyh3B+WlgpK5gSNQ7ykXfz4CEy223PbV18 sEb00ECoQEcBQ1kRtegzxZ7FJRYeyTpMCcuUPZhXW7qqZ8fb2aIlVlZZYIs9knsarRY/jQ 0REWxbjR2eOdfh44Vu64M1WeDOSE5RI= X-MC-Unique: gYGmBEvJNsW1BJX0bFXeGg-1 From: Juan Quintela To: qemu-devel@nongnu.org Cc: Richard Henderson , Peter Xu , Leonardo Bras , Paolo Bonzini , Juan Quintela Subject: [PATCH v6 2/3] migration: Make dirty_pages_rate atomic Date: Thu, 27 Apr 2023 11:52:49 +0200 Message-Id: <20230427095250.22350-3-quintela@redhat.com> In-Reply-To: <20230427095250.22350-1-quintela@redhat.com> References: <20230427095250.22350-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=quintela@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -22 X-Spam_score: -2.3 X-Spam_bar: -- X-Spam_report: (-2.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.171, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1682589246773100005 Content-Type: text/plain; charset="utf-8" Signed-off-by: Juan Quintela Reviewed-by: Peter Xu Reviewed-by: Richard Henderson --- Don't use __nocheck() variants Use stat64_get() --- migration/migration.c | 6 ++++-- migration/ram.c | 5 +++-- migration/ram.h | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 22e8586623..900dfb6855 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1005,7 +1005,8 @@ static void populate_ram_info(MigrationInfo *info, Mi= grationState *s) =20 if (s->state !=3D MIGRATION_STATUS_COMPLETED) { info->ram->remaining =3D ram_bytes_remaining(); - info->ram->dirty_pages_rate =3D ram_counters.dirty_pages_rate; + info->ram->dirty_pages_rate =3D + stat64_get(&ram_counters.dirty_pages_rate); } } =20 @@ -2751,7 +2752,8 @@ static void migration_update_counters(MigrationState = *s, * if we haven't sent anything, we don't want to * recalculate. 10000 is a small enough number for our purposes */ - if (ram_counters.dirty_pages_rate && transferred > 10000) { + if (stat64_get(&ram_counters.dirty_pages_rate) && + transferred > 10000) { s->expected_downtime =3D ram_counters.remaining / bandwidth; } =20 diff --git a/migration/ram.c b/migration/ram.c index 01356f60a4..fa94c99766 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -1129,8 +1129,9 @@ static void migration_update_rates(RAMState *rs, int6= 4_t end_time) double compressed_size; =20 /* calculate period counters */ - ram_counters.dirty_pages_rate =3D rs->num_dirty_pages_period * 1000 - / (end_time - rs->time_last_bitmap_sync); + stat64_set(&ram_counters.dirty_pages_rate, + rs->num_dirty_pages_period * 1000 / + (end_time - rs->time_last_bitmap_sync)); =20 if (!page_count) { return; diff --git a/migration/ram.h b/migration/ram.h index a6e0d70226..f189cc79f8 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -41,7 +41,7 @@ * one thread). */ typedef struct { - int64_t dirty_pages_rate; + Stat64 dirty_pages_rate; Stat64 dirty_sync_count; Stat64 dirty_sync_missed_zero_copy; Stat64 downtime_bytes; --=20 2.40.0 From nobody Sun May 12 21:17:31 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1682589245; cv=none; d=zohomail.com; s=zohoarc; b=NjNW38GbMizde9bIUO2R6Ml0WpilW5x2MQOaau5pX2PPW9dTiH/bmFSn+VzB6JPDqMbthyALOJ4W40XPU+MdU3TMRQtEZRyG6cJSAJ6EuenUHaJ9Y37hZzYuwrrgSpjqyQzSTSkU7L7drft60BXms06WFXZUc0V7JjjWRRpcuoQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682589245; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=mVaAGkd90v4uDbu+kLsSb8DWnudH2FhKxKrBsvhqo6A=; b=VSv2eXpEGWJEDD7T8X2ERxbSb4wTG0bnpGPrfber0lEKYSPGIInwmfp6aceOssH8sYIykcXmgmGveWEw4yYVIkrPXoyR6lf+rwNj5RvCB69tbZR9ScWLP8gEhG8oxX5aPV4qw0pJIVFZiZABNvIxSqAiARPIffUMuKp8x6JHtZ8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 168258924585291.61238188108268; Thu, 27 Apr 2023 02:54:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pryJE-0004nb-9T; Thu, 27 Apr 2023 05:53:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pryJC-0004nF-Vc for qemu-devel@nongnu.org; Thu, 27 Apr 2023 05:53:02 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pryJB-0000HY-GE for qemu-devel@nongnu.org; Thu, 27 Apr 2023 05:53:02 -0400 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-649-roNPYZRbPOiE5Etaj4zlTg-1; Thu, 27 Apr 2023 05:52:56 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7B0BDA0F387; Thu, 27 Apr 2023 09:52:56 +0000 (UTC) Received: from secure.mitica (unknown [10.39.193.238]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4A33A2166B41; Thu, 27 Apr 2023 09:52:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1682589180; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mVaAGkd90v4uDbu+kLsSb8DWnudH2FhKxKrBsvhqo6A=; b=C72rvIdu6EgG3F7jh3fseOaHEZvrjwljB065gsYZUCS3Rl4oWVIiKstDDlI3xjH8wZUSe9 o76LgbTIJrjxhaGjtV4GuAuNCyLErL6mQuixYNm5YEGVBz3c1wfHRIxKzr/WIYkygdIHDg CLjqJpzfXikfGZD48y8rmBJE6t6Os6U= X-MC-Unique: roNPYZRbPOiE5Etaj4zlTg-1 From: Juan Quintela To: qemu-devel@nongnu.org Cc: Richard Henderson , Peter Xu , Leonardo Bras , Paolo Bonzini , Juan Quintela Subject: [PATCH v6 3/3] migration: Make dirty_bytes_last_sync atomic Date: Thu, 27 Apr 2023 11:52:50 +0200 Message-Id: <20230427095250.22350-4-quintela@redhat.com> In-Reply-To: <20230427095250.22350-1-quintela@redhat.com> References: <20230427095250.22350-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=quintela@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -22 X-Spam_score: -2.3 X-Spam_bar: -- X-Spam_report: (-2.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.171, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1682589247991100007 Content-Type: text/plain; charset="utf-8" As we set its value, it needs to be operated with atomics. We rename it from remaining to better reflect its meaning. Statistics always return the real reamaining bytes. This was used to store how much pages where dirty on the previous generation, so we can calculate the expected downtime as: dirty_bytes_last_sync / current_bandwith. If we use the actual remaining bytes, we would see a very small value at the end of the iteration. Signed-off-by: Juan Quintela Reviewed-by: Peter Xu Reviewed-by: Richard Henderson --- I am open to use ram_bytes_remaining() in its only use and be more "optimistic" about the downtime. Don't use __nocheck() functions. Use stat64_get() now that it exists. --- migration/migration.c | 3 ++- migration/ram.c | 2 +- migration/ram.h | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 900dfb6855..cc09a88aac 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2754,7 +2754,8 @@ static void migration_update_counters(MigrationState = *s, */ if (stat64_get(&ram_counters.dirty_pages_rate) && transferred > 10000) { - s->expected_downtime =3D ram_counters.remaining / bandwidth; + s->expected_downtime =3D + stat64_get(&ram_counters.dirty_bytes_last_sync) / bandwidth; } =20 qemu_file_reset_rate_limit(s->to_dst_file); diff --git a/migration/ram.c b/migration/ram.c index fa94c99766..fcdcf78ec7 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -1223,7 +1223,7 @@ static void migration_bitmap_sync(RAMState *rs) RAMBLOCK_FOREACH_NOT_IGNORED(block) { ramblock_sync_dirty_bitmap(rs, block); } - ram_counters.remaining =3D ram_bytes_remaining(); + stat64_set(&ram_counters.dirty_bytes_last_sync, ram_bytes_remainin= g()); } qemu_mutex_unlock(&rs->bitmap_mutex); =20 diff --git a/migration/ram.h b/migration/ram.h index f189cc79f8..04b05e1b2c 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -41,6 +41,7 @@ * one thread). */ typedef struct { + Stat64 dirty_bytes_last_sync; Stat64 dirty_pages_rate; Stat64 dirty_sync_count; Stat64 dirty_sync_missed_zero_copy; @@ -51,7 +52,6 @@ typedef struct { Stat64 postcopy_bytes; Stat64 postcopy_requests; Stat64 precopy_bytes; - int64_t remaining; Stat64 transferred; } RAMStats; =20 --=20 2.40.0