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 1jISnm-0008Cf-I0 for pgsql-hackers@arkaria.postgresql.org; Sun, 29 Mar 2020 07:56:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1jISnl-0006yn-CW for pgsql-hackers@arkaria.postgresql.org; Sun, 29 Mar 2020 07:56:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1jISnl-0006yg-1t for pgsql-hackers@lists.postgresql.org; Sun, 29 Mar 2020 07:56:13 +0000 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jISni-0000VC-SL for pgsql-hackers@postgresql.org; Sun, 29 Mar 2020 07:56:12 +0000 Received: by mail-wm1-x343.google.com with SMTP id b12so16305926wmj.3 for ; Sun, 29 Mar 2020 00:56:10 -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=0OTvKdLymlLgSuncr7hIF81Vm/yC+wa3gRIXm+b9tHo=; b=NZ6wTJsCe2K8o/LZgjPEH16Wtzyb9i5Dy/5SRRIhPg6kyTwTFz70zaXDRxuFaLZqsv HmHrkTBkJGqnk/qwscC5NBMTnPNGI8NUf+MjugYMHtZS9SugVxA1rOU896cPqMXouepC xJXAeIl8PmRvtnvV/j4pA1UL9Sfb5bKWWI1hS7v325I2i5zNEV3uDaMCLmnMpZEVheWh bFjOBW6kZPdJWUkStE9DX0vuvDlg5HTLuYQLyv/Rl8U435SboUgQS2qFrDBRbXrjKDFY IecImeZcqiWNXRJn5r5smJJJPClXy9vPEU4kkRI29YTqt5OfUKmKzmoJsfXNPCqTFmFN upow== 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=0OTvKdLymlLgSuncr7hIF81Vm/yC+wa3gRIXm+b9tHo=; b=WlYgEU4HGGkiOZYwkZ/JFlwx7PzdtLIAKPPbUw/TA7RPs5IctUTz6hTtRmBRmT2nvp GvGclGSqPpBppr9t7fkz2FVZWnwU9jI6LJxsEbrP4bpJJS92sglkajTso3V7Kb57xU1Q P/p80l5RsnMAP7GZQFVNUWm3pazbNLN5pmkMMH2llR/T1VyairvYexrl/KfCUEzICWxY 3OJ3tXqFEIdLMuMpXIBY2bMo13F7pvJOaraNZpd4D1PWoTUz5NZsGqTm8Qwuj2uKAeEZ C+l69mqUN/9JDOXhUgikwGUycEQfGzmdx3fMA7Qa+aVHuOr2lOteAylMvPSqJVO0h26j KPZg== X-Gm-Message-State: ANhLgQ0j6nX76SNPbOAoInSgLgjkt2rnzib7rxlUdVGPDd0ChWShyhrc rODAy3+90eIye9UrthpUGI0= X-Google-Smtp-Source: ADFU+vvuRFlqwZxN/WBE9elPDmWZx9pXvWqfuU/9l9lCl+OQfc5Iu3vhOVu4m8shkwx+480BNqaMWw== X-Received: by 2002:a05:600c:292:: with SMTP id 18mr6991089wmk.3.1585468568968; Sun, 29 Mar 2020 00:56:08 -0700 (PDT) Received: from nol ([2a01:e0a:c:bcf0:dbc8:f7e9:89ae:5cd7]) by smtp.gmail.com with ESMTPSA id r9sm16193160wma.47.2020.03.29.00.56.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 29 Mar 2020 00:56:07 -0700 (PDT) Date: Sun, 29 Mar 2020 09:55:49 +0200 From: Julien Rouhaud To: Amit Kapila Cc: Kirill Bychik , PostgreSQL Hackers , Fujii Masao , Thomas Munro Subject: Re: WAL usage calculation patch Message-ID: <20200329075549.6l54fcjfh73rxufb@nol> References: <20200319153129.GA36079@nol> <762d4ee8-9710-cdcd-e661-b5c79aaa9bf0@oss.nttdata.com> <20200328133827.GA12854@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 Sun, Mar 29, 2020 at 11:03:50AM +0530, Amit Kapila wrote: > On Sat, Mar 28, 2020 at 7:08 PM Julien Rouhaud wrote: > > > > On Sat, Mar 28, 2020 at 04:14:04PM +0530, Amit Kapila wrote: > > > > > > Basically, > > > I don't know changes done in ExecInitParallelPlan and friends allow us > > > to compute WAL for parallel operations. Those will primarily cover > > > parallel queries that won't write WAL. How you have tested those > > > changes? > > > > I didn't tested those, and I'm not even sure how to properly and reliably test > > that. Do you have any advice on how to achieve that? > > > > However the patch is mimicking the buffer instrumentation that already exists, > > and the approach also looks correct to me. Do you have a reason to believe > > that the approach that works for buffer usage wouldn't work for WAL records? (I > > of course agree that this should be tested anyway) > > > > The buffer usage infrastructure is for read-only queries (for ex. for > stats like blks_hit, blks_read). As far as I can think, there is no > easy way to test the WAL usage via that API. It might or might not be > required in the future depending on whether we decide to use the same > infrastructure for parallel writes. I'm not sure that I get your point. I'm assuming that you meant parallel-read-only queries, but surely buffer usage infrastructure for parallel query relies on the same approach as non-parallel one (each node computes the process-local pgBufferUsage diff) and sums all of that at the end of the parallel query execution. I also don't see how whether the query is read-only or not is relevant here as far as instrumentation is concerned, especially since read-only query can definitely do writes and increase the count of dirtied buffers, like a write query would. For instance a hint bit change can be done in a parallel query AFAIK, and this can generate WAL records in wal_log_hints is enabled, so that's probably one way to test it. I now think that not adding support for WAL buffers in EXPLAIN output in the initial patch scope was a mistake, as this is probably the best way to test the WAL counters for parallel queries. This shouldn't be hard to add though, and I can work on it quickly if there's still a chance to get this feature included in pg13. > I think for now we should remove > that part of changes and rather think how to get that for parallel > operations that can write WAL. For ex. we might need to do something > similar to what this patch has done in begin_parallel_vacuum and > end_parallel_vacuum. Would you like to attempt that? Do you mean removing WAL buffers instrumentation from parallel query infrastructure? For parallel utility that can do writes it's probably better to keep the discussion in the other part of the thread. I tried to think a little bit about that, but for now I don't have a better idea than adding something similar to intrumentation for utility command to have a general infrastructure, as building a workaround for specific utility looks like the wrong approach. But this would require quite import changes in utility handling, which is maybe not a good idea a couple of week before the feature freeze, and that is definitely not backpatchable so that won't fix the issue for parallel index build that exists since pg11.