потери целиком в обвязке теста, причём в двух разных местах
This commit is contained in:
@@ -82,7 +82,14 @@ GWP=\$!
|
||||
/tmp/transmitter -f $FREQ -r $RATE -b $BW -g $TXGAIN -p $PAUSE \
|
||||
-c $FEC $GFLAG -u local: < /tmp/gw.fifo 2>/tmp/tx.log &
|
||||
TXP=\$!
|
||||
sleep 1
|
||||
# Ждём готовности транзмиттера, а не спим вслепую: инициализация iio (LO, буферы)
|
||||
# занимает секунды, а из пайпа он до неё не читает. Пайп 64 КБ ≈ весь тестовый
|
||||
# файл → шлюз штатно дропает хвост по бэкпрешеру, если начать лить раньше.
|
||||
i=0
|
||||
while [ \$i -lt 20 ]; do
|
||||
grep -q "Ожидание данных" /tmp/tx.log 2>/dev/null && break
|
||||
i=\$((i+1)); sleep 1
|
||||
done
|
||||
/tmp/udp_probe send 127.0.0.1:$PORT_A $CHUNK $PACE_MS \
|
||||
< /tmp/probe_in.bin 2>/tmp/probe_tx.log
|
||||
sleep 2
|
||||
@@ -93,9 +100,14 @@ EOF
|
||||
|
||||
echo "=== [5/6] Гашение цепочки B ==="
|
||||
sleep 3 # дохлебать хвост эфира
|
||||
# udp_probe по SIGTERM печатает статистику и закрывает файл — гасим активно,
|
||||
# не дожидаясь IDLE (тот же паттерн sleep+kill, что в test_file_link.sh).
|
||||
"${SSH[@]}" -n "root@$B" "killall udp_probe receiver udp_gw 2>/dev/null || true" || true
|
||||
# ПОРЯДОК ГАШЕНИЯ КРИТИЧЕН. receiver.c:798 — group_flush()+rb_flush_all() стоят
|
||||
# ПОСЛЕ основного цикла: хвост незавершённой группы (до 16 кадров) уходит в
|
||||
# stdout только в момент смерти приёмника. Поэтому гасим строго по течению:
|
||||
# receiver (флашит хвост) → пауза на прохождение через udp_gw -d → udp_probe.
|
||||
# Убить их разом = потерять последнюю группу (было: доставлено 64, принято 48).
|
||||
"${SSH[@]}" -n "root@$B" "killall receiver 2>/dev/null || true" || true
|
||||
sleep 3 # хвост: receiver → пайп → udp_gw -d (выйдет сам по EOF) → UDP → probe
|
||||
"${SSH[@]}" -n "root@$B" "killall udp_probe udp_gw 2>/dev/null || true" || true
|
||||
wait "$B_PID" 2>/dev/null || true
|
||||
|
||||
echo "=== [6/6] Сверка ==="
|
||||
@@ -123,6 +135,10 @@ else
|
||||
echo " Меры: TXGAIN ближе к −20, антенны разнести/переориентировать."
|
||||
echo " - 'дропов' > 0 у 'udp_gw -l (вход)' → вход быстрее линка (~107 КБ/с"
|
||||
echo " на -G -p 3000): подними PACE_MS. Это контрактный дроп, семантика UDP."
|
||||
echo " Если дропов ровно 1-2 в конце — транзмиттер ещё не читал пайп на"
|
||||
echo " старте (см. ожидание 'Ожидание данных' в шаге [4])."
|
||||
echo " - 'доставлено' > принятых probe → гашение обогнало хвост приёмника"
|
||||
echo " (receiver.c:798 флашит последнюю группу только при выходе)."
|
||||
echo " - размер 0 и в rx.log 0 кадров → приёмник не работал во время передачи:"
|
||||
echo " частота/усиление/антенны, либо цепочка B умерла по IDLE (=$IDLE с)."
|
||||
echo " - размер совпал, md5 нет → искажение полезной нагрузки: техдолг #1/#3."
|
||||
|
||||
Reference in New Issue
Block a user