git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Another bench on gitweb (also on gitweb caching)

From
BRBruno Cesar Ribas <ribas@c3sl.ufpr.br>
Date
Feb 13, 2008, 00:45 UTC
Message-ID
<20080213004528.GB31455@c3sl.ufpr.br>
In-Reply-To
<m363wvdmxr.fsf@localhost.localdomain>
On Mon, Feb 11, 2008 at 04:44:23PM -0800, Jakub Narebski wrote:
Show 7 quoted lines
> Bruno Cesar Ribas <ribas@c3sl.ufpr.br> writes:
> 
> 
> Could you please do not mix English and your native language
> (Portuguese?) in shown examples? Mixing two languages in one
> identifier name (unless it is ref in br too) is especially bad
> form... TIA.
I agree... that's not good =( i'll enforce to send everything in english.
> 
> Besides, what I'm more interested in is a script used to generate
> those 1000 projects...

So.. like I said, i made a simple test so I cloned a very small project[1] e replicated it, just generated different owner and descriptions.

Show 9 quoted lines
> > 
> > Running 2 dd to generate disk IO.  Here comes the results:
> > NO projects_list  projects_list
> > 7m56s55           6m11s95        cached last change, using gitweb.lastref
> > 16m30s69          15m10s74       default gitweb, using FS's owner
> > 16m07s40          15m24s34       patched to get gitweb.owner
> 
> Those are results of running gitweb as standalone script, or your
> script runing git-for-each-ref?
Runing gitweb as standalone script.
Show 5 quoted lines
> 
> Besides, I'd rather see results of running ApacheBench. On Linux it
> usually comes with installed Apache, and it is called by runing
> 'ab'. Your tests instead of adding superficial load could try to use
> concurrent requests, and more than 1 request to get better average.

hmmm I see, but we will bench with it running with filesystem cached. This could be a good idea if the machine runs only git! I find interesting running with all those dds to simulate something like my environment, which is shared with all of our mirrors. I can even run a test inside this machine but results may be very different depending on the time of the day.

As soon I get the machine I ran those tests available again i'll run it with apache. If you have some ideas of which tests to run tell me =) So we don't waste time when i get the machine.

Show 13 quoted lines
>  
> > I found out those VERY interesting, so instead of trying to think a
> > new way to store gitweb config, we should think a way to cache those
> > information.
> 
> Below there are my thoughts about caching information for gitweb:
> 
> First, the basis of each otimisation is checking the bottlenecks.
> I think it was posted sometime there that the pages taking most load
> are projects list and feeds. 
> 
> Kernel.org even run modified version of gitweb, with some caching
> support; Cgit (git web interface in C) also has caching support.
Is this gitweb version for kernel.org available somewhere?
Show 7 quoted lines
> 
> 
><snip> 
> The "Last Update" information is especially easy because it can be
> invalidated / update externally, by the update / post-receive hook,
> outside gitweb. So gitweb doesn't need to implement some caching
> invalidation mechanism for this.
that's what i thought.
Show 10 quoted lines
> 
> We can store lastref / lastchange information in repository config, as
> for example "gitweb.lastref" key. We can store it in gitweb wide
> config, for example in $projectroot/gitwebconfig file, as for example
> "gitweb.<project>.lastref" key. Or we can store it as hash initializer
> in some sourced Perl file, read from gitweb_config.perl (this I think
> can be done even now without touching gitweb code at all); we can use
> Data::Dumper to save such information.
> 
> The possibilities are many.
That's right. 

Caching lastref at $projectroot/gitwebconfig might be a good idea. I think that caching it at $GIT_DIR/config is somehow ugly, because we will have a script modifying this file.

And having this $projectroot/gitwebconfig with lastref cached can act as a project_list because we already all the directories we should get gitweb confs, like gitweb.description, gitweb.url and gitweb.owner (soon?!) and others that will appear.

Show 5 quoted lines
> 
> -- 
> Jakub Narebski
> Poland
> ShadeHawk on #git
-- 
Bruno Ribas - ribas@c3sl.ufpr.br
http://web.inf.ufpr.br/ribas
C3SL: http://www.c3sl.ufpr.br 
Previous: Jakub NarebskiNext: Bruno Cesar Ribas
Message 3 of 11 in “Another bench on gitweb”
  1. Bruno Cesar RibasFeb 10, 2008
  2. Jakub NarebskiFeb 12, 2008
  3. Bruno Cesar RibasFeb 13, 2008
  4. Bruno Cesar RibasFeb 13, 2008
  5. J.H.Feb 13, 2008
  6. J.H.Feb 13, 2008
  7. Jakub NarebskiFeb 13, 2008
  8. J.H.Feb 13, 2008
  9. Jakub NarebskiFeb 14, 2008
  10. J.H.Feb 14, 2008
  11. Jakub NarebskiFeb 15, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.