An asynchronous deployment and operations platform with the aim to better enable simplicity, faster time to delivery, and consistency.
This project is maintained by oshied
Because Directord is task driven and messaging backed it is fast, Directord’s time to work is measured in microseconds with return trip times measured in milliseconds.
To test interactions used can all be found in the
tests
directory of the project repository.
Each test interaction measures the performance of 1000 minimal tasks run across a 6 node environment.
he following sections detail what was tested and how. All of the tools used for these tests are provided within the Directord repository.
The server used (orchestration node) within the test environment was a standalone machine, which was not part of the test executions. The server only facilitated the test operation. This was done to not artificially boost any of our results. By forcefully using a server we’re creating a network environment which would be similar one found within production environments.
The server was deployed using the following characteristics
4 AMD Opteron 6380 Cores
4 GiB DDR3 RAM
1 GiB Bonded link
32GiB of NVME Storage.
All client targets within the test environment used the same configuration.
4 AMD Opteron 6380 Cores
8 GiB DDR3 RAM
1 GiB Bonded link
64GiB of NVME Storage
The test environment was built in virtual machines, and dedicated 100% access to all resources provided to them. There was no use of shared memory, cores, storage.
To ensure that the tests were as fair as possible, all tests were first run using default configurations. Later tests were run using asynchronous strategies to ensure all of the common basis were covered for our results. In the case of Ansible, Non-default configuration was used to ensure the Ansible execuution is done in the most optimized way possible.
The following results cover all the tests executed. All tests were performed until they ran to completion. The results were then collected using each tools built-in profiling apparatus; results were further verified using system time as a point of correlation.
Service | Configuration | Actual Runtime (Seconds) |
---|---|---|
Directord | ZeroMQ Driver | 19 |
Directord (async) | ZeroMQ Driver | 15 |
Directord | Messaging Driver | 101 |
Directord (async) | Messaging Driver | 99 |
Directord | GRPC Driver | |
Directord (async) | GRPC Driver | |
Ansible | Defaults | 1947 |
Ansible | Pipelining | 1556 |
Ansible (free strategy) | Pipelining | 949 |
The configuration and installation process for each of these test environments is within the following subsections.
Directord installation was performed in a virtual environment using Directord version 0.11.0.
sudo /opt/directord/bin/pip install --pre directord
Server setup was performed using the documented installation process.
The Directord defaults were used across the board.
$ sudo /opt/directord/bin/directord orchestrate tests/comparison-orchestration.yaml --target directord-{0..5}
Running the comparison orchestration file with a six node test environment returns an actual run time of 19 seconds.
$ sudo /opt/directord/bin/directord orchestrate tests/comparison-orchestration-async.yaml --target directord-{0..5}
Running the comparison async orchestration file with a six node test environment returns an actual run time of 15 seconds.
The Messaging driver was deployed following the installation process using the
directord-dev-bootstrap-messaging-catalog.yaml
catalog.
$ sudo /opt/directord/bin/directord orchestrate tests/comparison-orchestration.yaml --target directord-{0..5}
Running the comparison orchestration file with a six node test environment returns an actual run time of 101 seconds (1.68 minutes).
The Messaging driver was deployed following the installation process using the
directord-dev-bootstrap-messaging-catalog.yaml
catalog.
$ sudo /opt/directord/bin/directord orchestrate tests/comparison-orchestration-async.yaml --target directord-{0..5}
Running the comparison orchestration file with a six node test environment returns an actual run time of 99 seconds (1.65 minutes).
The directord cluster was bootstrapped with the Native Bootstrap process. Before running these tests the bootstrap process had to be completed ahead of time. The example bootstrap process took 81 seconds (1.5 minutes) to complete.
Total execution time for the ZMQ driver with an linear orchestration, including bootstrapping the environment was 100 seconds (1.69 minutes).
Total execution time for the ZMQ driver with an async orchestration, including bootstrapping the environment was 96 seconds (1.6 minutes).
Total execution time for the Messaging driver with an linear orchestration, including bootstrapping the environment was 182 seconds (3.03 minutes).
Total execution time for the Messaging driver with an async orchestration, including bootstrapping the environment was 180 seconds (3 minutes).
Ansible installation was performed in a virtual environment using Ansible version 4.6.0 and Ansible-Core version 2.11.5.
sudo /opt/directord/bin/pip install Ansible
$ ansible-playbook -i tools/ansible-inventory.yaml tests/comparison-tasks-playbook.yml
Running the comparison orchestration file with a six node test environment returns an actual run time of 1947 seconds (32.45 minutes).
[defaults]
host_key_checking = False
callback_whitelist = profile_tasks
[ssh_connection]
ssh_args = -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s
pipelining = true
$ ansible-playbook -i tools/ansible-inventory.yaml tests/comparison-tasks-playbook.yml
Running the comparison orchestration file with a six node test environment returns an actual run time of 1556 seconds (25.93 minutes).
$ ansible-playbook -i tools/ansible-inventory.yaml tests/comparison-tasks-playbook-free.yml
Running the comparison free strategy orchestration file with a six node test environment returns an actual run time of 949 seconds (15.82 minutes).