Lab036: validate long-duration video scheduling
This commit is contained in:
104
data/processed/lab036/lab036_report.txt
Normal file
104
data/processed/lab036/lab036_report.txt
Normal file
@@ -0,0 +1,104 @@
|
||||
Lab036. Долговременная устойчивость видеопланировщика при изменении пропускной способности
|
||||
|
||||
1. Исходное состояние и конфигурация
|
||||
- Commit Lab035: 22c2eeab8cc794e67378485f49c236a622f814a7.
|
||||
- Рабочее дерево перед Lab036 было чистым; ветка main.
|
||||
- Модель использует 600 с, 1800 кадров, повтор реальной последовательности размеров 63 кадров, BASE 240×135 Q23, ROI 320×180 Q33 и 3 составных кадра/с.
|
||||
- Lab036 использует ровно 3 кадра/с в течение 600 с; короткий ролик Lab034 и предшествующих лабораторных давал немного отличающуюся фактическую частоту формирования кадров.
|
||||
- Длинный опыт уменьшает влияние начального и конечного участков, поэтому значения общей предложенной нагрузки Lab034 и Lab036 не обязаны побайтно совпадать.
|
||||
- Каждый повтор получает новые composite_frame_id, времена, заголовки и CRC; JPEG и пакеты на диск не записываются.
|
||||
- Используются внутренний пакет Lab028 с payload 512 байт, FEC 12+3 с выравниванием по кадрам и общий пакет Lab033.
|
||||
- Команды 20 Гц, телеметрия 10 Гц; аварийные команды создаются в 60, 180, 310 и 480 с.
|
||||
- Ошибки радиоканала отсутствуют.
|
||||
- Смена скорости не прерывает начатый пакет: новая скорость применяется только к следующему пакету после завершения текущего.
|
||||
|
||||
2. Пятнадцать сочетаний
|
||||
scenario | policy | published/drop | fps | age P95 ms | queue max packets | queue at 600 packets | drain s | control P95 ms | emergency max ms
|
||||
constant_300 | no_drop | 1800/0 | 3.000 | 600.000 | 22 | 0 | 0.000 | 17.466 | 1.707
|
||||
constant_300 | latest_only | 1800/0 | 3.000 | 600.000 | 22 | 0 | 0.000 | 17.466 | 1.707
|
||||
constant_300 | two_waiting | 1800/0 | 3.000 | 600.000 | 22 | 0 | 0.000 | 17.466 | 1.707
|
||||
constant_260 | no_drop | 1800/0 | 2.977 | 4866.667 | 268 | 238 | 4.146 | 19.652 | 18.421
|
||||
constant_260 | latest_only | 1772/28 | 2.953 | 833.333 | 40 | 0 | 0.000 | 19.046 | 10.513
|
||||
constant_260 | two_waiting | 1787/13 | 2.977 | 1166.667 | 58 | 6 | 0.084 | 19.652 | 18.421
|
||||
constant_230 | no_drop | 1800/0 | 2.608 | 74633.333 | 4155 | 4139 | 82.753 | 22.157 | 15.896
|
||||
constant_230 | latest_only | 1570/230 | 2.615 | 1000.000 | 40 | 17 | 0.317 | 22.157 | 10.817
|
||||
constant_230 | two_waiting | 1571/229 | 2.615 | 1333.333 | 57 | 26 | 0.486 | 22.191 | 12.765
|
||||
step_300_230_300 | no_drop | 1800/0 | 3.000 | 21966.667 | 1279 | 0 | 0.000 | 19.409 | 21.461
|
||||
step_300_230_300 | latest_only | 1730/70 | 2.883 | 900.000 | 40 | 0 | 0.000 | 19.444 | 3.791
|
||||
step_300_230_300 | two_waiting | 1731/69 | 2.885 | 1233.333 | 58 | 0 | 0.000 | 19.339 | 3.826
|
||||
variable_300_260_230 | no_drop | 1800/0 | 2.970 | 5666.667 | 326 | 295 | 5.804 | 20.403 | 19.077
|
||||
variable_300_260_230 | latest_only | 1716/84 | 2.858 | 900.000 | 40 | 14 | 0.261 | 20.194 | 14.593
|
||||
variable_300_260_230 | two_waiting | 1725/75 | 2.872 | 1233.333 | 56 | 29 | 0.562 | 20.309 | 19.077
|
||||
|
||||
3. Постоянные скорости: теория и модель
|
||||
rate | policy | reserve kbps | theory growth B/s | model growth B/s | minimum skip | stable fps | minute queue packets
|
||||
300 | no_drop | 38.278 | 0.000 | -11.601 | 0.000000 | 3.000 | 21;21;21;20;19;21;21;21;21;0
|
||||
300 | latest_only | 38.278 | 0.000 | -11.601 | 0.000000 | 3.000 | 21;21;21;20;19;21;21;21;21;0
|
||||
300 | two_waiting | 38.278 | 0.000 | -11.601 | 0.000000 | 3.000 | 21;21;21;20;19;21;21;21;21;0
|
||||
260 | no_drop | -1.722 | 215.258 | 218.649 | 0.007063 | 2.979 | 48;65;90;117;149;176;197;214;233;238
|
||||
260 | latest_only | -1.722 | 215.258 | -5.668 | 0.007063 | 2.979 | 32;24;21;20;21;24;39;32;24;0
|
||||
260 | two_waiting | -1.722 | 215.258 | -12.199 | 0.007063 | 2.979 | 48;29;35;43;39;49;52;37;37;6
|
||||
230 | no_drop | -31.722 | 3965.258 | 3967.819 | 0.130116 | 2.610 | 429;841;1255;1672;2093;2511;2924;3335;3745;4139
|
||||
230 | latest_only | -31.722 | 3965.258 | -6.550 | 0.130116 | 2.610 | 37;33;38;26;34;26;28;37;38;17
|
||||
230 | two_waiting | -31.722 | 3965.258 | -22.350 | 0.130116 | 2.610 | 42;56;52;53;44;55;55;47;43;26
|
||||
|
||||
4. Восстановление после ухудшения
|
||||
policy | age at 300 ms | below 1000 s | below 500 s | excess queue clear s | dropped old | published old
|
||||
no_drop | 24333.333 | 147.641 | 149.802 | 150.023 | 0 | 72
|
||||
latest_only | 666.667 | 0.000 | 0.077 | 0.008 | 0 | 1
|
||||
two_waiting | 1000.000 | 0.059 | 1.135 | 1.355 | 0 | 2
|
||||
|
||||
5. Видео, очередь, команды и телеметрия
|
||||
- constant_300: fps=3.000, age P95=600.000 мс, queue max=22, waiting max=1, control P95/max=17.466/17.787 мс, emergency=1.706667;1.706667;1.706667;1.706667 мс, telemetry P95=19.574 мс.
|
||||
- constant_260: fps=2.953, age P95=833.333 мс, queue max=40, waiting max=1, control P95/max=19.046/20.667 мс, emergency=7.528538;1.969231;10.513154;7.528538 мс, telemetry P95=22.144 мс.
|
||||
- constant_230: fps=2.615, age P95=1000.000 мс, queue max=40, waiting max=1, control P95/max=22.157/23.357 мс, emergency=6.852174;4.660870;9.808696;10.817391 мс, telemetry P95=25.426 мс.
|
||||
- step_300_230_300: fps=2.883, age P95=900.000 мс, queue max=40, waiting max=1, control P95/max=19.444/23.357 мс, emergency=1.706667;3.791304;1.706667;1.706667 мс, telemetry P95=22.541 мс.
|
||||
- variable_300_260_230: fps=2.858, age P95=900.000 мс, queue max=40, waiting max=1, control P95/max=20.194/23.373 мс, emergency=7.528538;1.969231;10.513154;14.593065 мс, telemetry P95=23.376 мс.
|
||||
- Политика самого свежего кадра ограничивает ожидающую видеоочередь одним кадром и не передаёт накопленную историю после восстановления.
|
||||
- Политика двух ожидающих кадров ограничивает очередь двумя кадрами, но увеличивает возраст изображения относительно основной политики.
|
||||
- Без удаления при дефиците скорости очередь растёт; при 300 кбит/с запас достаточен.
|
||||
- У упреждающих политик нет бесполезно переданных видеобайтов: начатый кадр всегда завершается.
|
||||
|
||||
6. Функциональные проверки
|
||||
- PASS 01_unique_repeated_frames_and_crc: PASS
|
||||
- PASS 02_300kbps_latest_has_no_unnecessary_drop: PASS
|
||||
- PASS 03_260kbps_no_drop_matches_small_deficit: PASS
|
||||
- PASS 04_230kbps_no_drop_grows_faster: PASS
|
||||
- PASS 05_latest_waiting_limit: PASS
|
||||
- PASS 06_two_waiting_limit: PASS
|
||||
- PASS 07_started_frame_never_dropped: PASS
|
||||
- PASS 08_active_video_frames_do_not_interleave: PASS
|
||||
- PASS 09_priority_between_video_packets: PASS
|
||||
- PASS 10_emergency_never_deleted: PASS
|
||||
- PASS 11_speed_change_bit_accounting: PASS
|
||||
- PASS 12_latest_does_not_replay_full_history: PASS
|
||||
- PASS 13_proactive_policies_have_no_waste: PASS
|
||||
- PASS 14_incomplete_frame_not_published: PASS
|
||||
- PASS 15_all_three_crc_layers_pass: PASS
|
||||
- PASS 16_frame_accounting: PASS
|
||||
- PASS 17_packet_and_byte_accounting: PASS
|
||||
- PASS 18_reproducible: PASS
|
||||
- CRC-проверено общих пакетов: 49794; FEC-блоков: 3571.
|
||||
|
||||
7. Созданные файлы
|
||||
- tests/lab036_long_duration_scheduler.py
|
||||
- data/processed/lab036/lab036_summary.csv
|
||||
- data/processed/lab036/lab036_video_metrics.csv
|
||||
- data/processed/lab036/lab036_control_metrics.csv
|
||||
- data/processed/lab036/lab036_recovery_metrics.csv
|
||||
- data/processed/lab036/lab036_report.txt
|
||||
- data/processed/lab036/lab036_image_age_timeline.png
|
||||
- data/processed/lab036/lab036_queue_timeline.png
|
||||
- data/processed/lab036/lab036_minute_update_rate.png
|
||||
- data/processed/lab036/lab036_recovery.png
|
||||
- data/processed/lab036/lab036_control_delay.png
|
||||
- data/processed/lab036/lab036_frame_outcomes.png
|
||||
- data/processed/lab036/lab036_queue_growth_theory.png
|
||||
- data/processed/lab036/lab036_policy_comparison.png
|
||||
|
||||
8. Итоговый Git status
|
||||
- Lab036 не добавлена в индекс и не закоммичена.
|
||||
|
||||
## main...origin/main
|
||||
?? data/processed/lab036/
|
||||
?? tests/lab036_long_duration_scheduler.py
|
||||
Reference in New Issue
Block a user