From: Roel Janssen <roel@gnu.org>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org, 27097@debbugs.gnu.org
Subject: Re: Combining Guix, direnv and Emacs for environment customisation
Date: Sat, 03 Jun 2017 23:08:54 +0200 [thread overview]
Message-ID: <871sr0ok2h.fsf@gnu.org> (raw)
In-Reply-To: <87fufhkw85.fsf@gnu.org>
Ludovic Courtès writes:
> Roel Janssen <roel@gnu.org> skribis:
>
>> Ludovic Courtès writes:
>>
>>> I agree that we could do a lot more things with a faster ‘guix
>>> environment’. My guess is that it won’t be easy to go optimize, and
>>> very hard to go below 1 second. We should profile that and see what can
>>> be done.
>>
>> FWIW, on our NFS-mounted /gnu, the 'guix environment' command takes at
>> least 20 seconds, but for any reasonably big environment it takes more
>> than one minute. The biggest bottleneck here is the disk latency.
>> Could it be that 'guix environment' accesses many files? If we could
>> reduce that, it would speed things up (at least for us ;)).
>
> Interesting. Does guix-daemon access /gnu over NFS too?
Yes.
> Could you send the output of (first run the same command without
> ‘strace’):
>
> strace -c guix environment --ad-hoc coreutils --pure -- true
>
> On my laptop I get:
>
> --8<---------------cut here---------------start------------->8---
> $ strace -c guix environment --ad-hoc coreutils --pure -- true
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 37.84 0.017268 1 14036 10965 stat
> 15.13 0.006904 1 9990 read
> 14.02 0.006398 1 10000 write
> 8.75 0.003991 3991 1 wait4
> 6.06 0.002764 1 5218 4 lstat
> 4.73 0.002157 1 1930 136 open
> 2.58 0.001176 1 1794 close
> 2.08 0.000949 1 1717 3 lseek
> 2.04 0.000932 1 689 mmap
> 1.89 0.000861 1 645 mprotect
> 1.71 0.000781 4 189 32 futex
>
> […]
> --8<---------------cut here---------------end--------------->8---
>
> We stat a lot mostly to access all the Guix modules. Are they on NFS
> too?
Yes.
> Thanks,
> Ludo’.
Here's my output:
[rjanssen2@hpcguix ~]$ strace -c guix environment --ad-hoc coreutils --pure -- true
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
41.79 0.038363 22 1782 188 open
14.71 0.013500 3 4769 1747 stat
13.19 0.012106 2 8033 read
6.06 0.005561 1854 3 1 wait4
5.83 0.005356 8 633 147 futex
4.15 0.003814 0 10020 write
3.25 0.002987 157 19 clone
3.23 0.002968 1 5086 2 lstat
2.86 0.002627 25 105 sendfile
1.04 0.000954 954 1 connect
0.97 0.000889 889 1 socket
0.63 0.000582 0 1596 close
0.50 0.000460 1 685 mmap
0.45 0.000414 0 1025 fstat
0.42 0.000386 0 1520 3 lseek
0.38 0.000350 1 644 mprotect
0.28 0.000255 12 22 getdents
0.11 0.000103 1 186 brk
0.06 0.000051 26 2 madvise
0.02 0.000021 4 5 munmap
0.02 0.000021 0 65 clock_gettime
0.01 0.000009 5 2 execve
0.01 0.000006 0 50 rt_sigprocmask
0.01 0.000005 0 13 1 fcntl
0.01 0.000005 1 5 prlimit64
0.00 0.000002 0 25 rt_sigaction
0.00 0.000002 1 2 arch_prctl
0.00 0.000001 0 10 3 ioctl
0.00 0.000001 0 3 3 access
0.00 0.000001 0 3 dup2
0.00 0.000000 0 1 rt_sigreturn
0.00 0.000000 0 1 pipe
0.00 0.000000 0 2 getpid
0.00 0.000000 0 2 uname
0.00 0.000000 0 1 getcwd
0.00 0.000000 0 2 readlink
0.00 0.000000 0 1 sysinfo
0.00 0.000000 0 1 getuid
0.00 0.000000 0 1 getgid
0.00 0.000000 0 1 geteuid
0.00 0.000000 0 1 getegid
0.00 0.000000 0 1 getppid
0.00 0.000000 0 1 getpgrp
0.00 0.000000 0 2 sched_getaffinity
0.00 0.000000 0 1 set_tid_address
0.00 0.000000 0 1 faccessat
0.00 0.000000 0 1 set_robust_list
0.00 0.000000 0 3 pipe2
------ ----------- ----------- --------- --------- ----------------
100.00 0.091800 36339 2095 total
So the main difference is that calls to 'open' take a lot longer.
There's little we can do, other than come up with a good caching
mechanism.
Kind regards,
Roel Janssen
next prev parent reply other threads:[~2017-06-03 21:09 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-27 10:56 bug#27097: [PATCH] gnu: Add emacs-direnv Christopher Baines
2017-05-27 11:31 ` Combining Guix, direnv and Emacs for environment customisation Christopher Baines
2017-05-30 15:03 ` Ludovic Courtès
2017-05-30 15:03 ` bug#27097: " Ludovic Courtès
2017-06-01 13:17 ` Roel Janssen
2017-06-03 13:59 ` Ludovic Courtès
2017-06-03 13:59 ` bug#27097: " Ludovic Courtès
2017-06-03 21:08 ` Roel Janssen [this message]
2017-06-04 21:15 ` Ludovic Courtès
2017-06-04 21:15 ` bug#27097: " Ludovic Courtès
2017-06-05 22:37 ` Roel Janssen
2017-06-07 10:35 ` Performance on NFS Ludovic Courtès
2017-06-07 13:06 ` Roel Janssen
2017-06-09 13:46 ` Ludovic Courtès
2017-06-12 8:45 ` Roel Janssen
2017-06-12 8:45 ` [bug#27097] " Roel Janssen
2017-06-12 15:58 ` Ludovic Courtès
2017-06-16 15:23 ` Ludovic Courtès
2017-06-17 7:36 ` Roel Janssen
2017-06-17 22:40 ` Ludovic Courtès
2017-06-17 23:15 ` Roel Janssen
2017-06-18 8:43 ` Ricardo Wurmus
2017-06-19 8:01 ` RPC performance Ludovic Courtès
2017-06-19 8:15 ` Ludovic Courtès
2017-06-19 14:25 ` Ricardo Wurmus
2017-06-22 14:03 ` Andy Wingo
2017-06-22 16:05 ` Ludovic Courtès
2017-06-23 9:09 ` Andy Wingo
2017-06-23 9:24 ` Ludovic Courtès
2017-06-23 9:46 ` Andy Wingo
2017-06-26 11:54 ` Ludovic Courtès
2017-06-26 14:19 ` Andy Wingo
2017-06-19 21:25 ` Ludovic Courtès
2017-06-22 8:04 ` Ricardo Wurmus
2017-06-07 11:01 ` Combining Guix, direnv and Emacs for environment customisation Ricardo Wurmus
2017-06-07 12:25 ` Performance on NFS Ludovic Courtès
2017-06-07 12:59 ` Ricardo Wurmus
2017-06-07 12:59 ` bug#27097: " Ricardo Wurmus
2017-08-29 19:02 ` Combining Guix, direnv and Emacs for environment customisation Thompson, David
2017-08-29 22:30 ` Maxim Cournoyer
2017-08-30 5:52 ` Carlo Zancanaro
2017-08-30 10:09 ` Ludovic Courtès
2017-08-30 10:16 ` Ludovic Courtès
2017-05-28 20:09 ` bug#27097: [PATCH] gnu: Add emacs-direnv Ludovic Courtès
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871sr0ok2h.fsf@gnu.org \
--to=roel@gnu.org \
--cc=27097@debbugs.gnu.org \
--cc=guix-devel@gnu.org \
--cc=ludo@gnu.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 external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.