Re: gitk performance questions/issues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Mon, 13 Aug 2007, David Tweed wrote:
> 
> 1.  With gitk --all -n 256 on my repo it consistently
> takes 12s for the window to appear and 21s for the
> "I'm working" cursor to change to a normal cursor.

There is something seriously wrong there.

For me, on the kernel archive (which is much bigger than yours), the 
window appears immediately, and the "working cursor" takes about two 
seconds to disappear.

> This is on a dual Xeon machine, /proc/cpuinfo
> excerpt
> 
> model name      :   Intel(R) Xeon(TM) CPU 3.00GHz
> stepping        : 3
> cpu MHz         : 2992.496
> cache size      : 2048 KB

Your CPU is fast enough..

> running x86-64 Fedora 7, packed repo has a 12M
> .git dir.

.. and you're apparently fully packed, and do not even have all that big a 
repository.

So:

> Is this the expected start-up time for such a
> configuration?

Absolutely not.

> The output of
>
> time git-rev-list --parents --topo-order --all>/dev/null
>
> is
> 
> real    0m0.048s
> user    0m0.044s
> sys     0m0.005s

Ok, so it's not the revision generation that takes time. 

> 2. Startup time isn't an excessive problem. However,
> I often don't seem to be getting the "diff with parent"
> being displayed once I click on the another commit. If
> I click on several in sequence I get the error
> message
> 
> "error getting diffs: couldn't fork child process: not enough memory"

You have some *serious* problem somewhere. I think your tcl/tk is screwed 
up somehow. 

Alternatively, maybe your repo has some odd structure (do you have tons 
and tons of branches or tags?) and "gitk" ends up having some problem with 
that. What does

	git rev-parse --all | wc -l

say? Various git tools have had performance problems with thousands of 
branches or tags in the past.

One thing to try: I think that "git gc" back in the 1.5.2.2 days didn't 
pack branches by default - and if you have lots and lots of branches, you 
should try to make sure that they are packed, using

	git pack-refs --all --prune

(newer git versions will do this automatically in "git gc" - while 
v1.5.2.2 will only pack the tags by default, iirc).

> The diffs are relatively small (consecutive commits
> are generated hourly automatically) and a command
> line git-diff generates them instantly.

Yeah, it sounds like git itself has no problems, and it's literally gitk 
that shows some strange behaviour.

> 3. Is "gitk --all -n 256" the best way to say "show me
> relatively recent stuff" or should I be using different
> options for limiting things?

That's a perfectly good thing to do. You don't need the "-n", you can 
just do "-256". That said, if you actually want commits to be in date 
order, use

	gitk -d --all -256

instead, which tells gitk to use "--date-order" instead, which is often 
nicer (the graph ends up being a bit messier, but it gives you a more 
correct view of relative dates when you have multiple branches!

		Linus
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux