Re: gitweb.cgi

From: Linus Torvalds <torvalds@osdl.org>
Date: 2005-10-19 11:02:29
On Tue, 18 Oct 2005, H. Peter Anvin wrote:
> 
> It turns out that the default CacheSize is only 256K.  D'oh!  Fixed.
> 
> I also changed the CacheDefaultExpire to 600 seconds.

Ok, that sounds like it should improve things. My quick tests didn't seem 
to show any difference, though. Do you need to re-load the apache module 
or something?

> The only thing the front page really should need is to know when the last
> change to the tree was, which presumably means looking at each head of each
> tree and follow the chain until there is a datable object.

Yeah. I tried to follow gitweb.cgi, but I'm neither http- nor 
perl-literate, so I'm not sure I caught everything.

But it does seem to basically end up doing a "git_read_commit()" for each 
project, and that in turn was doing the "git-rev-list --max-count=1" thing 
that I just sent out a suggested improvement for.

It effectively removes two or more copies of

	stat64("/objects/xy/zzy", {...})
	fd = open("objects/xy/zzy", O_RDONLY|O_NOATIME)
	addr = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0)
	close(fd)
	munmap(addr, size)

which really should be very cheap operations, but hey, if the disk head is 
somewhere else (and busy) and it's not cached, it can be quite expensive. 
Especially since we don't end up usign the result.

I'm sure there's room for improvement inside gitweb itself too, but maybe 
the git-rev-list optimization will help.

		Linus
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Wed Oct 19 11:03:06 2005

This archive was generated by hypermail 2.1.8 : 2005-10-19 11:03:09 EST