From: "J.H." <warthog9@kernel.org>
To: Jakub Narebski <jnareb@gmail.com>
Cc: Petr Baudis <pasky@suse.cz>,
Bruno Cesar Ribas <ribas@c3sl.ufpr.br>,
git@vger.kernel.org
Subject: Re: Another bench on gitweb (also on gitweb caching)
Date: Wed, 13 Feb 2008 11:12:03 -0800 [thread overview]
Message-ID: <1202929923.2687.15.camel@localhost.localdomain> (raw)
In-Reply-To: <200802131317.48815.jnareb@gmail.com>
> BTW. did you consider using cgit (C/Caching git web interface) instead
> or in addition to gitweb? Freedesktop.org uses it side by side with
> gitweb. I wonder how it would perform on kernel.org...
When I branched and did the initial work for gitweb-caching CGit had
only barely made verion 0.01. So putting something *that* new into
production on Kernel.org didn't even remotely make sense. Since than
the caching modifications (along with a few other fixes and such) have
proven to be quite stable and have withstood the onslaught of users
fairly well. I have toyed with the idea of giving up on gitweb-caching
(since I either need to redo it to bring it closer to mainline gitweb,
and probably give up on breaking it up into multiple files or switch to
something new) but the current question that I, and no one else on the
kernel.org admin staff has had time to investigate is does cgit use the
same url paths. If so it would be a simple drop-in replacement and that
would appeal to us. If it doesn't we can't use cgit and will have to
stick with gitweb or a direct derivative there-of.
>
> (Almost) every optimization should begin with profiling. Could you tell
> us which gitweb pages are most called and perhaps which pages generate
> most load for kernel.org?
That would be correct, though when I did up gitweb-caching the profiling
was blatantly obvious, with every single page request git was being
called, git was hammering the disk and it was becoming increasingly
obvious that going and running git for every page load was completely
impractical. I know git is fast - but it's not *that* fast, and it is a
bit abusive to the system for certain things requiring a lot of memory,
chewing cpu or chewing disk. In order of badness for kernel.org:
chewing memory, disk, cpu. Use up too much memory and you force too
much needed content out of ram, chew up disk and you make queries that
are forced to disk to take longer (and if you've chewed up too much ram
this gets *lots* worse).
So the simplest and obvious thing - take git out of the equation,
directly, for most calls. If you've ever seen the "Generating..." page
on kernel.org that is a stalling mechanism I'm using to let git run in
the background and generate the page your going to see. If you notice
it can take several seconds for that to complete, and we are on *very*
fast boxes - now multiply that by hundreds of times a second and you'll
start to understand why the caching layer is saving us right now.
As for the most often hit pages - the front page is by far hit the most,
which should be no surprise to everyone, and it is by far the most
abusive since it has to query *every* project have. After that things
taper off as people find the project they want and go looking for the
data they are interested in.
> How new projects are added (old projects
> deleted)?
By and large - left up to the users - if they don't want their tree
anymore they delete it (though I don't know of anyone who has) if they
need another one - they create it.
> Do you control (can add to or can add multiplexing) to update
> or post-receive hooks?
No. We do not want to, at all, control in any way the tree's that
people put up on Kernel.org. We just don't have the bandwidth to deal
with that for every single tree on kernel.org. Anything that would
require us to go changing or forcing a user to change something in their
git tree means we've already lost. Taking the caching layer and making
it 100% transparent to the git tree's owners and generally speaking to
the end user makes things very simple for us to deal with.
>
> Without this data we could concentrate on things which are of no
> importance. BTW. I wonder if slitting projects_list page would help...
That would be bad - I know for a fact there are people who will go to
git.kernel.org and then search on the page for the things they want - so
changing this would probably cause a lot of confusion for minor gain at
this point.
- John 'Warthog9' Hawley
next prev parent reply other threads:[~2008-02-13 19:13 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-10 3:09 Another bench on gitweb Bruno Cesar Ribas
2008-02-12 0:44 ` Another bench on gitweb (also on gitweb caching) Jakub Narebski
2008-02-13 0:45 ` Bruno Cesar Ribas
2008-02-13 0:50 ` Bruno Cesar Ribas
2008-02-13 0:57 ` J.H.
2008-02-13 1:01 ` J.H.
2008-02-13 12:17 ` Jakub Narebski
2008-02-13 19:12 ` J.H. [this message]
2008-02-14 1:01 ` Jakub Narebski
2008-02-14 22:43 ` J.H.
2008-02-15 23:19 ` Jakub Narebski
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=1202929923.2687.15.camel@localhost.localdomain \
--to=warthog9@kernel.org \
--cc=git@vger.kernel.org \
--cc=jnareb@gmail.com \
--cc=pasky@suse.cz \
--cc=ribas@c3sl.ufpr.br \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).