Record multipath baseline and verify pacer wakeup defect
This commit is contained in:
1 parent
a22a27b7a9
commit
ce3d942efe
2 files changed
+64
-1
No files matched your search
@@ -3,6 +3,56 @@ ETCP: независимая обратная связь каналов и до
|
||||
|
||||
Статус
|
||||
|
||||
Контроль текущей master a22a27b7,24.10.2026. Эмулятор прошёл калибровку2/8Мбит/с,
|
||||
затем штатная матрица выполнена последовательно с прежними порогами:15 нарушений.
|
||||
Агрегированный goodput (min(application,fresh DATA),Мбит/с): equal14.238/16,
|
||||
bandwidth9.000/10, rtt13.855/16, fast-distant8.602/10, slow-distant8.817/10,
|
||||
three10.669/12, bidirectional8.335/8.212 из10 на каждое направление.
|
||||
Первые пять профилей проходят. Three: единственный отказ одиночного канала
|
||||
2Мбит/с RTT200мс —1.695 вместо1.700; три отдельных повтора профиля проходят,
|
||||
этот одиночный канал даёт1.703..1.707. Дуплекс нарушает6 скоростных порогов.
|
||||
Ещё8 нарушений — пауза/задержка при drop-forward,slow-drop,two-stuck,load-drop/load-hold.
|
||||
Максимальные паузы соответственно122.308,244.610,208.533,304.969/178.050мс.
|
||||
Все профили завершают доставку и контроль ресурсов; ошибок формата/порядка/REINIT нет.
|
||||
Логи: /tmp/etcp-multipath-current-{build,dummynet,matrix}.log,
|
||||
/tmp/etcp-multipath-current-matrix.csv, /tmp/etcp-three-current-{1,2,3}.log/.csv.
|
||||
|
||||
Первое изолированное исправление после контроля — таймер pacer.
|
||||
Буферизованный трейс DATA/ACK/выбора пути/каждого BBR sample записывается в память,
|
||||
выводится после замера и не теряет события. На одиночном дуплексном8Мбит/с RTT80мс
|
||||
за4с BBR оставался PROBE_BW в обе стороны, но pacer терял6.5/9.4% заданного темпа.
|
||||
Расчётные бюджеты отправки3,733,752/3,480,084 байт, фактические DATA TX3,491,124/3,151,512;
|
||||
сброс кредита объясняет240,408/328,214 байт дефицита. После ожидания самого pacer
|
||||
потеряно168,861/290,263 байта; остальное связано с ожиданием окна.
|
||||
|
||||
Причина: shaper_arm не ставит таймер, если долг меньше уже разрешённого допуска1мс,
|
||||
но при большем долге ждёт его полного погашения. Округление uasync до миллисекунд
|
||||
и поздний callback приводят к выходу за кредит1мс; следующий send отбрасывает этот кредит.
|
||||
Готовность должна наступать при debt_tb<SHAPER_BURST_DELAY_TB:
|
||||
первый допустимый TB = shaper_load_time_tb - SHAPER_BURST_DELAY_TB +1.
|
||||
При текущем условии постановки delay>=1; +1 сохраняет строгую границу при любой
|
||||
дробной части. Ограничение INT_MAX применяется после расчёта; callback уже повторно
|
||||
вызывает shaper_arm перед уведомлением отправителя. Нового состояния/таймера не нужно.
|
||||
|
||||
Прототип в /tmp сдвигает только etcp_shaper timeout к этой границе, сохраняя кредит1мс,
|
||||
обычный BBR/PROBE_RTT, расчёт окна/min_rtt и пороги теста. Два последовательных опыта:
|
||||
потеря после pacer вместо169/290КБ составляет2..9КБ за4с; потери после ожидания cwnd остаются.
|
||||
Это устраняет95..99% изолированной потери pacer, но профиль дуплекса в целом ещё FAIL.
|
||||
Отдельный контроль без PROBE_RTT показывает вклад этой фазы в просадку агрегата,
|
||||
однако также не проходит всю матрицу; отключение PROBE_RTT не предлагается как исправление.
|
||||
|
||||
Перед переносом: регрессия позднего timer callback при незаполненном cwnd, проверка
|
||||
границы допуска с нулевой/ненулевой дробью и сохранения ограниченного burst после
|
||||
долгого простоя; смена ставки/0/unlimited, INT_MAX, OOM таймера, reset/close из callback.
|
||||
Проверить вначале windows/BBR/transport и ASAN/UBSan, затем повторить всю матрицу
|
||||
последовательно. Следующими отдельно разбирать оставшиеся ограничения BBR/cwnd,
|
||||
периодические PROBE_RTT и ранние копии; первый фикс не закрывает эти пункты.
|
||||
Артефакты: /tmp/etcp-probe-review.c/.mk, /tmp/etcp-duplex-waits.log,
|
||||
/tmp/etcp-ready-timer-{1,2}.log/.csv, /tmp/etcp-pacer-review-analysis.py,
|
||||
/tmp/etcp-pacer-review-results.json. Код протокола в репозитории в этом контроле не менялся.
|
||||
|
||||
История реализации и предыдущих проверок,23.10.2026:
|
||||
|
||||
В fix/etcp-multipath-recovery реализованы начальный pacing, точные DATA B/s,
|
||||
пересчёт pacing-долга, ограниченный кредит 1мс для округления таймеров и выход
|
||||
STARTUP в DRAIN после целого раунда RTT выше min_rtt+бюджет очереди.
|
||||
|
||||
+14
-1
@@ -4,7 +4,20 @@
|
||||
|
||||
## Текущие задачи
|
||||
|
||||
[ ] **ETCP: полезная утилизация нескольких каналов и доставка при зависании части линков** — работа в fix/etcp-multipath-recovery.
|
||||
[ ] **ETCP: полезная утилизация нескольких каналов и доставка при зависании части линков** — контроль рабочей master a22a27b7.
|
||||
24.10.2026: штатная последовательная матрица с прежними порогами даёт15 нарушений:
|
||||
один пограничный одиночный канал профиля three,6 скоростных проверок дуплекса и8 проверок пауз/задержек.
|
||||
Equal14.238/16, bandwidth9.000/10, RTT20/200:13.855/16Мбит/с проходят; дуплекс8.335/8.212 из10 FAIL.
|
||||
Пограничный three не повторился в3 отдельных прогонах; доставка/порядок/баланс ресурсов проходят.
|
||||
Следующий изолированный фикс — первый допустимый момент пробуждения pacer, сохраняя кредит1мс:
|
||||
shaper_arm сейчас ждёт полного погашения долга, хотя отправка допустима при долге<1мс.
|
||||
Округление/запоздание таймера приводит к сбросу кредита и потере6.5/9.4% заданного темпа в подробном опыте.
|
||||
Прототип /tmp будит к границе допуска и уменьшает потери после ожидания pacer на95..99%; потери cwnd остаются.
|
||||
Оба опыта прототипа сохраняют штатный BBR/PROBE_RTT, но весь дуплексный профиль пока не проходит.
|
||||
До переноса нужны проверки поздних callback, границы дробного долга, ограниченного burst, rate change и lifecycle;
|
||||
затем профильные sanitizer-тесты и полная матрица. Исполняемый код репозитория в этой диагностике не менялся.
|
||||
Результаты/план: doc/etcp_multipath_plan.txt, /tmp/etcp-pacer-review-results.json;
|
||||
логи /tmp/etcp-multipath-current-matrix.log/.csv и /tmp/etcp-ready-timer-{1,2}.log/.csv.
|
||||
Реализованы начальный pacing от 4*MSS/RTT, точные DATA B/s и ограниченный кредит shaper,
|
||||
разделение логического seq/payload и физических attempt_id, ACK/RTT/RTO каждого пути,
|
||||
ротация повторов A→B→C→A при UP-каналах, rollback отказавшего send и запрос потерянного till.
|
||||
|
||||
Reference in new issue
Block a user