Re: [HACKERS] Re: v7.1b4 bad performance - Mailing list pgsql-admin

From Hiroshi Inoue
Subject Re: [HACKERS] Re: v7.1b4 bad performance
Date
Msg-id 3A931FA9.1D698302@tpf.co.jp
Whole thread Raw
In response to Re: [HACKERS] Re: v7.1b4 bad performance  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-admin
Tom Lane wrote:
>
> > platform) i686-pc-linux-gnu, compiled by GCC egcs-2.91.60(turbolinux 4.2)
> > min delay) 10msec according to your test program.
> > -B)  64 (all other settings are default)
>
> Thanks.  Could I trouble you to run it again with a larger -B, say
> 1024 or 2048?  What I've found is that at -B 64, the benchmark is
> so constrained by limited buffer space that it doesn't reflect
> performance at a more realistic production setting.
>

Hmm the result doesn't seem that obvious.

First I got the following result.
[CommitDelay=0]
1)tps = 23.024648(including connections establishing)
  tps = 23.856420(excluding connections establishing)
2)tps = 30.276270(including connections establishing)
  tps = 30.996459(excluding connections establishing)
[CommitDelay=1]
1)tps = 23.065921(including connections establishing)
  tps = 23.866029(excluding connections establishing)
2)tps = 34.024632(including connections establishing)
  tps = 35.671566(excluding connections establishing)

The result seems inconstant and after disabling
checkpoint process I got the following.

[CommitDelay=0]
1)tps = 24.060970(including connections establishing)
  tps = 24.416851(excluding connections establishing)
2)tps = 21.361134(including connections establishing)
  tps = 21.605583(excluding connections establishing)
3)tps = 20.377635(including connections establishing)
  tps = 20.646523(excluding connections establishing)
[CommitDelay=1]
1)tps = 22.164379(including connections establishing)
  tps = 22.790772(excluding connections establishing)
2)tps = 22.719068(including connections establishing)
  tps = 23.040485(excluding connections establishing)
3)tps = 24.341675(including connections establishing)
  tps = 25.869479(excluding connections establishing)

Unfortunately I have no more time to check today.
Please check the similar test case.

[My test case]
I created and initialized 10 datatabases as follows.
1) create databases.
   createdb inoue1
   craetedb inoue2
   .
   createdb inoue10
2) pgbench -i inoue1
   pgbench -i inoue2
   .
   pgbench -i inoue10
3) invoke a modified pgbench
   pgbench -c 10 -t 100 inoue

I've attached a patch to change pgbench so that
each connection connects to different database
whose name is 'xxxx%d'(xxxx is the specified
database? name).

Regards,
Hiroshi InoueIndex: pgbench.c
===================================================================
RCS file: /home/cvs/pgcurrent/contrib/pgbench/pgbench.c,v
retrieving revision 1.1
diff -c -r1.1 pgbench.c
*** pgbench.c    2001/02/20 07:55:21    1.1
--- pgbench.c    2001/02/20 09:31:13
***************
*** 540,545 ****
--- 540,546 ----

      PGconn       *con;
      PGresult   *res;
+ char dbn[48];

      while ((c = getopt(argc, argv, "ih:nvp:dc:t:s:S")) != EOF)
      {
***************
*** 639,645 ****
      }

      /* opening connection... */
!     con = PQsetdb(pghost, pgport, NULL, NULL, dbName);
      if (PQstatus(con) == CONNECTION_BAD)
      {
          fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
--- 640,648 ----
      }

      /* opening connection... */
!     /*con = PQsetdb(pghost, pgport, NULL, NULL, dbName);*/
! sprintf(dbn, "%s1", dbName);
! con = PQsetdb(pghost, pgport, NULL, NULL, dbn);
      if (PQstatus(con) == CONNECTION_BAD)
      {
          fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
***************
*** 726,732 ****
      /* make connections to the database */
      for (i = 0; i < nclients; i++)
      {
!         state[i].con = PQsetdb(pghost, pgport, NULL, NULL, dbName);
          if (PQstatus(state[i].con) == CONNECTION_BAD)
          {
              fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
--- 729,737 ----
      /* make connections to the database */
      for (i = 0; i < nclients; i++)
      {
!         /*state[i].con = PQsetdb(pghost, pgport, NULL, NULL, dbName);*/
! sprintf(dbn, "%s%d", dbName, i + 1);
! state[i].con = PQsetdb(pghost, pgport, NULL, NULL, dbn);
          if (PQstatus(state[i].con) == CONNECTION_BAD)
          {
              fprintf(stderr, "Connection to database '%s' failed.\n", dbName);

pgsql-admin by date:

Previous
From: "Hiroshi Inoue"
Date:
Subject: RE: [HACKERS] Re: v7.1b4 bad performance
Next
From: Hannu Krosing
Date:
Subject: Re: [HACKERS] Re: v7.1b4 bad performance