Browse Source

Avoid an extra FEC cut for a marginal overload safety reserve

master
evgeny 1 week ago
parent
commit
01324d2ebb
  1. 4
      src/stream/stream_network.c

4
src/stream/stream_network.c

@ -1144,7 +1144,7 @@ static void pressure_tick(struct stream_network *net, uint64_t now) {
else if (!net->global_candidate) { net->global_candidate = 1; net->global_since_ms = now; }
net->global_pressure = net->global_candidate && now - net->global_since_ms >= STREAM_LOAD_CONFIRM_MS;
if (net->global_pressure) {
uint64_t required = global.growth_rate ? global.growth_rate + global.growth_rate / 10 + 1 : global.queued.bytes / 2 + 1;
uint64_t required = global.growth_rate ? global.growth_rate + global.growth_rate / 100 + 1 : global.queued.bytes / 2 + 1;
for (unsigned pass = 0; pass < net->peer_count && required; pass++) {
struct stream_peer *best = NULL; uint64_t best_rate = 0;
for (struct stream_peer *p = net->peers; p; p = p->next) {
@ -1164,7 +1164,7 @@ static void pressure_tick(struct stream_network *net, uint64_t now) {
p->busy++;
if (!net->global_pressure && p->load.snapshot.confirmed && !p->pressure.active && !p->cooling) {
uint64_t g = p->load.snapshot.growth_rate;
pressure_begin(p, g ? g + g / 10 + 1 : p->load.queued.bytes / 2 + 1, now);
pressure_begin(p, g ? g + g / 100 + 1 : p->load.queued.bytes / 2 + 1, now);
}
if (p->pressure.active && now >= p->pressure.deadline_ms) {
DEBUG_WARN(DEBUG_CATEGORY_STREAM, "stream OVERLOAD deadline peer=%llx id=%llu released=%llu required=%llu",

Loading…
Cancel
Save