Improve control-host CPU performance

When running from a central host, where multiple other playbooks may
also be executing, CPU time quickly becomes the scaleability bottleneck.

* Reduce the vars compression level at the cost of network utilization.
This assumes the number of vars being transfered back/forth remains
reasonably low, where there wouldn't be much advantage from higher
compression anyway.

Another enhancement ``ControlPersist`` (for ssh) is apt to fall
back to opening new connections (slow) for every request under some
conditions.  This happens if the socket filename is too large (108
characters, including path) - a kernel limitation.

Unfortunately, in cloud environments, auto-assigned VM hostnames tend to
be rather large to avoid clashes.  Worse, in a CI environment, the default
home-directory path also tends to be lengthy for the same reason.

* Address this by sticking persistent-connection, background socket files
in '/tmp/cri-o' (avoid %d).  Also remove the username (%r) designation,
since this will almost always be the same user anyway.  The tradeoff
here is clashes between jobs against the same host (unlikely) and
weakened security on the control host (less important for CI jobs).

Signed-off-by: Chris Evich <cevich@redhat.com>
This commit is contained in:
Chris Evich 2017-10-19 09:05:25 -04:00
parent 51fed53139
commit 4df075abd2

View file

@ -57,11 +57,6 @@ gather_subset = network
#host_key_checking = False #host_key_checking = False
host_key_checking = False host_key_checking = False
# change the default callback
#stdout_callback = skippy
# enable additional callbacks
#callback_whitelist = timer, mail
# Determine whether includes in tasks and handlers are "static" by # Determine whether includes in tasks and handlers are "static" by
# default. As of 2.0, includes are dynamic by default. Setting these # default. As of 2.0, includes are dynamic by default. Setting these
# values to True will make includes behave more like they did in the # values to True will make includes behave more like they did in the
@ -165,7 +160,6 @@ deprecation_warnings = False
# instead of shelling out to the git command. # instead of shelling out to the git command.
command_warnings = False command_warnings = False
# set plugin path directories here, separate with colons # set plugin path directories here, separate with colons
#action_plugins = /usr/share/ansible/plugins/action #action_plugins = /usr/share/ansible/plugins/action
#callback_plugins = /usr/share/ansible/plugins/callback #callback_plugins = /usr/share/ansible/plugins/callback
@ -219,7 +213,6 @@ nocolor = 0
# When a playbook fails by default a .retry file will be created in ~/ # When a playbook fails by default a .retry file will be created in ~/
# You can disable this feature by setting retry_files_enabled to False # You can disable this feature by setting retry_files_enabled to False
# and you can change the location of the files by setting retry_files_save_path # and you can change the location of the files by setting retry_files_save_path
#retry_files_enabled = False #retry_files_enabled = False
retry_files_enabled = False retry_files_enabled = False
@ -248,6 +241,7 @@ no_target_syslog = True
# worker processes. At the default of 0, no compression # worker processes. At the default of 0, no compression
# is used. This value must be an integer from 0 to 9. # is used. This value must be an integer from 0 to 9.
#var_compression_level = 9 #var_compression_level = 9
var_compression_level = 3
# controls what compression method is used for new-style ansible modules when # controls what compression method is used for new-style ansible modules when
# they are sent to the remote system. The compression types depend on having # they are sent to the remote system. The compression types depend on having
@ -298,6 +292,7 @@ ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/de
# Example: # Example:
# control_path = %(directory)s/%%h-%%r # control_path = %(directory)s/%%h-%%r
#control_path = %(directory)s/ansible-ssh-%%h-%%p-%%r #control_path = %(directory)s/ansible-ssh-%%h-%%p-%%r
control_path = /tmp/crio-%%n-%%p
# Enabling pipelining reduces the number of SSH operations required to # Enabling pipelining reduces the number of SSH operations required to
# execute a module on the remote server. This can result in a significant # execute a module on the remote server. This can result in a significant