Require multipath goodput without inflating channel queues

This commit is contained in:
evgeny committed 2026-10-23 00:08:15 +02:00
1 parent ade0e93f7f
commit 88eb0f2108
2 files changed
+6 -2

No files matched your search

+1
View File
@@ -88,6 +88,7 @@ static void bandwidth(unsigned bw) {
CHECK(elapsed * 100 >= expected * 95 && elapsed * 100 <= expected * 105 + 5000);
const struct dummynet_stats* stats = dummynet_get_stats(dn, 1-i);
CHECK(stats->sent_bytes == total && !stats->queue_size && !stats->lost && !stats->dropped);
CHECK(stats->max_queue_delay_us <= elapsed && stats->max_queue_delay_us >= expected - 40000);
}
teardown();
}
+5 -2
View File
@@ -286,13 +286,16 @@ static uint64_t measure_rate(const struct profile* settings, unsigned count, uns
for (unsigned p = 0; p < count; p++) if (mask & (1u << p)) {
uint64_t wire = dummynet_get_stats(channels[p], side)->sent_bytes * 8000 / elapsed;
uint64_t unique = traffic[side][p].rx_unique * 8000 / elapsed;
uint64_t queue_us = dummynet_get_stats(channels[p], side)->max_queue_delay_us;
unique_total += traffic[side][p].rx_unique;
capacity += settings[p].kbps;
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "RATE %s dir=%u path=%u RTT=%u BWlim=%u wire=%llu unique=%llu kbps retries=%llu",
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "RATE %s dir=%u path=%u RTT=%u BWlim=%u wire=%llu unique=%llu kbps retries=%llu queue_us=%llu",
case_name, side, p, settings[p].rtt_ms, settings[p].kbps, (unsigned long long)wire,
(unsigned long long)unique, (unsigned long long)traffic[side][p].retries);
(unsigned long long)unique, (unsigned long long)traffic[side][p].retries, (unsigned long long)queue_us);
expect(wire >= settings[p].kbps * 90 / 100, "channel wire utilization >=90%", wire, settings[p].kbps * 90 / 100);
expect(unique >= settings[p].kbps * 80 / 100, "channel unique DATA >=80%", unique, settings[p].kbps * 80 / 100);
expect(queue_us <= (settings[p].rtt_ms + 20) * 1000ULL, "queue delay <=base RTT+20ms",
queue_us, (settings[p].rtt_ms + 20) * 1000ULL);
}
uint64_t fresh = unique_total * 8000 / elapsed;
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "GOODPUT %s dir=%u application=%llu fresh_DATA=%llu capacity=%llu kbps", case_name, side,