Re: Reducing power consumption on idle servers

Поиск
Список
Период
Сортировка
От Kyotaro Horiguchi
Тема Re: Reducing power consumption on idle servers
Дата
Msg-id 20220324.161643.1806962492940958215.horikyota.ntt@gmail.com
обсуждение исходный текст
Ответ на Re: Reducing power consumption on idle servers  (Andres Freund <andres@anarazel.de>)
Ответы Re: Reducing power consumption on idle servers  (Simon Riggs <simon.riggs@enterprisedb.com>)
Список 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

В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Andrey V. Lepikhov"
Дата:
Сообщение: Re: Fast COPY FROM based on batch insert
Следующее
От: Jian Guo
Дата:
Сообщение: Re: Summary Sort workers Stats in EXPLAIN ANALYZE