Script to inject latencies based upon user-define intrarole and iterrole latencies
Run the command like this:
./generateqos.py cloud-inventory.yaml cloud-latencies.yaml
cloud-inventory.yaml
should be a yaml inventory as generated by the following command:
tripleo-ansible-inventory --static-yaml-inventory cloud-inventory.yaml
cloud-latencies.yaml
is a YAML file containing the latencies definitions:
#DefaultLatency: 5ms
IntraRoleLatency:
Controller: 20ms
Compute: 10ms
CephStorage: 2ms
InterRoleLatency:
Controller_Compute: 100ms
Compute_CephStorage: 200ms
Controller_CephStorage: 300ms
The above config file will generate the following latencies:
- 30ms amongst each Controller node
- 10ms amongst each Compute node
- 2ms amongst each CephStorage node
- 100ms between Controllers and Computes
- 200ms between Computes and CephStorage nodes
- 300ms between Controller and CephStorage nodes
Note that you could uncomment the DefaultLatency and it would be the latency for anything not matched by Intra and Inter Role latencies.
Once the ./generateqos.py
script is run under the output
folder you
will find the output/distribute-tc-scripts.sh
script. Run it
and it will copy all the right tc scripts to all nodes and it will run said script
to inject the latencies.
After running the distribute-tc-scripts.sh
you will be able to confirm the
new latencies:
[root@compute-0 ~]# ping controller-0
PING controller-0.localdomain (172.17.1.16) 56(84) bytes of data.
64 bytes from controller-0.localdomain (172.17.1.16): icmp_seq=1 ttl=64 time=100 ms
64 bytes from controller-0.localdomain (172.17.1.16): icmp_seq=2 ttl=64 time=100 ms
If you want to remove those latencies on each node run the script /root/<nodename>-tc.sh --reset