Compare queue depth against soft and hard limits and pick a saturation relief action.

saturation selector The queue depth is the only selector that changes between report variants.
relief action Crossing the soft limit sheds load and crossing the hard limit pauses intake.

Saturation Relief Remediation Report

queueDepth
saturation_relief_remediation_report.c
Replay: real traced execution (multi-file project)
#include <stdio.h>

int main(void) {
    int queueDepth = 40;
    int softLimit = 60;
    int hardLimit = 90;
    const char *action = "steady";

    if (queueDepth >= softLimit) {
        action = "shed";
    }

    if (queueDepth >= hardLimit) {
        action = "pause";
    }

    printf("depth=%d\n", queueDepth);
    printf("soft=%d\n", softLimit);
    printf("action=%s\n", action);
    return 0;
}
#include <stdio.h>

int main(void) {
    int queueDepth = 70;
    int softLimit = 60;
    int hardLimit = 90;
    const char *action = "steady";

    if (queueDepth >= softLimit) {
        action = "shed";
    }

    if (queueDepth >= hardLimit) {
        action = "pause";
    }

    printf("depth=%d\n", queueDepth);
    printf("soft=%d\n", softLimit);
    printf("action=%s\n", action);
    return 0;
}
#include <stdio.h>

int main(void) {
    int queueDepth = 95;
    int softLimit = 60;
    int hardLimit = 90;
    const char *action = "steady";

    if (queueDepth >= softLimit) {
        action = "shed";
    }

    if (queueDepth >= hardLimit) {
        action = "pause";
    }

    printf("depth=%d\n", queueDepth);
    printf("soft=%d\n", softLimit);
    printf("action=%s\n", action);
    return 0;
}
  1. queueDepth ← 40, softLimit ← 60, hardLimit ← 90, action ← steady

    3int main(void) {4    int queueDepth→ 40 = 40; //@queueDepth=70, 955    int softLimit→ 60 = 60;6    int hardLimit→ 90 = 90;7    const char *action→ steady = "steady";89    if (queueDepth >= softLimit) {10        action = "shed";11    }1213    if (queueDepth >= hardLimit) {14        action = "pause";15    }1617    printf("depth=%d\n", queueDepth40);18    printf("soft=%d\n", softLimit60);19    printf("action=%s\n", actionsteady);20    return 0;21}
    outputdepth=40
    soft=60
    action=steady
  1. queueDepth ← 70, softLimit ← 60, hardLimit ← 90, action ← steady

    3int main(void) {4    int queueDepth→ 70 = 70;5    int softLimit→ 60 = 60;6    int hardLimit→ 90 = 90;7    const char *action→ steady = "steady";
  2. action ← shed

    9if (queueDepth70 >= softLimit60) {10    action→ shed = "shed";11}
  3. printf("depth=%d ", queueDepth);

    17    printf("depth=%d\n", queueDepth70);18    printf("soft=%d\n", softLimit60);19    printf("action=%s\n", actionshed);20    return 0;21}
    outputdepth=70
    soft=60
    action=shed
  1. queueDepth ← 95, softLimit ← 60, hardLimit ← 90, action ← steady

    3int main(void) {4    int queueDepth→ 95 = 95;5    int softLimit→ 60 = 60;6    int hardLimit→ 90 = 90;7    const char *action→ steady = "steady";
  2. action ← shed

    9if (queueDepth95 >= softLimit60) {10    action→ shed = "shed";11}
  3. action ← pause

    13if (queueDepth95 >= hardLimit90) {14    action→ pause = "pause";15}
  4. printf("depth=%d ", queueDepth);

    17    printf("depth=%d\n", queueDepth95);18    printf("soft=%d\n", softLimit60);19    printf("action=%s\n", actionpause);20    return 0;21}
    outputdepth=95
    soft=60
    action=pause