here's another possibly stupid question.
Setup/background: distributed kernel testing cluster, there's a central
box with a git repo of the kernel, and lots of of testboxes that track
that repo over ssh transport. In each "iteration" a random kernel config
is generated, built and booted, and the booted up kernel is checked.
Performance of each iteration matters to total testing throughput, so i
try to optimize the critical path.
Problem: i noticed that git-fetch is a tad slow:
titan:~/tip> time git-fetch
real 0m2.372s
user 0m0.814s
sys 0m0.951s
There are hundreds of branches, so i thought fetching a single branch
alone would improve things:
titan:~/tip> time git-fetch origin master
real 0m0.942s
user 0m0.285s
sys 0m0.109s
But that's still slow - so i use a (lame) ad-hoc script instead:
titan:~/tip> time tip-fetch
real 0m0.246s
user 0m0.024s
sys 0m0.019s
... which ssh's to the repo to check tip/master by hand:
HEAD=$(git-log -1 --pretty=format:"%H" HEAD)
RHEAD=$(ssh server "cd tip; git-log master -1 --pretty=format:'%H'")
[ "$RHEAD" != "$HEAD" ] && {
[...]
}
... which script is lame/expensive on multiple levels but still is much
faster.
I'm wondering, am i missing something obvious? It seems most of the
overhead is local CPU overhead, so it's something in Git's domain and
not the expense of the ssh protocol. (which expense should be about 200
msecs)
Ingo
--
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