Revision e90739d6

b/INSTALL
34 34
- `ctypes Python module
35 35
  <http://starship.python.net/crew/theller/ctypes/>`_, if running on
36 36
  python 2.4 (optional, used for node daemon memory locking)
37
- `socat <http://www.dest-unreach.org/socat/>`_
37
- `socat <http://www.dest-unreach.org/socat/>`_, see :ref:`note
38
  <socat-note>` below
38 39
- `Paramiko <http://www.lag.net/paramiko/>`_, if you want automated SSH
39 40
  setup; optional otherwise but manual setup of the nodes required
40 41

  
......
52 53
If you want to build from source, please see doc/devnotes.rst for more
53 54
dependencies.
54 55

  
56
.. _socat-note:
57
.. note::
58
  Ganeti's import/export functionality uses ``socat`` with OpenSSL for
59
  transferring data between nodes. By default, OpenSSL 0.9.8 and above
60
  employ transparent compression of all data using zlib if supported by
61
  both sides of a connection. In cases where a lot of data is
62
  transferred, this can lead to an increased CPU usage. Additionally,
63
  Ganeti already compresses all data using ``gzip`` where it makes sense
64
  (for inter-cluster instance moves).
65

  
66
  To remedey this situation, patches implementing a new ``socat`` option
67
  for disabling OpenSSL compression have been contributed and will
68
  likely be included in the next feature release. Until then, users or
69
  distributions need to apply the patches on their own.
70

  
71
  Ganeti will use the option if it's detected by the ``configure``
72
  script; auto-detection can be disabled by explicitely passing
73
  ``--enable-socat-compress`` (use the option to disable compression) or
74
  ``--disable-socat-compress`` (don't use the option).
75

  
76
  The patches and more information can be found on
77
  http://www.dest-unreach.org/socat/contrib/socat-opensslcompress.html.
78

  
55 79

  
56 80
Installation of the software
57 81
----------------------------
b/Makefile.am
613 613
	  echo "KVM_PATH = '$(KVM_PATH)'"; \
614 614
	  echo "SOCAT_PATH = '$(SOCAT)'"; \
615 615
	  echo "SOCAT_USE_ESCAPE = $(SOCAT_USE_ESCAPE)"; \
616
	  echo "SOCAT_USE_COMPRESS = $(SOCAT_USE_COMPRESS)"; \
616 617
	  echo "LVM_STRIPECOUNT = $(LVM_STRIPECOUNT)"; \
617 618
	  echo "TOOLSDIR = '$(toolsdir)'"; \
618 619
	  echo "GNT_SCRIPTS = [$(foreach i,$(notdir $(gnt_scripts)),'$(i)',)]"; \
b/configure.ac
297 297

  
298 298
AC_SUBST(SOCAT_USE_ESCAPE)
299 299

  
300
SOCAT_USE_COMPRESS=
301
AC_ARG_ENABLE([socat-compress],
302
  [AS_HELP_STRING([--enable-socat-compress],
303
    [use OpenSSL compression option available in patched socat builds
304
     (see INSTALL for details; default: detect automatically)])],
305
  [[if test "$enableval" = yes; then
306
      SOCAT_USE_COMPRESS=True
307
    else
308
      SOCAT_USE_COMPRESS=False
309
    fi
310
  ]])
311

  
312
if test -z "$SOCAT_USE_COMPRESS"
313
then
314
  if $SOCAT -hhh | grep -w -q openssl-compress; then
315
    SOCAT_USE_COMPRESS=True
316
  else
317
    SOCAT_USE_COMPRESS=False
318
  fi
319
fi
320

  
321
AC_SUBST(SOCAT_USE_COMPRESS)
322

  
300 323
if man --help | grep -q -e --warnings
301 324
then
302 325
  MAN_HAS_WARNINGS=1
b/lib/constants.py
220 220
KVM_PATH = _autoconf.KVM_PATH
221 221
SOCAT_PATH = _autoconf.SOCAT_PATH
222 222
SOCAT_USE_ESCAPE = _autoconf.SOCAT_USE_ESCAPE
223
SOCAT_USE_COMPRESS = _autoconf.SOCAT_USE_COMPRESS
223 224
SOCAT_ESCAPE_CODE = "0x1d"
224 225

  
225 226
# For RSA keys more bits are better, but they also make operations more
b/lib/impexpd/__init__.py
80 80
SOCAT_OPENSSL_OPTS = ["verify=1", "method=TLSv1",
81 81
                      "cipher=%s" % constants.OPENSSL_CIPHERS]
82 82

  
83
if constants.SOCAT_USE_COMPRESS:
84
  # Disables all compression in by OpenSSL. Only supported in patched versions
85
  # of socat (as of November 2010). See INSTALL for more information.
86
  SOCAT_OPENSSL_OPTS.append("compress=none")
87

  
83 88
SOCAT_OPTION_MAXLEN = 400
84 89

  
85 90
(PROG_OTHER,

Also available in: Unified diff