Require multipath goodput without inflating channel queues
This commit is contained in:
1 parent
ade0e93f7f
commit
88eb0f2108
2 files changed
+6
-2
No files matched your search
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user