Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

pranav11024/Container-Scheduler-Orchestration-Benchmark

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
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

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.