Built using purely Linux Cgroups.
Important Commands
cd into /http_server:
we installed air-verse
go build -o out && ./out
compiles a binary to out and will run it the build is successful.
Within /resource_controller.
./scripts/full_run.sh -params
example:
./scripts/full_run.sh process1 process3
What it does:
- Compiles and inits processes, saves their PIDS
- Compile and init the controller, passing in the PIDS init cgroups for the processes
- Controller runs for the set duration(configrable in
main.gointest_controller/main.go) and prints cgroup stats to stdout as well as to a log file in/logs
cleanup the processes and cgroups via:
./scripts/cleanup.sh
Testing applications/processes are in their respective folders /processX. ./process2 and ./process3 correspond to their low CPU util workloads and their rate can be adjusted in the main function via rand.Intn(x).
Test 1
logs/run1.log and logs/run2.log correspond to the workloads for test 1.
Test 2
logs/run7.log and logs/run8.log correspond to the workloads for test 2.
Test 3
logs/run9/10/11 correspond to the workloads for test 3.
The stats listed within the write up graphs are fonud at the very end on the last set of stats printed.