Cloud Systems · Performance Isolation · Resource Management

ProPer

Profile-driven Performance Management Framework

Cloud workloads shift between compute-, cache-, and memory-intensive phases, but most resource controls don't. ProPer profiles applications offline and proactively repartitions cache and memory bandwidth at function boundaries — before contention hurts performance.

6× → 2.5×Worst-case slowdownUnder 20-way contention
0.27%Average profiling overhead
~500 MB/sMinimum enforceable bandwidthApproximately 4× finer than Intel MBA

Existing resource managers struggle with changing applications

Applications transition between compute-, cache-, and memory-intensive phases. Existing systems either rely on static allocations or continuously monitor applications as black boxes at runtime to relearn their behavior. ProPer instead learns application behavior offline and proactively adjusts resource allocations at function boundaries.

Static / Reactive Approaches
  1. Application enters a memory-intensive phase
  2. Static quotas remain fixed, or runtime monitors begin observing behavior
  3. Reactive systems treat each execution as a black box and continuously re-learn resource demands
  4. Resource adaptation lags behind phase changes, increasing interference and overhead
With ProPer
  1. A function transition is observed
  2. The new execution phase is classified
  3. Cache and bandwidth quotas are updated proactively
  4. Performance interference remains bounded

Function boundaries reveal meaningful phase changes

Instead of reacting only to noisy short-term counter fluctuations, ProPer associates hardware-counter behavior with recognizable regions of application execution. Function transitions provide natural points for detecting phase changes and updating resource policies.

load_data()Memory-boundReads large dataset from disk
feature_extract()Cache-boundRepeated access to working set
aggregate()Cache-boundHot join across tables
infer()Compute-boundMatrix multiply

How ProPer Works

ProPer turns low-overhead runtime measurements into enforceable cache and memory-bandwidth policies.

1Profile

Collect hardware performance-counter samples using Linux perf.

2Aggregate

Attribute measurements to application functions using SystemTap probes.

3Compare

Normalize seven behavioral features and compare them with synthetic reference workloads.

4Classify

Identify compute-, cache-, or DRAM-intensive execution phases.

5Allocate

Translate the detected phase into LLC and memory-bandwidth quotas.

6Enforce

Apply Intel CAT and a userspace DRAM bandwidth regulator.

What the profiler observes

Compute activityRetired instructions
Cache behaviorLLC accesses and LLC misses
Memory trafficLocal reads and local writes
Execution intensityNormalized activity over each function interval

Inside the Pipeline: Profiling to Enforcement

ProPer three-part pipeline: profiling, analyzing, managing
ProPer decomposes the problem into three stages: offline profiling of hardware interactions using performance counters, analysis of raw profiles to generate per-phase resource allocation policies, and online enforcement of those policies as the application moves through execution phases.
🕵️

Phase Detective: Offline Profiler

A Sampler collects hardware performance counter deltas — LLC read/write misses and accesses, DRAM local reads/writes, retired instructions — at 10 KHz using perf_event_open.

A Prober instruments function entry and return points via SystemTap, communicating through a shared memory-mapped circular buffer. Together they tie counter values to function boundaries across multiple runs.

🔎

Policy Generator: Phase Classification

The Policy Generator aligns Perf and SystemTap data temporally, then collapses short-lived functions (under ~100 µs) into their parents.

Each function iteration is classified as LLC-, DRAM-, or CPU-bound by similarity to synthetic reference workloads. A Phase Transition Point marks where the bottleneck changes at a function boundary, and each phase receives a cache-way allocation and a DRAM bandwidth quota.

ProPer — Phase Classification
1 / 8The application executes a sequence of functions.
load_data()
feature_extract()
aggregate()
infer()

Each function call is a candidate boundary for measuring and updating resource behavior.

Real-world execution phases detected across multiple runs of an application
Real-world phase profiles collected from an application across multiple runs. Phase boundaries align consistently with function entry points, confirming that offline profiling captures stable, repeatable resource behavior — the foundation for ProPer's proactive allocation strategy.
👮

Phase Enforcer: Online Management

A detector watches for function transitions that match the policy and flags the new phase. A driver process then adjusts Intel CAT cache partitioning and a custom DRAM bandwidth regulator to match — redistributing any unused resources to best-effort co-runners.

Intel MBA could not enforce bandwidth precisely at low levels, so ProPer uses a software throttle instead. See Results below for the measured comparison.

Implementation details

The driver runs at real-time (SCHED_FIFO) priority to guarantee timely enforcement and polls at 10 KHz. Because Intel MBA 2.0 could not throttle bandwidth below ~2000 MB/s and provided no useful write throttling, the custom USBW regulator uses a busy-loop throttle — pausing cores once measured bandwidth exceeds the phase quota — reaching enforcement down to ~500 MB/s.

Results: Lower Overhead, Finer Control, Less Interference

ProPer was evaluated under severe shared-resource contention to measure profiling overhead, enforcement precision, and application protection.

Low-overhead profiling

0.27%
average overhead

ProPer combines 10 kHz PMU sampling with 1,764 function probes while maintaining low average runtime overhead.

Fine-grained bandwidth control

More precise control than Intel MBA

Intel Memory Bandwidth Allocation did not provide sufficiently predictable control at low bandwidth levels. ProPer therefore uses a software bandwidth regulator capable of enforcing quotas down to approximately 500 MB/s—about four times finer than the practical minimum observed with Intel MBA.

Intel MBA~2000 MB/s

✗ No reliable control below this floor; no useful write throttling

ProPer software regulator~500 MB/s

✓ Enforces quotas reliably down to this floor

Bar length shows the lowest bandwidth quota each system can reliably enforce — shorter means finer, more predictable control.

Reduced contention slowdown

Worst-case slowdown reduced from approximately 6× to 2.5×

Under 20-way contention, phase-aware cache and bandwidth management substantially reduced the worst observed application slowdown.

✗ Without ProPer
~6×
✓ With ProPer
~2.5×
ProPer results: slowdown reduced from over 6× to approximately 2.5× under contention
This experiment evaluates performance-critical applications running alongside memory-intensive interference workloads that compete for shared DRAM bandwidth. The numbers above each bar indicate the number of interfering cores. As contention increases, unmanaged execution experiences slowdowns exceeding 6×. While static partitioning improves isolation, profile-driven dynamic partitioning adapts resource allocations to application behavior, reducing worst-case slowdown to approximately 2.5× under heavy contention.

Future Directions

01

ML-Driven Policy Generation

Extending the system with machine learning models and AI-assisted tools to automatically derive resource management policies from profiling data at scale, removing the need for manual classification thresholds and enabling generalization to diverse real-world workloads.

02

Input-Aware Resource Management

Different inputs can change an application's phase structure and resource demands. Future systems could incorporate input characteristics to generate more precise resource policies.

03

Beyond Cache and Memory Bandwidth

Extend profile-driven management to other shared resources: memory capacity, interconnect bandwidth, storage I/O, network bandwidth, GPU memory systems, and accelerator resources.

04

Multi-Application Policy Generation

Current policies focus on protecting a target application. Future work could jointly optimize resource allocations across multiple performance-critical applications running simultaneously.

05

Cross-Platform Policy Transfer

Investigate whether profiles generated on one machine can be translated to another architecture, reducing the need for repeated profiling across deployment environments.

06

Integration with Cloud Schedulers

Combine ProPer with Kubernetes, OpenShift, or cluster schedulers so that placement and resource partitioning decisions are informed by profile-derived resource requirements.

What I Built

Function-Level Profiler

Combined PMU sampling with function-boundary tracking to characterize runtime behavior.

Phase Classifier

Compared normalized application signatures with compute-, cache-, and DRAM-focused reference workloads.

Policy Engine

Mapped detected application phases to cache and memory-bandwidth allocations.

Bandwidth Regulator

Implemented fine-grained software enforcement when Intel MBA was insufficiently precise.

Evaluation Infrastructure

Built contention experiments, collected performance data, and analyzed slowdown and overhead.

My Role

I designed and implemented the profiling, phase-analysis, policy, and bandwidth-enforcement pipeline. I built the experimental infrastructure, evaluated the system using real and synthetic workloads, and analyzed application behavior under cache and memory-bandwidth contention.

CPythonBashLinux perfSystemTapIntel RDTPMUs

Linux perf and PMUs for profiling, SystemTap for function-boundary probes, Intel RDT/CAT for cache-and-bandwidth enforcement, and C/Python/Bash across the pipeline and evaluation tooling.

ProPer shows how low-overhead runtime profiling can turn changing application behavior into practical shared-resource policies.