== areas of performance == Every layer of the stack as described in https://tannerjc.net/wiki/index.php?title=Ansible_Hangs_Filament#Tools_By_Layer is potentially a source of performance issues. == strategies == === getting started === === many tasks === === many hosts === === many groups === === many vars === == metrics == === duration === [https://en.wikipedia.org/wiki/Duration Duration] is a measurement of time. There are multiple facets of "duration" when observing Ansible. * total duration of a playbook * total duration of a task * total duration of a host within a task * total duration of an ssh call for a host within a task * total duration of wating for a sudo password prompt * total duration of executing python on the remote host * total duration of processing the results for a host/worker === cpu utilization === Aka [https://en.wikipedia.org/wiki/CPU_time CPU time]. Many tools exist to measure cpu time / utilization and it's important to understand the various metrics each provides. https://access.redhat.com/solutions/1160343 An important metric for basic ansible cpu utilization is the "b" (aka "blocked) column from vmstat. https://linux.die.net/man/8/vmstat
http://www.dba-oracle.com/t_linux_oracle_vmstat.htm
https://access.redhat.com/solutions/792683
Multiple factors could cause the number of blocked processes to accumulate. * not enough cpu cores ** setting ansible's fork count too high * not enough memory ** too many hosts returning too much data for the controller to handle * not enough disk IOPs === memory utilization === === disk utilization === === network utilization === == tools == https://docs.ansible.com/ansible/devel/plugins/callback/cgroup_memory_recap.html
https://github.com/jctanner/ansible-tools/blob/master/ansible_debug_logparser
https://github.com/ansible/qa-scale-lab
https://github.com/jctanner/ansible-tools/tree/master/vagrant/ansible_test_inventory
== labs == https://github.com/jctanner/ansible-tools/tree/master/playbooks/slowhost == training == https://www.redhat.com/en/services/training/rh442-red-hat-enterprise-performance-tuning
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/performance_tuning_guide/chap-red_hat_enterprise_linux-performance_tuning_guide-performance_monitoring_tools == additional reading == https://gist.github.com/sivel/ef405e70f699ce29c49cfdf6104a0492