diff options
author | Lars-Dominik Braun <ldb@leibniz-psychology.org> | 2020-07-20 11:28:51 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-07-20 23:25:09 +0200 |
commit | e8088f0b06c2193f2cce04a48aa1350229442a9f (patch) | |
tree | aeee709e1061e0bf624c27a11c9019dfd4b5937a | |
parent | 6c451e16b74160ac9604914c02a6bafff51fb805 (diff) |
ssh: Speed up RPCs by using #:nodelay.
Partly fixes <https://bugs.gnu.org/41702>.
* guix/ssh.scm (open-ssh-session): Enable #:nodelay.
* m4/guix.m4 (GUIX_CHECK_GUILE_SSH): Add feature check for this new parameter.
* doc/guix.texi (Requirements): Adjust.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r-- | doc/guix.texi | 4 | ||||
-rw-r--r-- | guix/ssh.scm | 6 | ||||
-rw-r--r-- | m4/guix.m4 | 6 |
3 files changed, 11 insertions, 5 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 26ef937604..da5a2e2214 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -791,11 +791,11 @@ The following dependencies are optional: @itemize @item -@c Note: We need at least 0.12.0 for 'userauth-gssapi!'. +@c Note: We need at least 0.13.0 for #:nodelay. Support for build offloading (@pxref{Daemon Offload Setup}) and @command{guix copy} (@pxref{Invoking guix copy}) depends on @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH}, -version 0.12.0 or later. +version 0.13.0 or later. @item When @url{https://www.nongnu.org/lzip/lzlib.html, lzlib} is available, lzlib diff --git a/guix/ssh.scm b/guix/ssh.scm index 2d7ca7d01d..b9e6ff8564 100644 --- a/guix/ssh.scm +++ b/guix/ssh.scm @@ -129,7 +129,11 @@ Throw an error on failure." ;; We need lightweight compression when ;; exchanging full archives. #:compression compression - #:compression-level 3))) + #:compression-level 3 + + ;; Speed up RPCs by creating sockets with + ;; TCP_NODELAY. + #:nodelay #t))) ;; Honor ~/.ssh/config. (session-parse-config! session) diff --git a/m4/guix.m4 b/m4/guix.m4 index 7c27ae74df..cce03045db 100644 --- a/m4/guix.m4 +++ b/m4/guix.m4 @@ -142,14 +142,16 @@ dnl GUIX_CHECK_GUILE_SSH dnl dnl Check whether a recent-enough Guile-SSH is available. AC_DEFUN([GUIX_CHECK_GUILE_SSH], [ - dnl Check whether 'userauth-gssapi!' (introduced in 0.12.0) is present. + dnl Check whether '#:nodelay' paramater to 'make-session' (introduced in + dnl 0.13.0) is present. AC_CACHE_CHECK([whether Guile-SSH is available and recent enough], [guix_cv_have_recent_guile_ssh], [GUILE_CHECK([retval], [(and (@ (ssh channel) channel-send-eof) (@ (ssh popen) open-remote-pipe) (@ (ssh dist node) node-eval) - (@ (ssh auth) userauth-gssapi!))]) + (@ (ssh auth) userauth-gssapi!) + ((@ (ssh session) make-session) #:nodelay #t))]) if test "$retval" = 0; then guix_cv_have_recent_guile_ssh="yes" else |