RE: [Patch] Optimize dropping of relation buffers using dlist
tsunakawa.takay@fujitsu.com <tsunakawa.takay@fujitsu.com>
From: "tsunakawa.takay@fujitsu.com" <tsunakawa.takay@fujitsu.com>
To: "k.jamison@fujitsu.com" <k.jamison@fujitsu.com>
Cc: 'Kyotaro Horiguchi' <horikyota.ntt@gmail.com>, "amit.kapila16@gmail.com" <amit.kapila16@gmail.com>, "tgl@sss.pgh.pa.us" <tgl@sss.pgh.pa.us>, "andres@anarazel.de" <andres@anarazel.de>, "robertmhaas@gmail.com" <robertmhaas@gmail.com>, "tomas.vondra@2ndquadrant.com" <tomas.vondra@2ndquadrant.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2020-10-20T07:06:58Z
Lists: pgsql-hackers
From: Jamison, Kirk/ジャミソン カーク <k.jamison@fujitsu.com> > However, I still can't seem to find the cause of why the non-recovery > performance does not change when compared to master. (1 min 15 s for the > given test case below) Can you check and/or try the following? 1. Isn't the vacuum cost delay working? VACUUM command should run without sleeping with the default settings. Just in case, can you try with the settings: vacuum_cost_delay = 0 vacuum_cost_limit = 10000 2. Buffer strategy The non-recovery VACUUM can differ from that of recovery in the use of shared buffers. The VACUUM command uses only 256 KB of shared buffers. To make VACUUM command use the whole shared buffers, can you modify src/backend/commands/vacuum.c so that GetAccessStrategy()'s argument is changed to BAS_VACUUM to BAS_NORMAL? (I don't have much hope about this, though, because all blocks of the relations are already cached in shared buffers when VACUUM is run.) Can you measure the time DropRelFileNodeBuffers()? You can call GetTimestamp() at the beginning and end of the function, and use TimestampDifference() to calculate the difference. Then, for instance, elog(WARNING, "time is | %u.%u", sec, usec) at the end of the function. You can use any elog() print format for your convenience to write shell commands to filter the lines and sum up the total. Regards Takayuki Tsunakawa
Commits
-
Fix size overflow in calculation introduced by commits d6ad34f3 and bea449c6.
- 519e4c9ee21a 14.0 landed
-
Optimize DropRelFileNodesAllBuffers() for recovery.
- bea449c635c0 14.0 landed
-
Optimize DropRelFileNodeBuffers() for recovery.
- d6ad34f3410f 14.0 landed
-
Cache smgrnblocks() results in recovery.
- c5315f4f4484 14.0 cited
-
Add a check to prevent overwriting valid data if smgrnblocks() gives a
- ffae5cc5a602 8.2.0 cited