All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Shawn O. Pearce" <spearce@spearce.org>
To: Robin Rosenberg <robin.rosenberg@dewire.com>
Cc: git@vger.kernel.org
Subject: Re: [JGIT RFC PATCH 2/2] Rewrite WindowCache to be easier to follow and maintain
Date: Tue, 28 Apr 2009 08:28:22 -0700	[thread overview]
Message-ID: <20090428152822.GP23604@spearce.org> (raw)
In-Reply-To: <1240885572-1755-2-git-send-email-spearce@spearce.org>

"Shawn O. Pearce" <spearce@spearce.org> wrote:
> 
> This rewrite generalizes most of the cache logic into a new class,
...
>  I'm tossing this out there for tonight.  Please don't apply until
>  I give a final yay or nay.
...
>  I'm going to burn this in tonight for about 12 hours by pounding
>  a whole bunch of clients against it.

Yay.

This patch looks solid to me.  

I ran it overnight for 12 hours on a test rig.  4-way Intel(R)
Xeon(R) CPU 5148 @ 2.33GHz with 32 GiB physical memory.  The git://
server process was launched with:

  java -Xmx8192m -classpath jgit \
    org.spearce.jgit.pgm.Main daemon
    --port 8853 --export-all base

Note that is the default WindowCacheConfig.

I ran 8 concurrent clone clients on two 2-way systems, 4 clients
per host.  The clone clients randomly selected between three
repositories on each clone attempt:

  linux-2.6 fork (322M on disk)
  repo.git       (1.6M on disk)
  gerrit.git     (9.3M on disk)

I used C git `git clone --bare ...` for the clients to try and
speed up the client side of the test.

In 12 hours the clients successfully completed a total of 2,456
clones, and appear to have been averaging 10,999 KiB/s at peak on
one test host and 4,969 KiB/s on the other.  So JGit was pushing
somewhere around 63,872 KiB/s.  I'm not sure what the network can
really do here; the test clients are in my office and the server
is in a data center somewhere in the same state.

At peak (when all clients picked the linux-2.6 fork roughly around
the same time) I saw the server JVM approaching 380% CPU utilization.
Not too bad giving that the WindowCacheConfig's default settings are
woefully inadequate for 8 concurrent PackWriters on linux-2.6.

Unfortunately, this quad is largest SMP box I have available.
I'm sure we're wasting CPU spinning through cache entries under load.
I still need to do throughput testing, and that may lead to some
tuning changes.  But the code is cleaner and didn't fall over,
so I say we move ahead and apply this rewrite.

-- 
Shawn.

  reply	other threads:[~2009-04-28 15:29 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-28  2:26 [JGIT PATCH 1/2] Don't use ByteWindows when checking pack file headers/footers Shawn O. Pearce
2009-04-28  2:26 ` [JGIT RFC PATCH 2/2] Rewrite WindowCache to be easier to follow and maintain Shawn O. Pearce
2009-04-28 15:28   ` Shawn O. Pearce [this message]
2009-04-28 23:19   ` Robin Rosenberg
2009-04-28 23:30     ` Shawn O. Pearce
2009-04-29 17:16     ` Shawn O. Pearce
2009-04-30  7:34       ` Ferry Huberts (Pelagic)
2009-05-06 14:15       ` [PATCH] Link to the Sun JVM bug mentioned in OffsetCache Shawn O. Pearce

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090428152822.GP23604@spearce.org \
    --to=spearce@spearce.org \
    --cc=git@vger.kernel.org \
    --cc=robin.rosenberg@dewire.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.