Skip to content

OGSim is a modular Go-based framework for simulating and benchmarking container scheduling strategies using both real Docker and simulated environments.

Notifications You must be signed in to change notification settings

pranav11024/Container-Scheduler-Orchestration-Benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

DockerSim: Container Cluster Simulator with Adaptive Scheduling

DockerSim is a modular and extensible container cluster simulation framework written in Go, designed to benchmark and evaluate container scheduling strategies over a heterogeneous node infrastructure. It integrates real Docker containers and collects fine-grained metrics to analyze scheduler performance under diverse workloads.

There are two versions of this project:

Both versions share a common architecture, workload engine, and metric collection framework. The only difference lies in how containers are managed (mock vs. Docker).

Features

  • ⚙️ Pluggable Schedulers: Supports Adaptive, BinPack, and Spread schedulers with dynamic phase-aware logic.
  • 🐳 Docker Integration: Runs real containers with configurable resource limits (CPU, Memory, I/O, Network).
  • 🧠 Adaptive Strategy: Learns and adapts to workload patterns, node health, and load variance over time.
  • 📊 Metrics Collection: Tracks latency, success rates, and resource utilization for each scheduling event.
  • 🧪 Workload Generator: Generates stochastic workloads from customizable JSON templates.
  • 🔁 Automated Benchmarking: Runs full simulations with cleanup and teardown logic.
  • 📦 Dockerized Deployment: Uses Docker Compose to orchestrate multiple simulation runs.

Architecture

+------------------+
| Workload Gen     | ---> Generates Containers
+------------------+
         |
         v
+------------------+        +-------------------+
| Scheduler        | -----> | Node Manager      |
| (Adaptive, etc.) |        | (Docker Backend)  |
+------------------+        +-------------------+
         |
         v
+------------------+
| Metrics Collector| ---> Stores CSV results
+------------------+

Prerequisites Docker (exposed via tcp://host.docker.internal:2375) Go 1.23+ Docker Compose

Build the Simulator

docker-compose build

Run a Benchmark

docker-compose up scheduler

This runs the Adaptive scheduler on a mixed workload for 300 seconds and outputs results to: results/adaptive_results.csv

You can also run other schedulers:

docker-compose up scheduler-binpack
docker-compose up scheduler-spread

Workload Configuration Edit or create your own JSON workload files inside the workloads/ directory. Example:

{
  "templates": [
    {
      "name": "web-service",
      "image": "nginx",
      "cpu_min": 0.5,
      "cpu_max": 1.5,
      "memory_min": 512,
      "memory_max": 1024,
      "network_min": 100,
      "network_max": 300,
      "io_min": 1000,
      "io_max": 5000,
      "type": "frontend",
      "priority": 1,
      "weight": 3
    }
  ]
}

About

OGSim is a modular Go-based framework for simulating and benchmarking container scheduling strategies using both real Docker and simulated environments.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published