Custom Cloud VM Autoscaling System
Domains
Tech Stack
Project Summary
Abstract
Autoscaling is often treated as a managed-cloud abstraction, but the underlying mechanics are a useful systems problem in their own right.
This project implemented a small autoscaling loop directly against the virtualization layer using Python, libvirt, and QEMU/KVM to monitor load and trigger VM lifecycle events.
When CPU pressure stayed high, the system booted standby capacity and shifted work across instances, with guest startup scripts reducing manual intervention during scale-up.
What I Built
- Direct libvirt control over QEMU/KVM made it possible to inspect VM load and trigger lifecycle events programmatically.
- The prototype demonstrated the core autoscaling loop: monitor pressure, boot standby capacity, and shift work across instances.
Impact
- Made autoscaling mechanics tangible by implementing them below the managed-platform layer.
- Showed end-to-end systems control across monitoring, VM orchestration, and automated scale-up behavior.
Page Info
Hypervisor Integration
Integrated with QEMU/KVM through the libvirt Python binding to inspect active virtual machines and control VM lifecycle events through qemu:///system.
Dynamic Scaling Logic
Continuously monitored CPU utilization on the active VM and booted a standby instance when sustained computational load crossed the threshold.
Distributed Workload Simulation
Simulated pressure with repeated license-number generation and hashing, then shifted work across active instances after scale-up.