Re: refactoring relation extension and BufferAlloc(), faster COPY
От | Andres Freund |
---|---|
Тема | Re: refactoring relation extension and BufferAlloc(), faster COPY |
Дата | |
Msg-id | 20230503184419.vxwtcabkqweef2wi@awork3.anarazel.de обсуждение исходный текст |
Ответ на | Re: refactoring relation extension and BufferAlloc(), faster COPY (Muhammad Malik <muhammad.malik1@hotmail.com>) |
Ответы |
Re: refactoring relation extension and BufferAlloc(), faster COPY
|
Список | pgsql-hackers |
Hi, On 2023-05-03 18:25:51 +0000, Muhammad Malik wrote: > Could you please share repro steps for running these benchmarks? I am doing performance testing in this area and want touse the same benchmarks. The email should contain all the necessary information. What are you missing? c=16;psql -c 'DROP TABLE IF EXISTS copytest_0; CREATE TABLE copytest_0(data text not null);' && time /srv/dev/build/m-opt/src/bin/pgbench/pgbench -n -P1 -c$c -j$c -t$((1024/$c)) -f ~/tmp/copy.sql && psql -c 'TRUNCATE copytest_0' > I've done a fair bit of benchmarking of this patchset. For COPY it comes out > ahead everywhere. It's possible that there's a very small regression for > extremly IO miss heavy workloads, more below. > > > server "base" configuration: > > max_wal_size=150GB > shared_buffers=24GB > huge_pages=on > autovacuum=0 > backend_flush_after=2MB > max_connections=5000 > wal_buffers=128MB > wal_segment_size=1GB > > benchmark: pgbench running COPY into a single table. pgbench -t is set > according to the client count, so that the same amount of data is inserted. > This is done oth using small files ([1], ringbuffer not effective, no dirty > data to write out within the benchmark window) and a bit larger files ([2], > lots of data to write out due to ringbuffer). I use a script like: c=16;psql -c 'DROP TABLE IF EXISTS copytest_0; CREATE TABLE copytest_0(data text not null);' && time /srv/dev/build/m-opt/src/bin/pgbench/pgbench-n -P1 -c$c -j$c -t$((1024/$c)) -f ~/tmp/copy.sql && psql -c 'TRUNCATE copytest_0' > [1] COPY (SELECT repeat(random()::text, 5) FROM generate_series(1, 100000)) TO '/tmp/copytest_data_text.copy' WITH (FORMATtest); > [2] COPY (SELECT repeat(random()::text, 5) FROM generate_series(1, 6*100000)) TO '/tmp/copytest_data_text.copy' WITH (FORMATtext); Greetings, Andres Freund
В списке pgsql-hackers по дате отправления: