* Slow "git rev-list origin/master --not --all" or "git fetch" slow when downloading nothing
@ 2008-11-05 9:38 Santi Béjar
2008-11-05 17:32 ` Re* " Junio C Hamano
2008-11-05 17:37 ` Linus Torvalds
0 siblings, 2 replies; 5+ messages in thread
From: Santi Béjar @ 2008-11-05 9:38 UTC (permalink / raw)
To: Git Mailing List
Hi *,
In cold cache "git rev-list origin/master --not --all" is slow
reading many files:
cold cache:
$ /usr/bin/time git rev-list origin/master --not --all
0.03user 0.02system 0:04.57elapsed 1%CPU (0avgtext+0avgdata 0maxresident)k
77848inputs+0outputs (410major+1798minor)pagefaults 0swaps
hot cache:
$ /usr/bin/time git rev-list origin/master --not --all
0.01user 0.00system 0:00.06elapsed 31%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+2207minor)pagefaults 0swaps
I think that, in this particular case (when the arguments are the tips
of some of the branches), this should not read that many files.
Moreover, this is used in "git fetch" (git rev-list --quiet --objects
<list_of_remote_sha1> --not --all) to detect if all the objects are
reachable from the local repository. When nothing has changed in the
remote repository (so refs/<remote>/* has all the remote refs) the
"git fetch" could be almost instantaneous (even in coldcache), but
currently it is not because of the above.
Thanks,
Santi
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re* Slow "git rev-list origin/master --not --all" or "git fetch" slow when downloading nothing
2008-11-05 9:38 Slow "git rev-list origin/master --not --all" or "git fetch" slow when downloading nothing Santi Béjar
@ 2008-11-05 17:32 ` Junio C Hamano
2008-11-05 17:37 ` Linus Torvalds
1 sibling, 0 replies; 5+ messages in thread
From: Junio C Hamano @ 2008-11-05 17:32 UTC (permalink / raw)
To: Santi Béjar; +Cc: Git Mailing List
"Santi Béjar" <santi@agolina.net> writes:
> In cold cache "git rev-list origin/master --not --all" is slow
> reading many files:
>
> cold cache:
> $ /usr/bin/time git rev-list origin/master --not --all
> 0.03user 0.02system 0:04.57elapsed 1%CPU (0avgtext+0avgdata 0maxresident)k
> 77848inputs+0outputs (410major+1798minor)pagefaults 0swaps
>
> hot cache:
> $ /usr/bin/time git rev-list origin/master --not --all
> 0.01user 0.00system 0:00.06elapsed 31%CPU (0avgtext+0avgdata 0maxresident)k
> 0inputs+0outputs (0major+2207minor)pagefaults 0swaps
>
> I think that, in this particular case (when the arguments are the tips
> of some of the branches), this should not read that many files.
What kind of "many files" are you making git read? Do you have too many
unpacked refs? Too many loose objects?
> ... When nothing has changed in the remote repository (so
> refs/<remote>/* has all the remote refs) the "git fetch" could be almost
> instantaneous (even in coldcache),...
You at least need to read:
- what "--all" refs point at; to find this out, you need to read all
unpacked refs files, and one packed-refs file;
- commit objects that these refs point at; to cull refs that do not point
at committish and dereference tag objects that point at commit, you
need to read these objects (either loose objects or in packs);
- commit objects on the ancestry graph starting from the commit pointed
at by origin/master and the commits from "--all" refs, until your
traversal from origin/master hit one of the ancestors of "--all" refs.
I noticed that when you "git pack-refs" (or "git gc"), we do not remove
the leading directories of loose refs that become empty because of
pruning. This can cause many opendir() when you used to have too many
hierachy of refs even after packing them.
dir.c | 13 +++++++++----
pack-refs.c | 5 +++++
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git c/dir.c w/dir.c
index 0131983..7241631 100644
--- c/dir.c
+++ w/dir.c
@@ -779,7 +779,12 @@ int is_inside_dir(const char *dir)
return get_relative_cwd(buffer, sizeof(buffer), dir) != NULL;
}
-int remove_dir_recursively(struct strbuf *path, int only_empty)
+/*
+ * option:
+ * 1: remove empty directory;
+ * 2: remove empty subdirectories, but not the directory itself
+ */
+int remove_dir_recursively(struct strbuf *path, int option)
{
DIR *dir = opendir(path->buf);
struct dirent *e;
@@ -803,9 +808,9 @@ int remove_dir_recursively(struct strbuf *path, int only_empty)
if (lstat(path->buf, &st))
; /* fall thru */
else if (S_ISDIR(st.st_mode)) {
- if (!remove_dir_recursively(path, only_empty))
+ if (!remove_dir_recursively(path, !!option))
continue; /* happy */
- } else if (!only_empty && !unlink(path->buf))
+ } else if (!option && !unlink(path->buf))
continue; /* happy, too */
/* path too long, stat fails, or non-directory still exists */
@@ -815,7 +820,7 @@ int remove_dir_recursively(struct strbuf *path, int only_empty)
closedir(dir);
strbuf_setlen(path, original_len);
- if (!ret)
+ if (!ret && option != 2)
ret = rmdir(path->buf);
return ret;
}
diff --git c/pack-refs.c w/pack-refs.c
index 2c76fb1..30fbae8 100644
--- c/pack-refs.c
+++ w/pack-refs.c
@@ -2,6 +2,7 @@
#include "refs.h"
#include "tag.h"
#include "pack-refs.h"
+#include "dir.h"
struct ref_to_prune {
struct ref_to_prune *next;
@@ -73,10 +74,14 @@ static void prune_ref(struct ref_to_prune *r)
static void prune_refs(struct ref_to_prune *r)
{
+ struct strbuf refs = STRBUF_INIT;
+
+ strbuf_addstr(&refs, git_path("refs"));
while (r) {
prune_ref(r);
r = r->next;
}
+ remove_dir_recursively(&refs, 2);
}
static struct lock_file packed;
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: Slow "git rev-list origin/master --not --all" or "git fetch" slow when downloading nothing
2008-11-05 9:38 Slow "git rev-list origin/master --not --all" or "git fetch" slow when downloading nothing Santi Béjar
2008-11-05 17:32 ` Re* " Junio C Hamano
@ 2008-11-05 17:37 ` Linus Torvalds
2008-11-05 21:37 ` Santi Béjar
1 sibling, 1 reply; 5+ messages in thread
From: Linus Torvalds @ 2008-11-05 17:37 UTC (permalink / raw)
To: Santi Béjar; +Cc: Git Mailing List
On Wed, 5 Nov 2008, Santi Béjar wrote:
>
> In cold cache "git rev-list origin/master --not --all" is slow
> reading many files:
Hmm. It sounds like you possibly don't have packed refs.
Have you done "git gc" on that thing lately? What does "strace" say?
Linus
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Slow "git rev-list origin/master --not --all" or "git fetch" slow when downloading nothing
2008-11-05 17:37 ` Linus Torvalds
@ 2008-11-05 21:37 ` Santi Béjar
2008-11-05 22:08 ` Linus Torvalds
0 siblings, 1 reply; 5+ messages in thread
From: Santi Béjar @ 2008-11-05 21:37 UTC (permalink / raw)
To: Linus Torvalds, Junio C Hamano; +Cc: Git Mailing List
[-- Attachment #1: Type: text/plain, Size: 3044 bytes --]
On Wed, Nov 5, 2008 at 6:37 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
>
> On Wed, 5 Nov 2008, Santi Béjar wrote:
>>
>> In cold cache "git rev-list origin/master --not --all" is slow
>> reading many files:
Sorry, s/files/data/
>
> Hmm. It sounds like you possibly don't have packed refs.
They are packed up to v2.6.27.
>
> Have you done "git gc" on that thing lately? What does "strace" say?
>
> Linus
>
It is a recently cloned linux-2.6 repo, with 10 or so packs and 70
loose objects. It spends a good fraction in:
brk(0x8318000) = 0x8318000
and
mmap2(NULL, 33554432, PROT_READ, MAP_PRIVATE, 4, 0x2000) = 0xb2227000
(strace attatched).
I should have given more info:
It is an old computer (Pentium 4 2.5 GHz)
and the repo is on an external USB drive.
On Wed, Nov 5, 2008 at 6:32 PM, Junio C Hamano <gitster@pobox.com> wrote:
> "Santi Béjar" <santi@agolina.net> writes:
>
>> In cold cache "git rev-list origin/master --not --all" is slow
>> reading many files:
>>
>> cold cache:
>> $ /usr/bin/time git rev-list origin/master --not --all
>> 0.03user 0.02system 0:04.57elapsed 1%CPU (0avgtext+0avgdata 0maxresident)k
>> 77848inputs+0outputs (410major+1798minor)pagefaults 0swaps
>>
>> hot cache:
>> $ /usr/bin/time git rev-list origin/master --not --all
>> 0.01user 0.00system 0:00.06elapsed 31%CPU (0avgtext+0avgdata 0maxresident)k
>> 0inputs+0outputs (0major+2207minor)pagefaults 0swaps
>>
>> I think that, in this particular case (when the arguments are the tips
>> of some of the branches), this should not read that many files.
>
> What kind of "many files" are you making git read? Do you have too many
> unpacked refs? Too many loose objects?
>
See above.
>> ... When nothing has changed in the remote repository (so
>> refs/<remote>/* has all the remote refs) the "git fetch" could be almost
>> instantaneous (even in coldcache),...
>
> You at least need to read:
>
> - what "--all" refs point at; to find this out, you need to read all
> unpacked refs files, and one packed-refs file;
>
> - commit objects that these refs point at; to cull refs that do not point
> at committish and dereference tag objects that point at commit, you
> need to read these objects (either loose objects or in packs);
>
> - commit objects on the ancestry graph starting from the commit pointed
> at by origin/master and the commits from "--all" refs, until your
> traversal from origin/master hit one of the ancestors of "--all" refs.
Yes, in the general case it is, but in this case we can bypass the
checking of the --all refs after checking if all the given refs are
equal to some of the --all refs.
For me the main thing is the slow "git fetch" when downloading
nothing. I think it was/is faster without the quickfetch path (at
least in the coldcache case).
Maybe we can just check if the new fetched refs are already the tips
of the corresponding remote branch.
Santi
[-- Attachment #2: git-rev-list.strace --]
[-- Type: application/octet-stream, Size: 36810 bytes --]
execve("/home/santi/usr/bin/git", ["git", "rev-list", "origin/master", "--not", "--all"], [/* 58 vars */]) = 0
brk(0) = 0x8432000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ee5000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/tls/i686/sse2/cmov/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/tls/i686/sse2/cmov", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/tls/i686/sse2/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/tls/i686/sse2", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/tls/i686/cmov/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/tls/i686/cmov", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/tls/i686/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/tls/i686", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/tls/sse2/cmov/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/tls/sse2/cmov", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/tls/sse2/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/tls/sse2", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/tls/cmov/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/tls/cmov", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/tls/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/tls", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/i686/sse2/cmov/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/i686/sse2/cmov", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/i686/sse2/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/i686/sse2", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/i686/cmov/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/i686/cmov", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/i686/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/i686", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/sse2/cmov/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/sse2/cmov", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/sse2/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/sse2", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/cmov/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib/cmov", 0xbf9022f4) = -1 ENOENT (No such file or directory)
open("/home/santi/usr/lib/libcurl-gnutls.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/santi/usr/lib", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=77540, ...}) = 0
mmap2(NULL, 77540, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7ed2000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libcurl-gnutls.so.4", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340@\0\0004\0\0\0\310"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=229672, ...}) = 0
mmap2(NULL, 228860, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e9a000
mmap2(0xb7ed1000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x37) = 0xb7ed1000
close(3) = 0
open("/home/santi/usr/lib/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libz.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\30\0\0004\0\0\0\24"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=81012, ...}) = 0
mmap2(NULL, 83740, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e85000
mmap2(0xb7e99000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0xb7e99000
close(3) = 0
open("/home/santi/usr/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260e\1\0004\0\0\0\4"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1413540, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e84000
mmap2(NULL, 1418864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7d29000
mmap2(0xb7e7e000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x155) = 0xb7e7e000
mmap2(0xb7e81000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7e81000
close(3) = 0
open("/home/santi/usr/lib/libidn.so.11", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libidn.so.11", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\37\0\0004\0\0\0p"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=200280, ...}) = 0
mmap2(NULL, 199100, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7cf8000
mmap2(0xb7d28000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x30) = 0xb7d28000
close(3) = 0
open("/home/santi/usr/lib/libldap_r-2.4.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libldap_r-2.4.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\266\0\0004\0\0\0l"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=265124, ...}) = 0
mmap2(NULL, 272584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7cb5000
mmap2(0xb7cf5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3f) = 0xb7cf5000
mmap2(0xb7cf7000, 2248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7cf7000
close(3) = 0
open("/home/santi/usr/lib/librt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/librt.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\31\0\0004\0\0\0\240"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=30624, ...}) = 0
mmap2(NULL, 33360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7cac000
mmap2(0xb7cb3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0xb7cb3000
close(3) = 0
open("/home/santi/usr/lib/libgssapi_krb5.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libgssapi_krb5.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`C\0\0004\0\0\0t"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=168916, ...}) = 0
mmap2(NULL, 171740, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7c82000
mmap2(0xb7cab000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28) = 0xb7cab000
close(3) = 0
open("/home/santi/usr/lib/libgnutls.so.26", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libgnutls.so.26", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0pz\1\0004\0\0\0("..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=642912, ...}) = 0
mmap2(NULL, 641704, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7be5000
mmap2(0xb7c7c000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x97) = 0xb7c7c000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7be4000
open("/home/santi/usr/lib/liblber-2.4.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/liblber-2.4.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340(\0\0004\0\0\0\f"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=51228, ...}) = 0
mmap2(NULL, 50016, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7bd7000
mmap2(0xb7be3000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc) = 0xb7be3000
close(3) = 0
open("/home/santi/usr/lib/libresolv.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libresolv.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@!\0\0004\0\0\0\310"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=67408, ...}) = 0
mmap2(NULL, 80068, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7bc3000
mmap2(0xb7bd3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf) = 0xb7bd3000
mmap2(0xb7bd5000, 6340, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7bd5000
close(3) = 0
open("/home/santi/usr/lib/libsasl2.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libsasl2.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0207\0\0004\0\0\0p"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=91048, ...}) = 0
mmap2(NULL, 93932, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7bac000
mmap2(0xb7bc2000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15) = 0xb7bc2000
close(3) = 0
open("/home/santi/usr/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000H\0\0004\0\0\0\330"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=116414, ...}) = 0
mmap2(NULL, 98784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7b93000
mmap2(0xb7ba8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14) = 0xb7ba8000
mmap2(0xb7baa000, 4576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7baa000
close(3) = 0
open("/home/santi/usr/lib/libkrb5.so.3", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libkrb5.so.3", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\27\1\0004\0\0\0\374"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=607284, ...}) = 0
mmap2(NULL, 606056, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7aff000
mmap2(0xb7b91000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x92) = 0xb7b91000
close(3) = 0
open("/home/santi/usr/lib/libk5crypto.so.3", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libk5crypto.so.3", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0;\0\0004\0\0\0\210"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=147392, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7afe000
mmap2(NULL, 146848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ada000
mmap2(0xb7afd000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23) = 0xb7afd000
close(3) = 0
open("/home/santi/usr/lib/libcom_err.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libcom_err.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\16\0\0004\0\0\0\324"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=8676, ...}) = 0
mmap2(NULL, 11564, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ad7000
mmap2(0xb7ad9000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7ad9000
close(3) = 0
open("/home/santi/usr/lib/libkrb5support.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libkrb5support.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\26\0\0004\0\0\0\254"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=27876, ...}) = 0
mmap2(NULL, 30700, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7acf000
mmap2(0xb7ad6000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0xb7ad6000
close(3) = 0
open("/home/santi/usr/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libdl.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\n\0\0004\0\0\0H"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=9680, ...}) = 0
mmap2(NULL, 12412, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7acb000
mmap2(0xb7acd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7acd000
close(3) = 0
open("/home/santi/usr/lib/libkeyutils.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libkeyutils.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\t\0\0004\0\0\0\210"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=5744, ...}) = 0
mmap2(NULL, 8628, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ac8000
mmap2(0xb7aca000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7aca000
close(3) = 0
open("/home/santi/usr/lib/libtasn1.so.3", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libtasn1.so.3", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\21\0\0004\0\0\0\4"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=59708, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ac7000
mmap2(NULL, 63012, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ab7000
mmap2(0xb7ac6000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe) = 0xb7ac6000
close(3) = 0
open("/home/santi/usr/lib/libgpg-error.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libgpg-error.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\6\0\0004\0\0\0\214"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=11556, ...}) = 0
mmap2(NULL, 14568, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ab3000
mmap2(0xb7ab6000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0xb7ab6000
close(3) = 0
open("/home/santi/usr/lib/libgcrypt.so.11", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libgcrypt.so.11", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240D\0\0004\0\0\0\314"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=425220, ...}) = 0
mmap2(NULL, 424676, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7a4b000
mmap2(0xb7ab1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x66) = 0xb7ab1000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7a4a000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7a49000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7a496d0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb7e7e000, 4096, PROT_READ) = 0
munmap(0xb7ed2000, 77540) = 0
set_tid_address(0xb7a49718) = 3707
set_robust_list(0xb7a49720, 0xc) = 0
futex(0xbf902b90, FUTEX_WAKE_PRIVATE, 1) = 0
rt_sigaction(SIGRTMIN, {0xb7b972e0, [], SA_SIGINFO}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0xb7b97720, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
uname({sys="Linux", node="bela", ...}) = 0
brk(0) = 0x8432000
brk(0x8453000) = 0x8453000
getcwd("/media/disk-67cd8aa5/santi/linux-2.6/linux-2.6"..., 4096) = 47
stat64(".git", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
access(".git/objects", X_OK) = 0
access(".git/refs", X_OK) = 0
lstat64(".git/HEAD", {st_mode=S_IFREG|0644, st_size=23, ...}) = 0
open(".git/HEAD", O_RDONLY|O_LARGEFILE) = 3
read(3, "ref: refs/heads/master\n"..., 255) = 23
read(3, ""..., 232) = 0
close(3) = 0
access("/home/santi/usr/stow/git/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
access("/home/santi/.gitconfig", R_OK) = 0
open("/home/santi/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=767, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ee4000
read(3, "[alias]\n\tco = checkout\n\twdiff = d"..., 4096) = 767
read(3, ""..., 4096) = 0
close(3) = 0
munmap(0xb7ee4000, 4096) = 0
stat64(".git", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open(".git/config", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=308, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ee4000
read(3, "[core]\n\trepositoryformatversion ="..., 4096) = 308
read(3, ""..., 4096) = 0
close(3) = 0
munmap(0xb7ee4000, 4096) = 0
access("/home/santi/usr/stow/git/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
access("/home/santi/.gitconfig", R_OK) = 0
open("/home/santi/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=767, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ee4000
read(3, "[alias]\n\tco = checkout\n\twdiff = d"..., 4096) = 767
read(3, ""..., 4096) = 0
close(3) = 0
munmap(0xb7ee4000, 4096) = 0
open(".git/config", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=308, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ee4000
read(3, "[core]\n\trepositoryformatversion ="..., 4096) = 308
read(3, ""..., 4096) = 0
close(3) = 0
munmap(0xb7ee4000, 4096) = 0
write(2, "trace: built-in: git 'rev-list' '"..., 64trace: built-in: git 'rev-list' 'origin/master' '--not' '--all'
) = 64
access("/home/santi/usr/stow/git/etc/gitconfig", R_OK) = -1 ENOENT (No such file or directory)
access("/home/santi/.gitconfig", R_OK) = 0
open("/home/santi/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=767, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ee4000
read(3, "[alias]\n\tco = checkout\n\twdiff = d"..., 4096) = 767
read(3, ""..., 4096) = 0
close(3) = 0
munmap(0xb7ee4000, 4096) = 0
open(".git/config", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=308, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ee4000
read(3, "[core]\n\trepositoryformatversion ="..., 4096) = 308
read(3, ""..., 4096) = 0
close(3) = 0
munmap(0xb7ee4000, 4096) = 0
lstat64(".git/origin/master", 0xbf90274c) = -1 ENOENT (No such file or directory)
open(".git/packed-refs", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=13887, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ee4000
read(3, "# pack-refs with: peeled \n5a97794"..., 4096) = 4096
read(3, "abc98fa8\nda0a81e98c06aa0d1e05b901"..., 4096) = 4096
read(3, "79c90b1a4ea2d2cebf4996743463b001 "..., 4096) = 4096
read(3, "e1a682d refs/tags/v2.6.13-rc6\n^6f"..., 4096) = 1599
read(3, ""..., 4096) = 0
close(3) = 0
munmap(0xb7ee4000, 4096) = 0
lstat64(".git/refs/origin/master", 0xbf90274c) = -1 ENOENT (No such file or directory)
lstat64(".git/refs/tags/origin/master", 0xbf90274c) = -1 ENOENT (No such file or directory)
lstat64(".git/refs/heads/origin/master", 0xbf90274c) = -1 ENOENT (No such file or directory)
lstat64(".git/refs/remotes/origin/master", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
open(".git/refs/remotes/origin/master", O_RDONLY|O_LARGEFILE) = 3
read(3, "75fa67706cce5272bcfc51ed646f2da21"..., 255) = 41
read(3, ""..., 214) = 0
close(3) = 0
lstat64(".git/refs/remotes/origin/master/HEAD", 0xbf90274c) = -1 ENOTDIR (Not a directory)
lstat64("origin/master", 0xbf9028b8) = -1 ENOENT (No such file or directory)
open(".git/objects/pack", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl64(3, F_GETFD) = 0x1 (flags FD_CLOEXEC)
getdents64(3, /* 22 entries */, 4096) = 1488
stat64(".git/objects/pack/pack-bf36358ff0885aead758e2cd657b1c1e751f6c7a.pack", {st_mode=S_IFREG|0444, st_size=1470047, ...}) = 0
stat64(".git/objects/pack/pack-8d0a99e2ff57fc40c4406baffa5396308857bac3.pack", {st_mode=S_IFREG|0644, st_size=235974410, ...}) = 0
stat64(".git/objects/pack/pack-fd6d49a2dcebff5ebc9d3cabb2af192f1a888629.pack", {st_mode=S_IFREG|0444, st_size=571172, ...}) = 0
stat64(".git/objects/pack/pack-679f80d06e2b143f46768b40c60f1a0e932d2391.pack", {st_mode=S_IFREG|0444, st_size=1052242, ...}) = 0
stat64(".git/objects/pack/pack-100a0cb059c82c62a233ca546cad599d288a5f50.pack", {st_mode=S_IFREG|0444, st_size=512497, ...}) = 0
stat64(".git/objects/pack/pack-6d01562b9062e40424b91cfd7d6d0e4709d61afd.pack", {st_mode=S_IFREG|0444, st_size=21214128, ...}) = 0
stat64(".git/objects/pack/pack-fa231f47526c28d45f4b9dfcc748f3bf8bf7c903.pack", {st_mode=S_IFREG|0444, st_size=12296229, ...}) = 0
stat64(".git/objects/pack/pack-928e64c2130fbb419e6b8a5a4ec3f8bdb430a2bf.pack", {st_mode=S_IFREG|0444, st_size=1855723, ...}) = 0
stat64(".git/objects/pack/pack-bd9d6871fbd50455b874ea557e38bd4b07f55fa6.pack", {st_mode=S_IFREG|0444, st_size=1312509, ...}) = 0
stat64(".git/objects/pack/pack-a7f63979c25640c85c5e6e86a57d4e34eb792a4b.pack", {st_mode=S_IFREG|0444, st_size=2580134, ...}) = 0
getdents64(3, /* 0 entries */, 4096) = 0
close(3) = 0
open(".git/objects/info/alternates", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open(".git/objects/pack/pack-fd6d49a2dcebff5ebc9d3cabb2af192f1a888629.idx", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=6056, ...}) = 0
mmap2(NULL, 6056, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7ee3000
close(3) = 0
open(".git/objects/pack/pack-fd6d49a2dcebff5ebc9d3cabb2af192f1a888629.pack", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=571172, ...}) = 0
fcntl64(3, F_GETFD) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
read(3, "PACK\0\0\0\2\0\0\0\262"..., 12) = 12
_llseek(3, 571152, [571152], SEEK_SET) = 0
read(3, ":\223#\330jF\305\217D\342\16\325fz\357\4H\261\n?"..., 20) = 20
mmap2(NULL, 571172, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb79bd000
open(".git/info/grafts", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open(".git/shallow", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open(".git/refs", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getdents64(4, /* 6 entries */, 4096) = 168
stat64(".git/refs/remotes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open(".git/refs/remotes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 5
fstat64(5, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getdents64(5, /* 3 entries */, 4096) = 80
stat64(".git/refs/remotes/origin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open(".git/refs/remotes/origin", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 6
fstat64(6, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getdents64(6, /* 4 entries */, 4096) = 104
stat64(".git/refs/remotes/origin/HEAD", {st_mode=S_IFREG|0644, st_size=32, ...}) = 0
lstat64(".git/refs/remotes/origin/HEAD", {st_mode=S_IFREG|0644, st_size=32, ...}) = 0
open(".git/refs/remotes/origin/HEAD", O_RDONLY|O_LARGEFILE) = 7
read(7, "ref: refs/remotes/origin/master\n"..., 255) = 32
read(7, ""..., 223) = 0
close(7) = 0
lstat64(".git/refs/remotes/origin/master", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
open(".git/refs/remotes/origin/master", O_RDONLY|O_LARGEFILE) = 7
read(7, "75fa67706cce5272bcfc51ed646f2da21"..., 255) = 41
read(7, ""..., 214) = 0
close(7) = 0
stat64(".git/refs/remotes/origin/master", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
lstat64(".git/refs/remotes/origin/master", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
open(".git/refs/remotes/origin/master", O_RDONLY|O_LARGEFILE) = 7
read(7, "75fa67706cce5272bcfc51ed646f2da21"..., 255) = 41
read(7, ""..., 214) = 0
close(7) = 0
getdents64(6, /* 0 entries */, 4096) = 0
close(6) = 0
getdents64(5, /* 0 entries */, 4096) = 0
close(5) = 0
stat64(".git/refs/tags", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open(".git/refs/tags", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 5
fstat64(5, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getdents64(5, /* 5 entries */, 4096) = 144
stat64(".git/refs/tags/v2.6.28-rc2", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
lstat64(".git/refs/tags/v2.6.28-rc2", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
open(".git/refs/tags/v2.6.28-rc2", O_RDONLY|O_LARGEFILE) = 6
read(6, "5eb14db1f80df4eb0ecb0976e47e8e287"..., 255) = 41
read(6, ""..., 214) = 0
close(6) = 0
stat64(".git/refs/tags/v2.6.28-rc1", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
lstat64(".git/refs/tags/v2.6.28-rc1", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
open(".git/refs/tags/v2.6.28-rc1", O_RDONLY|O_LARGEFILE) = 6
read(6, "cb50773491b0066d0e55f31f8875d5678"..., 255) = 41
read(6, ""..., 214) = 0
close(6) = 0
stat64(".git/refs/tags/v2.6.28-rc3", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
lstat64(".git/refs/tags/v2.6.28-rc3", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
open(".git/refs/tags/v2.6.28-rc3", O_RDONLY|O_LARGEFILE) = 6
read(6, "31cb515c75388d457c2f318a0ee9606b3"..., 255) = 41
read(6, ""..., 214) = 0
close(6) = 0
getdents64(5, /* 0 entries */, 4096) = 0
close(5) = 0
stat64(".git/refs/stash", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
lstat64(".git/refs/stash", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
open(".git/refs/stash", O_RDONLY|O_LARGEFILE) = 5
read(5, "a3ef7d8e3f6ad58a9385fa485619818da"..., 255) = 41
read(5, ""..., 214) = 0
close(5) = 0
stat64(".git/refs/heads", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open(".git/refs/heads", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 5
fstat64(5, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getdents64(5, /* 3 entries */, 4096) = 80
stat64(".git/refs/heads/master", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
lstat64(".git/refs/heads/master", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0
open(".git/refs/heads/master", O_RDONLY|O_LARGEFILE) = 6
read(6, "2bbb5fcfa66befc5193aa92a60318da0c"..., 255) = 41
read(6, ""..., 214) = 0
close(6) = 0
getdents64(5, /* 0 entries */, 4096) = 0
close(5) = 0
getdents64(4, /* 0 entries */, 4096) = 0
close(4) = 0
open(".git/objects/pack/pack-100a0cb059c82c62a233ca546cad599d288a5f50.idx", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=9052, ...}) = 0
mmap2(NULL, 9052, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7ee0000
close(4) = 0
open(".git/objects/pack/pack-679f80d06e2b143f46768b40c60f1a0e932d2391.idx", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=14512, ...}) = 0
mmap2(NULL, 14512, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7edc000
close(4) = 0
open(".git/objects/pack/pack-928e64c2130fbb419e6b8a5a4ec3f8bdb430a2bf.idx", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=32012, ...}) = 0
mmap2(NULL, 32012, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7ed4000
close(4) = 0
open(".git/objects/pack/pack-a7f63979c25640c85c5e6e86a57d4e34eb792a4b.idx", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=48700, ...}) = 0
mmap2(NULL, 48700, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb79b1000
close(4) = 0
open(".git/objects/pack/pack-bf36358ff0885aead758e2cd657b1c1e751f6c7a.idx", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=27252, ...}) = 0
mmap2(NULL, 27252, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb79aa000
close(4) = 0
open(".git/objects/pack/pack-bd9d6871fbd50455b874ea557e38bd4b07f55fa6.idx", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=29492, ...}) = 0
mmap2(NULL, 29492, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb79a2000
close(4) = 0
open(".git/objects/pack/pack-fa231f47526c28d45f4b9dfcc748f3bf8bf7c903.idx", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=288184, ...}) = 0
mmap2(NULL, 288184, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb795b000
close(4) = 0
open(".git/objects/pack/pack-6d01562b9062e40424b91cfd7d6d0e4709d61afd.idx", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=592992, ...}) = 0
mmap2(NULL, 592992, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb78ca000
close(4) = 0
open(".git/objects/pack/pack-8d0a99e2ff57fc40c4406baffa5396308857bac3.idx", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=26344676, ...}) = 0
mmap2(NULL, 26344676, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb5faa000
close(4) = 0
access(".git/objects/2b/bb5fcfa66befc5193aa92a60318da0c0ff34e8", F_OK) = 0
open(".git/objects/2b/bb5fcfa66befc5193aa92a60318da0c0ff34e8", O_RDONLY|O_LARGEFILE|O_NOATIME) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=541, ...}) = 0
mmap2(NULL, 541, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7ed3000
close(4) = 0
munmap(0xb7ed3000, 541) = 0
access(".git/objects/a3/ef7d8e3f6ad58a9385fa485619818dae3922a0", F_OK) = 0
open(".git/objects/a3/ef7d8e3f6ad58a9385fa485619818dae3922a0", O_RDONLY|O_LARGEFILE|O_NOATIME) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=205, ...}) = 0
mmap2(NULL, 205, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7ed3000
close(4) = 0
munmap(0xb7ed3000, 205) = 0
open(".git/objects/pack/pack-8d0a99e2ff57fc40c4406baffa5396308857bac3.pack", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=235974410, ...}) = 0
fcntl64(4, F_GETFD) = 0
fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
read(4, "PACK\0\0\0\2\0\16[+"..., 12) = 12
_llseek(4, 235974390, [235974390], SEEK_SET) = 0
read(4, "\27CZ\275V\355lpOuS\305\22\275\243\227\304\205cp"..., 20) = 20
mmap2(NULL, 17870602, PROT_READ, MAP_PRIVATE, 4, 0xd000) = 0xb4e9f000
brk(0x8476000) = 0x8476000
open(".git/objects/pack/pack-fa231f47526c28d45f4b9dfcc748f3bf8bf7c903.pack", O_RDONLY|O_LARGEFILE) = 5
fstat64(5, {st_mode=S_IFREG|0444, st_size=12296229, ...}) = 0
fcntl64(5, F_GETFD) = 0
fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
read(5, "PACK\0\0\0\2\0\0(\16"..., 12) = 12
_llseek(5, 12296209, [12296209], SEEK_SET) = 0
read(5, "\271\262\313\312j\36F\250\0\354\320\203\2T\236\3060\376x\202"..., 20) = 20
mmap2(NULL, 12296229, PROT_READ, MAP_PRIVATE, 5, 0) = 0xb42e4000
open(".git/objects/pack/pack-bd9d6871fbd50455b874ea557e38bd4b07f55fa6.pack", O_RDONLY|O_LARGEFILE) = 6
fstat64(6, {st_mode=S_IFREG|0444, st_size=1312509, ...}) = 0
fcntl64(6, F_GETFD) = 0
fcntl64(6, F_SETFD, FD_CLOEXEC) = 0
read(6, "PACK\0\0\0\2\0\0\3\367"..., 12) = 12
_llseek(6, 1312489, [1312489], SEEK_SET) = 0
read(6, "\215\203\346:\223Y\10\222~DD\354\371\207mB>\364\34w"..., 20) = 20
mmap2(NULL, 1312509, PROT_READ, MAP_PRIVATE, 6, 0) = 0xb41a3000
open(".git/objects/pack/pack-679f80d06e2b143f46768b40c60f1a0e932d2391.pack", O_RDONLY|O_LARGEFILE) = 7
fstat64(7, {st_mode=S_IFREG|0444, st_size=1052242, ...}) = 0
fcntl64(7, F_GETFD) = 0
fcntl64(7, F_SETFD, FD_CLOEXEC) = 0
read(7, "PACK\0\0\0\2\0\0\1\340"..., 12) = 12
_llseek(7, 1052222, [1052222], SEEK_SET) = 0
read(7, "\332\ff~1U\203o\215x\370\220\311\311e\341\23\335\264\205"..., 20) = 20
mmap2(NULL, 1052242, PROT_READ, MAP_PRIVATE, 7, 0) = 0xb40a2000
access(".git/objects/c7/eadd8f7ec554d321443455b42b08b795cb620e", F_OK) = 0
mmap2(NULL, 33554432, PROT_READ, MAP_PRIVATE, 4, 0x2000) = 0xb20a2000
mmap2(NULL, 33554432, PROT_READ, MAP_PRIVATE, 4, 0x1000) = 0xb00a2000
mmap2(NULL, 33554432, PROT_READ, MAP_PRIVATE, 4, 0) = 0xae0a2000
access(".git/objects/a7/5952b72a0fff3031124003e62118111aed42c1", F_OK) = 0
open(".git/objects/a7/5952b72a0fff3031124003e62118111aed42c1", O_RDONLY|O_LARGEFILE|O_NOATIME) = 8
fstat64(8, {st_mode=S_IFREG|0444, st_size=340, ...}) = 0
mmap2(NULL, 340, PROT_READ, MAP_PRIVATE, 8, 0) = 0xae0a1000
close(8) = 0
munmap(0xae0a1000, 340) = 0
open(".git/objects/pack/pack-100a0cb059c82c62a233ca546cad599d288a5f50.pack", O_RDONLY|O_LARGEFILE) = 8
fstat64(8, {st_mode=S_IFREG|0444, st_size=512497, ...}) = 0
fcntl64(8, F_GETFD) = 0
fcntl64(8, F_SETFD, FD_CLOEXEC) = 0
read(8, "PACK\0\0\0\2\0\0\1\35"..., 12) = 12
_llseek(8, 512477, [512477], SEEK_SET) = 0
read(8, "w\241\203%~\306\337\223)\325\217\352\240`\206C\3679+\27"..., 20) = 20
access(".git/objects/ae/6884a9da56f8921e432e663b4ccb4a1851b2ea", F_OK) = 0
access(".git/objects/a7/5952b72a0fff3031124003e62118111aed42c1", F_OK) = 0
fstat64(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 0), ...}) = 0
close(1) = 0
exit_group(0) = ?
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Slow "git rev-list origin/master --not --all" or "git fetch" slow when downloading nothing
2008-11-05 21:37 ` Santi Béjar
@ 2008-11-05 22:08 ` Linus Torvalds
0 siblings, 0 replies; 5+ messages in thread
From: Linus Torvalds @ 2008-11-05 22:08 UTC (permalink / raw)
To: Santi Béjar; +Cc: Junio C Hamano, Git Mailing List
On Wed, 5 Nov 2008, Santi Béjar wrote:
> >
> > Hmm. It sounds like you possibly don't have packed refs.
>
> They are packed up to v2.6.27.
Yeah, your strace isn't at all horrible. You don't open very many files at
all, and you don't have any big directories.
The biggest cost when things are cold-cache is probably the seeking from
just opening all those index files.
> It is an old computer (Pentium 4 2.5 GHz) and the repo is on an external
> USB drive.
There should be basically no CPU spent on that load, so your computer is
fine. But I think the issue is the dog-slow IO on the USB drive,
especially since there are multiple pack-files and thus index files.
Your strace would be more interesting with "-Ttt", but much of the cost is
likely in the page faulting of the mmap'ed data, and none of that would
show up in the trace, except indirectly (ie just looking at the times
between the system calls).
> Yes, in the general case it is, but in this case we can bypass the
> checking of the --all refs after checking if all the given refs are
> equal to some of the --all refs.
I don't think we'll actually walk anything, because all commits will end
up being negative.
But we'll look up the objects for even the negative commits, yes. So we're
doing several "unnecessary" object lookups, and in that sense we could
make this much faster by not even bothering to look them up.
But we do that to validate that the refs are _valid_, so in that sense the
object lookup is not "unnecessary" at all. Oh, and we need to peel them to
see if they are tag objects, in order to mark the _commit_ uninteresting
if the object itself was uninteresting.
So in practice we do end up having to pretty much parse them all.
We could do some crazy special case for the empty set, but it would be
better to see if you can improve performance with a slow disk some other,
less hacky, way. If you use a USB stick to move between machines, maybe
you can make sure that it's fully packed (ie a single index file) before
moving it to the USB stick? That would likely help quite a bit.
Linus
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-11-05 22:10 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-05 9:38 Slow "git rev-list origin/master --not --all" or "git fetch" slow when downloading nothing Santi Béjar
2008-11-05 17:32 ` Re* " Junio C Hamano
2008-11-05 17:37 ` Linus Torvalds
2008-11-05 21:37 ` Santi Béjar
2008-11-05 22:08 ` Linus Torvalds
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox