Hi Alex,

There was, indeed, a performance regression.  Essentially, readahead was
being enabled, even in random reads such as the random read benchmark.  I've
checked in a fix and have pushed it out to the main repository.  Feel free
to build from this latest
source<http://code.google.com/p/hypertable/wiki/SourceCode?tm=4>.
I'd be curious to see the numbers you get with this new code.

It's a little difficult to do apples-to-apples comparison with the Bigtable
benchmark, considering that they use a 1786 node GFS cell.  But here are the
numbers that I now get when running the software on a single node (dual-core
1.8 GHz Opteron) using the localBroker with the local filesystem:

*not* IN_MEMORY:

./bin/random_write_test 1000000000

  Elapsed time:  72.28 s
 Total inserts:  1000000
    Throughput:  14002073.08 bytes/s
    Throughput:  13836.04 inserts/s

./bin/random_read_test 1000000000

  Elapsed time:  795.86 s
 Total scanned:  1000000
    Throughput:  1271582.90 bytes/s
    Throughput:  1256.50 scanned cells/s

IN_MEMORY:

./bin/random_write_test 1000000000

  Elapsed time:  65.71 s
 Total inserts:  1000000
    Throughput:  15401040.04 bytes/s
    Throughput:  15218.42 inserts/s

./bin/random_read_test 1000000000

  Elapsed time:  192.84 s
 Total scanned:  1000000
    Throughput:  5247769.33 bytes/s
    Throughput:  5185.54 scanned cells/s

Not sure why the random read IN_MEMORY test is 1/2 of the Bigtable number.
I didn't see any low hanging fruit with oprofile.  As soon as we get all of
the functionality in place for beta, we'll do a performance push and figure
out what's going on.

- Doug

On Tue, Oct 21, 2008 at 11:27 AM, Alex <[EMAIL PROTECTED]> wrote:

>
> Joshua, Thanks for your note! Indeed I was using debug build b/c I am
> interested in memory profile. However, when I re-built for release, it
> didn't have a huge effect. However, I realized that the slowdown was
> due to the fact that I was running HT with tcmalloc heap profiling.
>
> The results are significantly better for IN MEMORY random tests:
>
> random_write_test 1000000000
>
>  Elapsed time:  62.39 s
>  Total inserts:  1000000
>    Throughput:  16221685.94 bytes/s
>    Throughput:  16029.33 inserts/s
>
> random_read_test 1000000000
>
>  Elapsed time:  197.01 s
>  Total scanned:  1000000
>    Throughput:  5136732.38 bytes/s
>    Throughput:  5075.82 scanned cells/s
>
> So, in memory random read test is only ~2x slower than the number
> reported in BigTable paper (although I guess their machine was
> somewhat slower 2 years ago).
>
> Without in memory setting, random read test is also ~2x slower:
>
> random_write_test 1000000000
>
>  Elapsed time:  65.15 s
>  Total inserts:  1000000
>    Throughput:  15533951.97 bytes/s
>    Throughput:  15349.75 inserts/s
>
> random_read_test 1000000000
>
>  Elapsed time:  1256.39 s
>  Total scanned:  1000000
>    Throughput:  805479.86 bytes/s
>    Throughput:  795.93 scanned cells/s
>
> Alex
>
> On Oct 20, 6:59 pm, "Joshua Taylor" <[EMAIL PROTECTED]> wrote:
> > Alex, just making sure... you're running the optimized build, right?  The
> > debug build (which I believe is the default setup) is way slower than the
> > optimized build.
> >
> > Josh
> >
> > On Mon, Oct 20, 2008 at 6:48 PM, Alex <[EMAIL PROTECTED]> wrote:
> >
> > > Luke,
> >
> > > I tried to set IN MEMORY access group option for RandomTest table.
> >
> > > The result for random read test improved by ~5x:
> >
> > > random_read_test 1000000000
> >
> > > 0%   10   20   30   40   50   60   70   80   90   100%
> > > |----|----|----|----|----|----|----|----|----|----|
> > > ***************************************************
> > >  Elapsed time:  1971.06 s
> > >  Total scanned:  1000000
> > >    Throughput:  513430.49 bytes/s
> > >    Throughput:  507.34 scanned cells/s
> >
> > > However, it is still ~2x worse than the number from BigTable paper for
> > > non-mem tables and ~20x worse than mem-table.
> >
> > > Thanks,
> > > Alex
> >
> > > On Oct 19, 2:18 pm, Luke <[EMAIL PROTECTED]> wrote:
> > > > The random_read_test used to score 4k qps for comparable benchmark
> (vs
> > > > 1.2k qps in the bigtable paper, note the 10k qps number is for
> > > > memtable, which is very different from regular table. In hypertable
> > > > you can use the IN MEMORY access group option to get memtable) The
> > > > regular table scanner needs to merge scan cell cache, cell stores, so
> > > > it's much more expensive than memtable scanner which just scan the
> > > > cellcache, regardless the size of the table.
> >
> > > > Doug pushed out .11, which contains major changes to the way
> cellcache
> > > > and compaction works before he went on a vacation. There might be a
> > > > performance regression in recent releases. Thanks for the note, we'll
> > > > look into it.
> >
> > > > __Luke
> >
> > > > On Oct 16, 9:59 pm, Alex <[EMAIL PROTECTED]> wrote:
> >
> > > > > Hi All,
> >
> > > > > Could somebody explain/describe CellCache allocation/eviction
> policy?
> >
> > > > > After running random read/write tests, I came to the conclusion
> that
> > > > > CellCache operation is very different from what is described in
> Google
> > > > > BigTable paper, i.e. CellCache works as a write buffer rather than
> a
> > > > > cache. CellCache seems to help a lot for optimizing writes but it
> > > > > doesn't help reads.
> >
> > > > > Here are the results:
> >
> > > > > random_write_test 100000000
> >
> > > > >   Elapsed time:  8.16 s
> > > > >  Total inserts:  100000
> > > > >     Throughput:  12403559.87 bytes/s
> > > > >     Throughput:  12256.48 inserts/s
> >
> > > > > random_read_test 100000000
> >
> > > > >   Elapsed time:  1038.47 s
> > > > >  Total scanned:  100000
> > > > >     Throughput:  97451.43 bytes/s
> > > > >     Throughput:  96.30 scanned cells/s
> >
> > > > > Random read speed is ~100x slower than the result in Google
> BigTable
> > > > > for random read test which fits in the memory. In this case the
> data
> > > > > set size should be ~100MB and should comfortably fit in the DRAM
> > > > > (8GB).
> >
> > > > > Also, tcmalloc heap profiling shows that the usage memory actually
> > > > > decreases to ~50MB during random read test while it is >700MB
> during
> > > > > random write test (although top instead shows increase).
> >
> > > > > I apologize if I am missing something very basic, I have very
> little
> > > > > experience in this area.
> >
> > > > > Thanks,
> > > > > Alex
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Hypertable Development" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/hypertable-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to