This repo extends the work of sbihel during his internship. Based on this code, we try to add elastic task representation adapted to microservice systems.
Loads used for testing purposes have been generated by LIMBO, a synthetic load generator (LIMBO pesentation).
You can produce jaeger traces if enabled in the cmake config.
- [X] ElasticTaskManager and TaskInstances: abstract representation of a cpu intensive microservice (more on I/O to come in the future)
- [X] Datasources generate a flow of requests to be sent to a microservice
- [X] Microservices interaction: a DAG structure can be manually or automatically generated to mimic the behaviour of a real application.
- [X] Automatic code generation: to obtain more easily your simulator, we propose some tools (see the `script` directory) to transpose the structure of a real application directly into a simulator without having to code it by yourself, which becomes tedious when dependencies are complex). Note that the outputted simulator is a “simplified” representation of the real application.
- [-] ElasticPolicy: is connected to one or more ElasticTaskManager(s) and is
responsible for implementing the elastic policy. None of those have been validated.
- [X] ElasticPolicyCPUThreshold: dummy policy for test purposes that adds or remove an instance to a single ElasticTaskManager based on CPU load thresholds
- [ ] Add a realistic policy (e.g Efficient Provisioning of Bursty Scientific Workloads onthe Cloud Using Adaptive Elasticity Control)
- Validation work
- Integrate with opentelemetry to allow the export of metrics like cpu usage
- Use I/Os