Re: Miscalculation in IsCheckpointOnSchedule()
От | Heikki Linnakangas |
---|---|
Тема | Re: Miscalculation in IsCheckpointOnSchedule() |
Дата | |
Msg-id | 473AE546.6080703@enterprisedb.com обсуждение исходный текст |
Ответ на | Re: Miscalculation in IsCheckpointOnSchedule() (Heikki Linnakangas <heikki@enterprisedb.com>) |
Список | pgsql-patches |
Heikki Linnakangas wrote: > Tom Lane wrote: >> ITAGAKI Takahiro <itagaki.takahiro@oss.ntt.co.jp> writes: >>> - ((double) (int32) (recptr.xrecoff - >>> ckpt_start_recptr.xrecoff)) / XLogSegSize) / >>> + ((double) recptr.xrecoff - (double) >>> ckpt_start_recptr.xrecoff) / XLogSegSize) / >> >> Surely this makes matters worse, not better. What happens near a segment >> boundary crossing? > > Hmm. There seems to be another little bug in there. XLogSegsPerFile is > defined as 0xffffffff/XLogSegSize, which is 255 with default settings. > It should be 256. That leads to negative elapsed_xlogs estimates at xlog > file boundaries. XLogCheckpointNeeded suffers from it too; the number of > segments consumed since last checkpoint is off by one per each xlogid, > so we trigger the checkpoint a little bit too late. I'll take that back. We intentionally don't use the last possible segment of each xlog file, to avoid overflows. Sorry for the noise. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com
В списке pgsql-patches по дате отправления: