- Clone submodules:
git submodule init --update
from repo root; - Generate Makefiles:
cmake PATH_TO_REPO_ROOT
from 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/simulator
folder. 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/client
folder. 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
/shutdown
RESOURCE_NAME
;create-vm
/provision-vm
/stop-vm
/delete-vm
VM_NAME
.
Notes:
- By default the whole Cloud has name
cloud-1
, so it can be booted byboot cloud-1
CLI command - Data centers are named as in the
cloud.yaml
spec - Servers are named as
SERVER_NAME-SERVER_SERIAL
, whereSERVER_NAME
is thename
value 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