From: "Carlos R. Mafra" <crmafra2@gmail.com>
To: git@vger.kernel.org
Subject: Performance issue of 'git branch'
Date: Thu, 23 Jul 2009 01:59:14 +0200 [thread overview]
Message-ID: <20090722235914.GA13150@Pilar.aei.mpg.de> (raw)
Hi,
When I run 'git branch' in the linux-2.6 repo I think it takes
too long to finish (with cold cache):
[mafra@Pilar:linux-2.6]$ time git branch
27-stable
28-stable
29-stable
30-stable
dev-private
* master
option
sparse
stern
0.00user 0.05system 0:05.73elapsed 1%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (209major+1380minor)pagefaults 0swaps
This is with git 1.6.4.rc1.10.g2a67 and the kernel is 2.6.31-rc3+. The
machine is a 64bit Vaio laptop which is 1+ year old (so it is not "slow").
Repeating the command a second time takes basically zero seconds, but
this is more or less what I would expect in the first time too.
I use git to track linux-2.6 for 2 years now, and I remember that
'git branch' is slow for quite some time, so it is not a regression
or something. It is just now that I took the courage to report this
small issue.
I did a 'strace' and this is where it spent most of the time:
1248301060.654911 open(".git/refs/heads/sparse", O_RDONLY) = 6
1248301060.654985 read(6, "60afdf6a4065a170ad829b4d79a86ec0"..., 255) = 41
1248301060.655056 read(6, "", 214) = 0
1248301060.655116 close(6) = 0
1248301060.680754 lstat(".git/refs/heads/stern", 0x7fff80bfa8d0) = -1 ENOENT (No such file or directory)
1248301064.018491 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
1248301064.018641 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f409ffa7000
1248301064.018722 write(1, " 27-stable\33[m\n", 15) = 15
I don't know why .git/refs/heads/stern does not exist and why it takes
so long with it. That branch is functional ('git checkout stern' succeeds),
as well as all the others. But strangely .git/refs/heads/ contains only
[mafra@Pilar:linux-2.6]$ ls .git/refs/heads/
dev-private master sparse
which, apart from "master", are the last branches that I created.
I occasionally run 'git gc --aggressive --prune" to optimize the repo,
but other than that I don't do anything fancy, just 'pull' almost
every day and 'bisect' (which is becoming a rare event now :-)
So I would like to ask what should I do to recover the missing files
in .git/refs/heads/ (which apparently is the cause for my issue) and
how I can avoid losing them in the first place.
Also, is there a way to "fix" the 4-secs pause in that lstat() in
case the files in .git/refs/heads/ get lost again?
Thanks in advance,
Carlos
next reply other threads:[~2009-07-23 0:00 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-22 23:59 Carlos R. Mafra [this message]
2009-07-23 0:21 ` Performance issue of 'git branch' Linus Torvalds
2009-07-23 0:51 ` Linus Torvalds
2009-07-23 0:55 ` Linus Torvalds
2009-07-23 2:02 ` Carlos R. Mafra
2009-07-23 2:28 ` Linus Torvalds
2009-07-23 12:42 ` Jakub Narebski
2009-07-23 14:45 ` Carlos R. Mafra
2009-07-23 16:25 ` Linus Torvalds
2009-07-23 1:22 ` Carlos R. Mafra
2009-07-23 2:20 ` Linus Torvalds
2009-07-23 2:23 ` Linus Torvalds
2009-07-23 3:08 ` Linus Torvalds
2009-07-23 3:21 ` Linus Torvalds
2009-07-23 17:47 ` Tony Finch
2009-07-23 18:57 ` Linus Torvalds
2009-07-23 22:48 ` Newton-Raphson, was " Tony Finch
2009-07-23 23:24 ` Johannes Schindelin
2009-07-23 23:50 ` Tony Finch
2009-07-24 0:43 ` Johannes Schindelin
2009-07-23 3:18 ` Carlos R. Mafra
2009-07-23 3:27 ` Carlos R. Mafra
2009-07-23 3:40 ` Carlos R. Mafra
2009-07-23 3:47 ` Linus Torvalds
2009-07-23 4:10 ` Linus Torvalds
2009-07-23 5:13 ` Junio C Hamano
2009-07-23 5:17 ` Carlos R. Mafra
2009-07-23 4:40 ` Junio C Hamano
2009-07-23 5:36 ` Linus Torvalds
2009-07-23 5:52 ` Junio C Hamano
2009-07-23 6:04 ` Junio C Hamano
2009-07-23 17:19 ` Linus Torvalds
2009-07-23 16:07 ` Carlos R. Mafra
2009-07-23 16:19 ` Linus Torvalds
2009-07-23 16:53 ` Carlos R. Mafra
2009-07-23 19:05 ` Linus Torvalds
2009-07-23 19:13 ` Linus Torvalds
2009-07-23 19:55 ` Carlos R. Mafra
2009-07-24 20:36 ` Linus Torvalds
2009-07-24 20:47 ` Linus Torvalds
2009-07-24 21:21 ` Linus Torvalds
2009-07-24 22:13 ` Linus Torvalds
2009-07-24 22:18 ` david
2009-07-24 22:42 ` Linus Torvalds
2009-07-24 22:46 ` david
2009-07-25 2:39 ` Linus Torvalds
2009-07-25 2:53 ` Daniel Barkalow
2009-08-07 4:21 ` Jeff King
2009-07-24 22:54 ` Theodore Tso
2009-07-24 22:59 ` Shawn O. Pearce
2009-07-24 23:28 ` Junio C Hamano
2009-07-26 17:07 ` Avi Kivity
2009-07-26 17:16 ` Johannes Schindelin
2009-07-24 23:46 ` Carlos R. Mafra
2009-07-25 0:41 ` Carlos R. Mafra
2009-07-25 18:04 ` Linus Torvalds
2009-07-25 18:57 ` Timo Hirvonen
2009-07-25 19:06 ` Reece Dunn
2009-07-25 20:31 ` Mike Hommey
2009-07-25 21:02 ` Linus Torvalds
2009-07-25 21:13 ` Linus Torvalds
2009-07-25 23:23 ` Johannes Schindelin
2009-07-26 4:49 ` Linus Torvalds
2009-07-26 16:29 ` Theodore Tso
2009-07-26 7:54 ` Mike Hommey
2009-07-26 10:16 ` Johannes Schindelin
2009-07-26 10:23 ` demerphq
2009-07-26 10:27 ` demerphq
2009-07-25 21:04 ` Carlos R. Mafra
2009-07-23 16:48 ` Anders Kaseorg
2009-07-23 19:03 ` Carlos R. Mafra
2009-07-23 0:23 ` SZEDER Gábor
2009-07-23 2:25 ` Carlos R. Mafra
-- strict thread matches above, loose matches on Subject: below --
2009-07-26 23:21 George Spelvin
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090722235914.GA13150@Pilar.aei.mpg.de \
--to=crmafra2@gmail.com \
--cc=git@vger.kernel.org \
/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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).