- Clone submodules:
git submodule init --updatefrom repo root; - Generate Makefiles:
cmake PATH_TO_REPO_ROOTfrom build directory; - Build simulator engine:
make simulator; - Build console client:
make client.
- Specify configuration of the cloud (sample)
- The simulator engine binary is located in
src/simulatorfolder. Run simulator with 3 required arguments:--config path/to/config/directory--logs-folder path/to/folder/for/logs--port <port-which-engine-should-listen>
- The client binary is located in
src/clientfolder. It should be runned with arguments--host <engine-host> --port <engine-port>. - Log is printed to the engine's stdout, duplicated to
.csv-file in the specified directory and sent to the client. - Available console commands:
boot/shutdownRESOURCE_NAME;create-vm/provision-vm/stop-vm/delete-vmVM_NAME.
Notes:
- By default the whole Cloud has name
cloud-1, so it can be booted byboot cloud-1CLI command - Data centers are named as in the
cloud.yamlspec - Servers are named as
SERVER_NAME-SERVER_SERIAL, whereSERVER_NAMEis thenamevalue specified inspecs.yaml
- yaml-cpp for parsing YAML files
- argparse for parsing command-line arguments
- fmtlib for convenient string formatting
- replxx for CLI
- NamedType for convenient strong typedef
- gRPC for RPC communication
Dependencies are attached to the project using git submodules, to do not forget to load them before compiling.
The simulator has a layered design, as most of the analogues do. Everything is based on a discrete-time event loop, which gives ability of creating and receiving events using special API.
On the top of the event loop there are representations of the infrastructure ( physical entities and virtual machines), management classes and API of the simulator.
Only Russian, available here.
Look to the Github Projects tab.
-
DISSECT-CF: a simulator to foster energy-aware scheduling in infrastructure clouds: strongly influenced by this paper
