Thread

  1. distributed performance testing

    Andrew Dunstan <andrew@dunslane.net> — 2005-08-13T18:24:02Z

    A little while ago I rather rashly opined that we could extend the 
    buildfarm to do (optional) performance testing. After thinking about it 
    for some time I now think that might not be such a good idea. We can 
    certainly leverage a lot of the technology used and experience gained in 
    building the buildfarm to create a distributed performance testing 
    system, and we know that many among the buildfarm members would be 
    willing to join such an effort, but I now think it probably needs to be 
    a separate beast. 
    
    Buildfarm tests correctness on various code branches, for a fairly 
    static config set per member, triggered by code changes.  It has a 
    number of hoops to  jump through, each of which has a well defined set 
    of success criteria. By contrast,  performance testing to be useful 
    needs to be more flexible in several ways - including the code tested 
    (ideally, we'd be able to try out several patch sets) and the tests 
    performed. What is more, measurement is on a continuous scale rather 
    than a set of boolean flags. And the trigger to run tests needs to be 
    something other than changes in code on a well known branch.
    
    Incidentally,  use of a different SCM system might well make 
    constructing test sets more simple. Imagine, say, in SVN, you would 
    create a branch called "test-set-yyyy-mm-dd" or some such, make your 
    changes there, add a test script under some well known name, and commit 
    the branch. Then you might put an entry on the server that contains the 
    name of the branch and a date/time after which we would consider the 
    tests stale. The performance-farm member would  periodically check with 
    the server for new entries, switch to the named branch, build, run the 
    tests, and upload the results.
    
    If someone wants to have a go at implementing such a system, I can give 
    them some help and advice. Otherwise I will put it on my list of things 
    to do, but the earliest I could devote any time to it would be very late 
    this year.
    
    cheers
    
    andrew
    
    
  2. Re: distributed performance testing

    Tom Lane <tgl@sss.pgh.pa.us> — 2005-08-13T22:29:58Z

    Andrew Dunstan <andrew@dunslane.net> writes:
    > Incidentally,  use of a different SCM system might well make 
    > constructing test sets more simple. Imagine, say, in SVN, you would 
    > create a branch called "test-set-yyyy-mm-dd" or some such, make your 
    > changes there, add a test script under some well known name, and commit 
    > the branch.
    
    This seems a pretty unconvincing argument for SVN ... we could perfectly
    well do that in CVS, no?
    
    			regards, tom lane
    
    
  3. Re: distributed performance testing

    Andrew Dunstan <andrew@dunslane.net> — 2005-08-13T22:41:22Z

    
    Tom Lane wrote:
    
    >Andrew Dunstan <andrew@dunslane.net> writes:
    >  
    >
    >>Incidentally,  use of a different SCM system might well make 
    >>constructing test sets more simple. Imagine, say, in SVN, you would 
    >>create a branch called "test-set-yyyy-mm-dd" or some such, make your 
    >>changes there, add a test script under some well known name, and commit 
    >>the branch.
    >>    
    >>
    >
    >This seems a pretty unconvincing argument for SVN ... we could perfectly
    >well do that in CVS, no?
    >
    >			
    >  
    >
    
    You could well be right.  And I should know better than to engage in 
    speculation like that and possibly cause us to be inundated by 
    proponents of SCMfoo, most of whom will never write a line of code for 
    postgres let alone ever have to commit anything ;-) Pardon my weakness.
    
    cheers
    
    andrew
    
    
    
    
  4. Re: distributed performance testing

    Jim C. Nasby <jnasby@pervasive.com> — 2005-08-22T20:13:00Z

    On Sat, Aug 13, 2005 at 06:29:58PM -0400, Tom Lane wrote:
    > Andrew Dunstan <andrew@dunslane.net> writes:
    > > Incidentally,  use of a different SCM system might well make 
    > > constructing test sets more simple. Imagine, say, in SVN, you would 
    > > create a branch called "test-set-yyyy-mm-dd" or some such, make your 
    > > changes there, add a test script under some well known name, and commit 
    > > the branch.
    > 
    > This seems a pretty unconvincing argument for SVN ... we could perfectly
    > well do that in CVS, no?
    
    In any case, I think it probably makes more sense to specify tests as
    'pull from CVS as of this date/tag and then (optionally) apply these
    patches'. It doesn't seem to make sense to clutter up CVS just to be
    able to run performance tests.
    
    In any case, I agree. I've been wondering if it makes sense to setup a
    result repository for dbt* where people running dbt tests could submit
    results (along with machine config, etc). ISTM that having that would be
    beneficial on it's own, and we could then build an additional framework
    for pushing desired tests out to a set of machines.
    
    Of course we could use pgbench for this instead of dbt*, but ISTM that
    dbt is a better choice since it's useful for a broader set of people.
    The downside is it requires dbt, but that doesn't seem to be a major
    issue. Also, using dbt means we can test different use cases (dbt2 ~=
    TPC-C, dbt3 ~= TPC-H, etc), while pgbench is just a single benchmark.
    -- 
    Jim C. Nasby, Sr. Engineering Consultant      jnasby@pervasive.com
    Pervasive Software        http://pervasive.com        512-569-9461
    
    
  5. Re: distributed performance testing

    Darcy Buskermolen <darcy@wavefire.com> — 2005-08-22T21:28:54Z

    On Monday 22 August 2005 13:13, Jim C. Nasby wrote:
    > On Sat, Aug 13, 2005 at 06:29:58PM -0400, Tom Lane wrote:
    > > Andrew Dunstan <andrew@dunslane.net> writes:
    > > > Incidentally,  use of a different SCM system might well make
    > > > constructing test sets more simple. Imagine, say, in SVN, you would
    > > > create a branch called "test-set-yyyy-mm-dd" or some such, make your
    > > > changes there, add a test script under some well known name, and commit
    > > > the branch.
    > >
    > > This seems a pretty unconvincing argument for SVN ... we could perfectly
    > > well do that in CVS, no?
    >
    > In any case, I think it probably makes more sense to specify tests as
    > 'pull from CVS as of this date/tag and then (optionally) apply these
    > patches'. It doesn't seem to make sense to clutter up CVS just to be
    > able to run performance tests.
    >
    > In any case, I agree. I've been wondering if it makes sense to setup a
    > result repository for dbt* where people running dbt tests could submit
    > results (along with machine config, etc). ISTM that having that would be
    > beneficial on it's own, and we could then build an additional framework
    > for pushing desired tests out to a set of machines.
    >
    > Of course we could use pgbench for this instead of dbt*, but ISTM that
    > dbt is a better choice since it's useful for a broader set of people.
    > The downside is it requires dbt, but that doesn't seem to be a major
    > issue. Also, using dbt means we can test different use cases (dbt2 ~=
    > TPC-C, dbt3 ~= TPC-H, etc), while pgbench is just a single benchmark.
    
    And there is always http://pgfoundry.org/projects/tpc-w-php/  for a ~= TPC-W 
    workload. 
    
    -- 
    Darcy Buskermolen
    Wavefire Technologies Corp.
    
    http://www.wavefire.com
    ph: 250.717.0200
    fx: 250.763.1759
    
    
  6. Re: distributed performance testing

    Jim C. Nasby <jnasby@pervasive.com> — 2005-08-22T22:14:07Z

    On Mon, Aug 22, 2005 at 02:28:54PM -0700, Darcy Buskermolen wrote:
    > On Monday 22 August 2005 13:13, Jim C. Nasby wrote:
    > > Of course we could use pgbench for this instead of dbt*, but ISTM that
    > > dbt is a better choice since it's useful for a broader set of people.
    > > The downside is it requires dbt, but that doesn't seem to be a major
    > > issue. Also, using dbt means we can test different use cases (dbt2 ~=
    > > TPC-C, dbt3 ~= TPC-H, etc), while pgbench is just a single benchmark.
    > 
    > And there is always http://pgfoundry.org/projects/tpc-w-php/  for a ~= TPC-W 
    > workload. 
    
    True, but then you don't get TPC-C, and dbt1 is ~= TPC-W. So with a
    package of the full dbt suite (doesn't exist yet, but I suspect it
    wouldn't be hard to change that), you get W, C, H, and eventually
    TPC-App. Plus, much of what needs to be developed for our use-case would
    benefit all dbt users, whereas pgbench is only of use to us internally.
    dbt is also more flexable, since you can vary workload ratios. For
    example, you can run dbt2 in a 90% read environment if you wanted.
    -- 
    Jim C. Nasby, Sr. Engineering Consultant      jnasby@pervasive.com
    Pervasive Software        http://pervasive.com        512-569-9461