Hi, On Tue, 4 Feb 2025 at 10:55, Michael Paquier <mich...@paquier.xyz> wrote: > > On Mon, Feb 03, 2025 at 02:34:29PM +0300, Nazir Bilal Yavuz wrote: > > On Mon, 3 Feb 2025 at 11:50, Bertrand Drouvot < bertranddrouvot...@gmail.com> wrote: > >> === 1 > >> > >> + pgstat_count_io_op_time(IOOBJECT_WAL, IOCONTEXT_INIT, IOOP_WRITE, > >> + io_start, 1, wal_segment_size); > >> > >> In case wal_init_zero is false, then we're only seeking to the end and write a > >> solitary byte. Then, is reporting "wal_segment_size" correct? > > > > I think you are right. It would make sense to have two > > pgstat_count_io_op_time() calls here. One for wal_segment_size and one > > for solitary byte. > > Ah, right. We can just use one call with the size written set > depending on wal_init_zero, because this is still a IOOP_WRITE for a > IOCONTEXT_INIT in both cases. Only the size changes as we are in > XLogFileInitInternal().
Yes, that is better. Thanks! > At the end, we want this patch and this data, and my benchmarcking is > not showing much differences even if going through a workload with > many pages, so I've used the version relying entirely on > track_io_timing and applied it. Thanks! My benchmark results are the same [1]. I could not see the noticable difference between master and patched version. I run the benchmark a couple of times, sometimes the patched version, sometimes the master version is better. I think the differences are due to margin of error. Sharing the latest benchmark run at the bottom [1]. > If we split these timings across more GUCs, one thing to consider > would be a third GUC which is neither track_wal_io_timing nor > track_io_timing to keep things independent, but I am not really > convinced that's necessary. I agree. [1] pgbench -n -c8 -j8-T60 -f <(echo "SELECT pg_logical_emit_message(true, 'test', repeat('0', ${emit_bytes}));";) with emit bytes being 10 and 8192 for the 'acpi_pm', 'hpet' and 'tsc' clock sources. (I hope that table gets rendered correctly in the mailing list.) ╔══════════════╦════════════╦═════════════════╦═════════════════════╦════════╦═════════╦═══════════╗ ║ clock source ║ emit_bytes ║ track_io_timing ║ track_wal_io_timing ║ master ║ patched ║ Change % ║ ║ ║ ║ ║ ║ TPS ║ TPS ║ (Positive ║ ║ ║ ║ ║ ║ ║ ║ means ║ ║ ║ ║ ║ ║ ║ ║ better) ║ ╠══════════════╬════════════╬═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ off ║ off ║ 2164 ║ 2221 ║ 2.63 ║ ║ ║ ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ on ║ off ║ 2171 ║ 2246 ║ 3.45 ║ ║ ║ 10 ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ off ║ on ║ 2243 ║ 2178 ║ -2.90 ║ ║ ║ ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ on ║ on ║ 2188 ║ 2148 ║ -1.83 ║ ║ ╠════════════╬═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ acpi_pm ║ ║ off ║ off ║ 2226 ║ 2172 ║ -2.43 ║ ║ ║ ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ on ║ off ║ 2219 ║ 2203 ║ -0.72 ║ ║ ║ 8192 ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ off ║ on ║ 2168 ║ 2223 ║ 2.54 ║ ║ ║ ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ on ║ on ║ 2229 ║ 2204 ║ -1.12 ║ ╠══════════════╬════════════╬═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ ║ ║ ║ ║ ║ ╠══════════════╬════════════╬═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ ║ ║ ║ ║ ║ ╠══════════════╬════════════╬═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ off ║ off ║ 2087 ║ 2156 ║ 3.31 ║ ║ ║ ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ on ║ off ║ 2141 ║ 2089 ║ -2.43 ║ ║ ║ 10 ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ off ║ on ║ 2085 ║ 2071 ║ -0.67 ║ ║ ║ ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ on ║ on ║ 2024 ║ 2052 ║ 1.38 ║ ║ ╠════════════╬═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ hpet ║ ║ off ║ off ║ 2141 ║ 2074 ║ -3.13 ║ ║ ║ ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ on ║ off ║ 2056 ║ 2079 ║ 1.12 ║ ║ ║ 8192 ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ off ║ on ║ 2096 ║ 2087 ║ -0.43 ║ ║ ║ ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ on ║ on ║ 2103 ║ 2086 ║ -0.81 ║ ╠══════════════╬════════════╬═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ ║ ║ ║ ║ ║ ╠══════════════╬════════════╬═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ ║ ║ ║ ║ ║ ╠══════════════╬════════════╬═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ off ║ off ║ 2276 ║ 2252 ║ -1.05 ║ ║ ║ ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ on ║ off ║ 2213 ║ 2124 ║ -4.02 ║ ║ ║ 10 ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ off ║ on ║ 2183 ║ 2250 ║ 3.07 ║ ║ ║ ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ on ║ on ║ 2287 ║ 2250 ║ -1.62 ║ ║ ╠════════════╬═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ tsc ║ ║ off ║ off ║ 2178 ║ 2179 ║ 0.05 ║ ║ ║ ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ on ║ off ║ 2203 ║ 2187 ║ -0.73 ║ ║ ║ 8192 ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ off ║ on ║ 2220 ║ 2240 ║ 0.90 ║ ║ ║ ╠═════════════════╬═════════════════════╬════════╬═════════╬═══════════╣ ║ ║ ║ on ║ on ║ 2102 ║ 2182 ║ 3.81 ║ ╚══════════════╩════════════╩═════════════════╩═════════════════════╩════════╩═════════╩═══════════╝ -- Regards, Nazir Bilal Yavuz Microsoft