Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.92) (envelope-from ) id 1jEIt8-0002wQ-IV for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2020 20:32:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1jEIt6-00007B-A4 for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2020 20:32:32 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1jEIt5-000074-Qe for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2020 20:32:32 +0000 Received: from mail-lf1-x141.google.com ([2a00:1450:4864:20::141]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jEIt3-0006PI-AX for pgsql-hackers@postgresql.org; Tue, 17 Mar 2020 20:32:30 +0000 Received: by mail-lf1-x141.google.com with SMTP id y2so3634327lfe.11 for ; Tue, 17 Mar 2020 13:32:29 -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=a/dAqIbAVPI0G092x7zA71U/LdPo2DpOD6Bmayr8yd8=; b=VAMTAT6bc6MccfixdE+a0CoKSEwo6DwpJHkA6Vu7DYbdk8I+ZMzjtr43nahvmkDovx yP1oFJiT1anKpfQqPXaFwnIeAs9pPXzJAz4EYSDRQ9WEs0tb3qRC8BGgRTg5r24h/DkD fFfjzs624AJF5DrG1cBbbMDQjQW+iIxfi1rSaFx+/L/u+n3tpbUWebgaE89ca9NlDULs xFoDJKxjRk6LdSzAH9iu9BaHaRCwuevWrcYhoCcvoKlh2ryPsDRuS15XyIGkEXVfmk/J MIHPJ84d87bjbdl+yOXlcWhkWNFMG1132LeSVRNp82nAE6i3nDlFj4+nSQ/TvvJQLYkS o3rw== 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=a/dAqIbAVPI0G092x7zA71U/LdPo2DpOD6Bmayr8yd8=; b=Uy8iyrF+LCGtIv/c2g36DO4oEE1KEiedjjnPvM/f3ISpPJN3prnT+dNYJtws9YZla2 nvdrrv3AOBv7GDinFVR7eitNHso7xFjWR/vTyTjXO2mrPPAyIghHkofZ5KklK0BB+DSy F23RscCfroyJqLxZKOAgaaJn5swwWqtdw06pqcdreU6wQcZxL6+aCnide1t3BlXir0bi 2hbp9LEqT+pVOl3RGXsBpbkJes5PRvwmfEbPOlKDwH+sXsbX2NEMQP2eGE2AZEPhOPKl T+5ESr0BHxK3sxzt5euBiwwsxKLWQr/sBGNEqkySp2BmIx/a8j8L6CE/0FQPb5412ffb 2nZg== X-Gm-Message-State: ANhLgQ3xrxNgfmkEPPc1JlSfMjmy8Dam4A1dnUxbv3JBqMstaJPqbQ08 YJHMXx1fpNnJoonnjhCmLdk= X-Google-Smtp-Source: ADFU+vvAl4vMJuDMuL8A39bBVUc0BQlRKrD9DevuJZuAvF9O0czvZeNW4RPxsVB3NQskMp4jB5Au1g== X-Received: by 2002:a19:7502:: with SMTP id y2mr721236lfe.182.1584477147478; Tue, 17 Mar 2020 13:32:27 -0700 (PDT) Received: from nol (82-64-124-11.subs.proxad.net. [82.64.124.11]) by smtp.gmail.com with ESMTPSA id x14sm3086924ljh.33.2020.03.17.13.32.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Mar 2020 13:32:26 -0700 (PDT) Date: Tue, 17 Mar 2020 21:32:22 +0100 From: Julien Rouhaud To: Kirill Bychik Cc: PostgreSQL Hackers , Thomas Munro Subject: Re: WAL usage calculation patch Message-ID: <20200317203222.GA44781@nol> References: <20200304160225.GA26982@nol> <20200317153136.GA63950@nol> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On Tue, Mar 17, 2020 at 10:27:05PM +0300, Kirill Bychik wrote: > > > Please feel free to work on any extension of this patch idea. I lack > > > both time and knowledge to do it all by myself. > > > > I'm adding a 3rd patch on top of yours to expose the new WAL counters in > > pg_stat_database, for vacuum and autovacuum. I'm not really enthiusiastic with > > this approach but I didn't find better, and maybe this will raise some better > > ideas. The only sure thing is that we're not going to add a bunch of new > > fields in pg_stat_all_tables anyway. > > > > We can also drop this 3rd patch entirely if no one's happy about it without > > impacting the first two. > > No objections about 3rd on my side, unless we miss the CF completely. > > As for the code, I believe: > + walusage.wal_records = pgWalUsage.wal_records - > + walusage_start.wal_records; > + walusage.wal_fp_records = pgWalUsage.wal_fp_records - > + walusage_start.wal_fp_records; > + walusage.wal_bytes = pgWalUsage.wal_bytes - walusage_start.wal_bytes; > > Could be done much simpler via the utility: > WalUsageAccumDiff(walusage, pgWalUsage, walusage_start); Indeed, but this function is private to instrument.c. AFAICT pg_stat_statements is already duplicating similar code for buffers rather than having BufferUsageAccumDiff being exported, so I chose the same approach. I'd be in favor of exporting both functions though. > On a side note, I agree API to the buf/wal usage is far from perfect. Yes clearly. > > > Test had been reworked, and I believe it should be stable now, the > > > part which checks WAL is written and there is a correlation between > > > affected rows and WAL records. I still have no idea how to test > > > full-page writes against regular updates, it seems very unstable. > > > Please share ideas if any. > > > > > > I just reviewed the patches, and it globally looks good to me. The way to > > detect full page images looks sensible, but I'm really not familiar with that > > code so additional review would be useful. > > > > I noticed that the new wal_write_fp_records field in pg_stat_statements wasn't > > used in the test. Since I have to add all the patches to make the cfbot happy, > > I slightly adapted the tests to reference the fp column too. There was also a > > minor issue in the documentation, as wal_records and wal_bytes were copy/pasted > > twice while wal_write_fp_records wasn't documented, so I also changed it. > > > > Let me know if you're ok with those changes. > > Sorry for not getting wal_fp_usage into the docs, my fault. > > As for the tests, please get somebody else to review this. I strongly > believe checking full page writes here could be a source of > instability. I'm also a little bit dubious about it. The initial checkpoint should make things stable (of course unless full_page_writes is disabled), and Cfbot also seems happy about it. At least keeping it for the temporary tables test shouldn't be a problem.