Record validated ACK batching and remaining solo duplex limits

This commit is contained in:
evgeny committed 2026-10-24 14:43:03 +02:00
1 parent 7737391ded
commit a297d2d649
2 files changed
+46

No files matched your search

+32
View File
@@ -22,6 +22,38 @@ piggyback разных путей, смену головы, early timer callback
Диагностика расширена до 106 полей: ранние записи внутри готовой пачки допустимы;
early_ordinary_ack_packets отдельно проверяет отправку всего пакета раньше срока.
Проверка после исправления: windows 60 сценариев PASS с управляемыми и реальными
часами; восемь профильных тестов ETCP/STCP ASAN/UBSan с detect_leaks=1 PASS без
ошибок/утечек. Отдельный ASAN two-stuck с диагностикой 10 мс: 5202 проверенных среза,
ранних ACK-пакетов нет, доставка/ресурсы PASS. Полный check.sh: 184/184, proxy 9/9,
burst 1/1, load 8/8 PASS, 134217728 проверенных байт, 185 с со сборкой.
Три последовательных bidirectional с диагностикой: ранних обычных ACK-пакетов 0
во всех трёх прогонах. На одиночном 8 Мбит/с пути полоса ACK 0.143..0.169 Мбит/с
вместо 0.347/0.390 в предыдущем диагностическом прогоне. Агрегат: A->B
8.667..8.804, B->A 8.695..8.796 из 10 Мбит/с. Сам агрегат проходит все свои пороги
каждый раз; весь профиль остаётся FAIL из-за одиночных каналов, с 3/2/4 нарушениями.
Средний возраст entries ACK-only на 8 Мбит/с может быть меньше 2 мс: внутри готового
кадра передаются и новые entries. Это учитывается отдельно от ранней отправки кадра.
Полная штатная последовательная матрица после калибровки эмулятора: первые шесть
скоростных профилей и все 9 профилей отказов PASS. Агрегированный goodput,
Мбит/с: equal 14.416/16, bandwidth 9.032/10, rtt 14.516/16, fast-distant 8.857/10,
slow-distant 8.978/10, three 11.122/12, bidirectional 8.750/8.768 из 10 на направление.
Остаются два FAIL одиночного дуплекса: 1.609 вместо 1.700 Мбит/с (путь 2 Мбит/с)
и 6.730 вместо 6.800 Мбит/с (обратное направление пути 8 Мбит/с).
Two-stuck: gap 206.227 мс, latency 375.457 мс; load-drop/load-hold: gap 41.402/41.845 мс,
steady goodput 7.229/7.466 из 8 Мбит/с. Max latency насыщенного источника
180.693/89.239 мс записана; отдельным порогом она здесь не ограничена.
Дальше отдельно разбирать недооценку полосы/PROBE_RTT одиночного дуплекса,
STCP backpressure и проверки изменения RTT/BW и повторного отказа.
Логи: /tmp/etcp-ack-deadline-{windows,real-time,full-check}.log,
/tmp/etcp-ack-deadline-asan-test_*.log, /tmp/etcp-ack-deadline-asan-two-stuck.log/.csv,
/tmp/etcp-ack-deadline-matrix.log/.csv, /tmp/etcp-ack-deadline-duplex-<1..3>.log/.csv.
Сводка ACK: /tmp/etcp-ack-deadline-summary.json; актуальный HTML с 106 полями:
/tmp/etcp-ack-deadline-duplex.html. Проверка CSV и JS smoke графиков/фильтров PASS.
Предыдущий этап: диагностика до исправления ACK.
24.10.2026: добавлена буферизованная диагностика multipath с шагом 100 мс.
+14
View File
@@ -25,6 +25,20 @@
Windows/FreeBSD runtime не проверялся.
[ ] **ETCP: полезная утилизация нескольких каналов и доставка при зависании части линков** — общая задача открыта.
24.10.2026: исправлен обход срока ACK посторонним wake. Абсолютный срок головы пути +2 мс,
один общий таймер, пересчёт после piggyback/частичной отправки; новые DATA не отодвигают старые ACK.
Наступивший ACK другого пути имеет приоритет перед DATA; свой DATA забирает его piggyback.
Сохранены срочный ответ, bounded burst, OOM fallback и очистка при reset/close; wire/BBR/RTO не менялись.
Windows 60 сценариев с обоими режимами часов PASS; восемь ASAN/UBSan-тестов и ASAN two-stuck без ошибок/утечек.
В трёх дуплексных прогонах ранних ACK-пакетов 0; на 8 Мбит/с ACK занимают 0.143..0.169 вместо прежних 0.347/0.390 Мбит/с.
Агрегат проходит все свои пороги: 8.667..8.804 / 8.695..8.796 из 10 Мбит/с; одиночные каналы ещё дают FAIL.
Полная матрица: первые 6 скоростных профилей и все 9 профилей отказов PASS, агрегат дуплекса 8.750/8.768.
Остались 2 FAIL одиночного дуплекса: 1.609<1.700 и 6.730<6.800 Мбит/с; дальше разбирать BW/PROBE_RTT и STCP backpressure.
Load-drop/load-hold: паузы 41.402/41.845 мс, steady 7.229/7.466 из 8 Мбит/с; max latency 180.693/89.239 мс записана.
Check.sh 184/184, proxy 9/9, burst 1/1, load 8/8 PASS, 134217728 проверенных байт, 185 с.
Диагностика 106 полей различает раннюю запись в готовой пачке и отправку всего ACK-пакета раньше срока.
Логи/CSV: /tmp/etcp-ack-deadline-*; HTML: /tmp/etcp-ack-deadline-duplex.html; детали — doc/etcp_multipath_plan.txt.
Предыдущий этап — диагностика до исправления ACK:
Продолжение 24.10.2026: диагностика срезов 100 мс (настройка 10..1000 мс), 104 поля; CSV и лог буферизуются до drain.
Видны очереди, callbacks/deferred waiter, DATA/ACK, flight/cwnd, BBR/RTT/RTO, долг/готовность pacer и канал эмулятора.
tools/etcp_diag_report.py проверяет CSV и строит автономные интерактивные графики с исходными срезами.