Hello
I am testing one server and I found strange behave of 8.2.6. My
configuration is:
Linux Orbisek 2.6.18-xeonsmp #1 SMP Thu Jan 31 14:09:15 CET 2008 i686
GNU/Linux, 4 x Intel(R) Xeon(R) CPU E5335 @ 2.00GHz, 6G RAM
pgbench on 8.3 puts 1600-1700tps without dependency on number of
connections or transactions.
pgbench on 8.2 is similar only for 10 connections and doesn't depend
on number of transactions:
postgres@Orbisek:/root$ /usr/local/pgsql/bin/pgbench -c10 -t 50000 test
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
number of clients: 10
number of transactions per client: 50000
number of transactions actually processed: 500000/500000
tps = 1747.662768 (including connections establishing)
tps = 1747.758538 (excluding connections establishing)
but is half with 50 connections:
10 (1780), 20 (1545), 30 (1400), 40 (1145) 50c (987tps)
postgres@Orbisek:/root$ /usr/local/pgsql/bin/pgbench -c50 -t 100 test
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
number of clients: 50
number of transactions per client: 100
number of transactions actually processed: 5000/5000
tps = 1106.484286 (including connections establishing)
tps = 1126.062214 (excluding connections establishing)
postgres@Orbisek:/root$ /usr/local/pgsql/bin/pgbench -c50 -t 1000 test
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
number of clients: 50
number of transactions per client: 1000
number of transactions actually processed: 50000/50000
tps = 975.009227 (including connections establishing)
tps = 976.521036 (excluding connections establishing)
all time load is less than 3 and cpu us 16%, cpu sys 5% (8.3 used
procs about 18%us and 7% sy)
shared_buffers = 160MB
work_mem = 10MB
maintenance_work_mem = 256MB
wal_buffers = 128kB
checkpoint_segments = 100
bgwriter_lru_percent = 20.0
bgwriter_lru_maxpages = 200
bgwriter_all_percent = 10
bgwriter_all_maxpages = 600
autovacuum_vacuum_cost_delay = 20
postgres82=# select mode, count(*) from pg_locks group by mode;
mode | count
--------------------------+-------
ShareLock | 40
ShareUpdateExclusiveLock | 1
AccessShareLock | 99
ExclusiveLock | 62
RowExclusiveLock | 215
(5 rows)
postgres83=# select mode, count(*) from pg_locks group by mode;
mode | count
--------------------------+-------
ShareLock | 43
ShareUpdateExclusiveLock | 2
AccessShareLock | 101
ExclusiveLock | 116
RowExclusiveLock | 218
(5 rows)
postgres@Orbisek:/root/postgresql-8.2.6/src/tools/fsync$ ./test_fsync
-f /usr/local/pgsql/data/aa
Simple write timing:
write 0.005241
Compare fsync times on write() and non-write() descriptor:
(If the times are similar, fsync() can sync data written
on a different descriptor.)
write, fsync, close 0.152853
write, close, fsync 0.152203
Compare one o_sync write to two:
one 16k o_sync write 0.298571
two 8k o_sync writes 0.295349
Compare file sync methods with one 8k write:
(o_dsync unavailable)
write, fdatasync 0.151626
write, fsync, 0.150524
Compare file sync methods with 2 8k writes:
(o_dsync unavailable)
open o_sync, write 0.340511
write, fdatasync 0.182257
write, fsync, 0.177968
any ideas are welcome
Regards
Pavel Stehule