Re: Reducing power consumption on idle servers
Kyotaro Horiguchi <horikyota.ntt@gmail.com>
From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
To: andres@anarazel.de
Cc: simon.riggs@enterprisedb.com, zhengli10@gmail.com, nasbyj@amazon.com,
thomas.munro@gmail.com, tgl@sss.pgh.pa.us, pgsql-hackers@postgresql.org
Date: 2022-03-24T07:16:43Z
Lists: pgsql-hackers
At Thu, 10 Mar 2022 11:45:10 -0800, Andres Freund <andres@anarazel.de> wrote in > Hi, > > On 2022-03-10 17:50:47 +0000, Simon Riggs wrote: > > On Wed, 9 Mar 2022 at 01:16, Zheng Li <zhengli10@gmail.com> wrote: > > > > > > 1. Standardize the hibernation time at 60s, using a #define > > > > HIBERNATE_DELAY_SEC 60 > > > > > > I notice in patch 3 HIBERNATE_DELAY_SEC has been increased to 300 > > > seconds, what’s the reasoning behind it? Is longer hibernation delay > > > better? If so can we set it to INT_MAX (the max timeout allowed by > > > WaitLatch()) in which case a worker in hibernation only relies on > > > wakeup? I think it would be nice to run experiments to verify that the > > > patch reduces power consumption while varying the value of > > > HIBERNATE_DELAY_SEC. > > > > Setting it to INT_MAX would be the same as not allowing a timeout, > > which changes a lot of current behavior and makes it less robust. > > Most of these timeouts are a bad idea and should not exist. We repeatedly have > had bugs where we were missing wakeups etc but those bugs were harder to I basically agree to this. > notice because of timeouts. I'm against entrenching this stuff further. For example, pgarch.c theoretically doesn't need hibernate, since it has an apparent trigger event and a terminal condition. What we need to do about archiver is to set timeout only when it didn't reach the lastest finished segment at an iteration. (this might need additional shared memory use, though..) I'm not sure about bgwriter, walwriter and logical replication stuff... About walreciver, - if ((now - startTime) > WALRCV_STARTUP_TIMEOUT) + if ((now - startTime) > wal_receiver_timeout) This is simply a misuse of the timeout. WALRCV_STARTP_TIMEOUT is not used for a sleep and irrelevant to receiving data from the peer walsender. wal_receiver_timeout's default is 60s but we don't assume that walreceiver takes that long time to start up. (I think Thomas is wroking on the walreceiver timeout stuff.) regards. -- Kyotaro Horiguchi NTT Open Source Software Center
Commits
-
Remove promote_trigger_file.
- cd4329d9393f 16.0 landed
-
Add pg_promote function
- 10074651e335 12.0 cited
-
pg_ctl promote
- 4695da5ae97b 9.1.0 cited