Performance Tuning

Enable Ansible Pipelining

Ansible can be switched into pipelining mode when executing playbooks. This can significantly increase the performance especially when using emulated environments.

To enable pipelining just add ansible_pipelining: true to the general/parameters section of your project configuration:

Ansible pipelining
general:
  ...
  parameters:
    ...
    ansible_pipelining: true
    ...
...

Choosing a Suitable Compression Algorithm

A lot of intermediate artifacts of edi get compressed. The default compression algorithm is xz. The xz algorithm is very good at reaching a high compression rate but it is rather slow. To get some more speed when doing frequent builds it is advisable to switch to the gz algorithm.

This can be done within the general section of the project configuration:

Compression algorithm
general:
  ...
  edi_compression: gz
...

Avoid Re-bootstrapping

The bootstrapping process using debootstrap is pretty time consuming - especially when doing it for a foreign architecture. In most cases the bootstrapped artifact is not affected by modifications done to the project configuration. Therefore it is in most of the cases OK to keep the bootstrapped artifact when doing a next build. The tool edi supports this workflow through the --recursive-clean NUMBER command line option. Please take a look at this blog post for a detailed example.

--recursive-clean NUMBER

Cleans the artifacts that got produced by this and the preceding N commands.

Re-configure your Container Instead of Re-creating it

The tool edi enables you to do a lot of development work within a container that is very similar to the target device. As the project configuration will change over time, also the development container should be changed accordingly. Luckily the container setup can be adjusted by just re-executing the command that got used in first place to generate the container (e.g. edi -v lxc configure CONTAINERNAME CONFIG.yml).