Allow autovacuum to log WAL usage statistics.
authorAmit Kapila <[email protected]>
Mon, 6 Apr 2020 10:54:51 +0000 (16:24 +0530)
committerAmit Kapila <[email protected]>
Mon, 6 Apr 2020 10:54:51 +0000 (16:24 +0530)
This commit allows autovacuum to log WAL usage statistics added by commit
df3b181499.

Author: Julien Rouhaud
Reviewed-by: Dilip Kumar and Amit Kapila
Discussion: https://postgr.es/m/CAB-hujrP8ZfUkvL5OYETipQwA=e3n7oqHFU=4ZLxWS_Cza3kQQ@mail.gmail.com

src/backend/access/heap/vacuumlazy.c

index 3ca7f5d136428787e12c20a94296631bc7b84d85..f3382d37a406e10cc5a0e096f66b8480ed96539e 100644 (file)
@@ -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)));