Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jLO8X-0003DY-K1 for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2020 09:33:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jLO8W-0003O1-5G for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2020 09:33:44 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jLO8V-0003Mr-Qb for pgsql-hackers@lists.postgresql.org; Mon, 06 Apr 2020 09:33:43 +0000 Received: from mail-lj1-x243.google.com ([2a00:1450:4864:20::243]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jLO8T-0006O9-M5 for pgsql-hackers@postgresql.org; Mon, 06 Apr 2020 09:33:42 +0000 Received: by mail-lj1-x243.google.com with SMTP id r24so13880818ljd.4 for ; Mon, 06 Apr 2020 02:33:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=InJN7vNgiCGWDiznlgmlE49cAavSgTWA4AydSpUnxk8=; b=E4GFE6+VmrypON9xQiXO8GZJCZD1e0917JJ7iE1/XEvDGkEYT/5H8QtcpZzuhDqPb3 GAvmeR261eY9sU4FWEw8ZLmb9PfRHAY31bZEGZhaW6br07RV2x/tK5tHT/ENMGzAkHj2 V7hkjEHh/ouYMZgzdHdhpWtpNOdPyEA6i3vDrt1az4cyBs+iT4HgcB3xpiZfFksIqoJp Ea+wZFZPRwbBUvX3/lLsDyX7KFVqloI/+KWcWFrk5utWFejpuE9EriWA1wVA+od6ALOS OxIRpgyFimdGHzbh3+Yk1mhZPHHDXyJ4Vtebmf2H9wKq+19J46hBhh+gxYkJiLU1w/zw qTow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=InJN7vNgiCGWDiznlgmlE49cAavSgTWA4AydSpUnxk8=; b=bVVipCY2SoMCd5RuLQQ/s8A2+68xrMwuhIbn0fXBXRpvkfz9/JBXyIyGAbYNGm2AkB KLDlgyJAtmitXrxsk1+tqJugsYj8YI0TDbyFWk18i7Y/uJ9KlcCM/NB0PKSNmAYWoBIe ekCx/YA9RRHXA8fWWAjdzqGRtjsPL80lJqkfOsXq9DL13VktuzAgLrK2xG6Z8oKrth1S XGKXzgbndHXcYqVJ9hLKPRw7uL98xrC/QiOrYxWlTwbf9vAyjFq76a48K8be/drtOata iyNcbW+hgoVEEJ/q656YKDzZP+pzIwGb5BAGFRF7PPoQpz9Db0j87P3AjjryBdUeVx9x 513g== X-Gm-Message-State: AGi0PuY+hwuXwZP0iYYtjPAYNrEsuv13OgEfG5TigHGPcaIbgWvFbalz fdsxpr1YyfWlnuSfi9VazUs= X-Google-Smtp-Source: APiQypJsM5Z9s2HrGy9J9K8XV6oDm2SNoSvWNH6uTTFpKQ016yoqmtOhAhBHy5pujLORtetkXZTJNg== X-Received: by 2002:a2e:9718:: with SMTP id r24mr10930560lji.287.1586165619053; Mon, 06 Apr 2020 02:33:39 -0700 (PDT) Received: from nol (82-64-124-11.subs.proxad.net. [82.64.124.11]) by smtp.gmail.com with ESMTPSA id l7sm11653705lfg.79.2020.04.06.02.33.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Apr 2020 02:33:38 -0700 (PDT) Date: Mon, 6 Apr 2020 11:33:34 +0200 From: Julien Rouhaud To: Amit Kapila Cc: Dilip Kumar , Kuntal Ghosh , Fujii Masao , Kirill Bychik , PostgreSQL Hackers , Thomas Munro Subject: Re: WAL usage calculation patch Message-ID: <20200406093334.GJ1206@nol> References: <20200404060303.n2q74lbccjm2swdc@nol> <20200404085423.GC1206@nol> <20200404092015.GE1206@nol> <20200406082307.GI1206@nol> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="lkTb+7nhmha7W+c3" Content-Disposition: inline In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --lkTb+7nhmha7W+c3 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Mon, Apr 06, 2020 at 02:34:36PM +0530, Amit Kapila wrote: > On Mon, Apr 6, 2020 at 1:53 PM Julien Rouhaud wrote: > > > > On Mon, Apr 06, 2020 at 08:55:01AM +0530, Amit Kapila wrote: > > > > > > Here, we are not displaying Buffers related data, so why do we think > > > it is important to display WAL data? I see some point in displaying > > > Buffers and WAL data in a vacuum (verbose), but I feel it is better to > > > make a case for both the statistics together rather than just > > > displaying one and leaving other. I think the other change related to > > > autovacuum stats seems okay to me. > > > > One thing is that the amount of WAL, and more precisely FPW, is quite > > unpredictable wrt. vacuum and even more anti-wraparound vacuum, so this is IMHO > > a very useful metric. > > > > I agree but we already have a way via pg_stat_statements to find it if > the metric is so useful. > Agreed. > > > That being said I totally agree with you that both > > should be displayed. Should I send a patch to also expose it? > > > > I think this should be a separate proposal. Let's not add things > unless they are really essential. We can separately discuss of > enhancing vacuum verbose for Buffer and WAL usage stats and see if > others also find that information useful. I think you can send a > patch by removing the code I mentioned above if you agree. Thanks for > working on this. Thanks! v15 attached. --lkTb+7nhmha7W+c3 Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="v15-0001-Expose-WAL-usage-counters-in-verbose-auto-vacuum.patch" From 9f4cbb1817372628a3fc7b3fffe82ec2a3942f91 Mon Sep 17 00:00:00 2001 From: Julien Rouhaud Date: Thu, 19 Mar 2020 16:08:47 +0100 Subject: [PATCH v15] Expose WAL usage counters in verbose (auto)vacuum output. Author: Julien Rouhaud Reviewed-by: Fuji Masao, Amit Kapila, Dilip Kumar Discussion: https://postgr.es/m/CAB-hujrP8ZfUkvL5OYETipQwA=e3n7oqHFU=4ZLxWS_Cza3kQQ@mail.gmail.com --- src/backend/access/heap/vacuumlazy.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c index 3ca7f5d136..877512fae4 100644 --- a/src/backend/access/heap/vacuumlazy.c +++ b/src/backend/access/heap/vacuumlazy.c @@ -410,6 +410,8 @@ heap_vacuum_rel(Relation onerel, VacuumParams *params, int nindexes; PGRUsage ru0; TimestampTz starttime = 0; + WalUsage walusage_start = pgWalUsage; + WalUsage walusage = {0, 0, 0}; long secs; int usecs; double read_rate, @@ -614,6 +616,9 @@ heap_vacuum_rel(Relation onerel, VacuumParams *params, TimestampDifference(starttime, endtime, &secs, &usecs); + memset(&walusage, 0, sizeof(WalUsage)); + WalUsageAccumDiff(&walusage, &pgWalUsage, &walusage_start); + read_rate = 0; write_rate = 0; if ((secs > 0) || (usecs > 0)) @@ -666,7 +671,13 @@ heap_vacuum_rel(Relation onerel, VacuumParams *params, (long long) VacuumPageDirty); appendStringInfo(&buf, _("avg read rate: %.3f MB/s, avg write rate: %.3f MB/s\n"), read_rate, write_rate); - appendStringInfo(&buf, _("system usage: %s"), pg_rusage_show(&ru0)); + appendStringInfo(&buf, _("system usage: %s\n"), pg_rusage_show(&ru0)); + appendStringInfo(&buf, + _("WAL usage: %ld records, %ld full page writes, " + UINT64_FORMAT " bytes"), + walusage.wal_records, + walusage.wal_num_fpw, + walusage.wal_bytes); ereport(LOG, (errmsg_internal("%s", buf.data))); @@ -1727,6 +1738,7 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats, "%u pages are entirely empty.\n", empty_pages), empty_pages); + appendStringInfo(&buf, _("%s."), pg_rusage_show(&ru0)); ereport(elevel, -- 2.20.1 --lkTb+7nhmha7W+c3--