Lab035: add proactive video frame admission
This commit is contained in:
99
data/processed/lab035/lab035_report.txt
Normal file
99
data/processed/lab035/lab035_report.txt
Normal file
@@ -0,0 +1,99 @@
|
||||
Lab035. Упреждающий допуск видеокадров и обслуживание видео целыми кадрами
|
||||
|
||||
1. Исходное состояние
|
||||
- Commit Lab034: b63e36abdb7031d642de8b8138b43cc29e94b759.
|
||||
- Перед Lab035 рабочее дерево было чистым; main опережала origin/main на два commit.
|
||||
|
||||
2. Правило обслуживания
|
||||
- После первого видеопакета кадр становится активным и не удаляется.
|
||||
- При повторном выборе видео передаётся следующий пакет активного кадра; команды и телеметрия могут передаваться между пакетами.
|
||||
- Новый видеокадр начинается только после полного завершения активного; видеопакеты разных кадров не чередуются; отдельный пакет не прерывается.
|
||||
- Только неактивные кадры могут быть удалены до передачи первого пакета.
|
||||
|
||||
3. Теоретическая пропускная способность
|
||||
speed | nonvideo kbps | remaining video kbps | remaining/aligned | minimum skip | maximum fps
|
||||
300 | 17.973 | 282.027 | 1.143443 | 0.000000 | 3.000
|
||||
260 | 17.973 | 242.027 | 0.981268 | 0.018732 | 2.944
|
||||
230 | 17.973 | 212.027 | 0.859636 | 0.140364 | 2.579
|
||||
|
||||
4. Восемнадцать сочетаний
|
||||
speed | policy | published/drop/partial | fps | age P95 ms | no-update max ms | queue max/waiting frames | waste bytes | prediction MAE/P95/max ms | control P95/max ms | emergency ms
|
||||
300 | Без удаления | 63/0/0 | 2.986 | 590.000 | 406.506 | 21/1 | 0 | 0.000000/0.000000/0.000000 | 17.466/17.787 | 1.707
|
||||
300 | Реактивная 1500 мс | 63/0/0 | 2.986 | 590.000 | 406.506 | 21/1 | 0 | 0.000000/0.000000/0.000000 | 17.466/17.787 | 1.707
|
||||
300 | Самый свежий | 63/0/0 | 2.986 | 590.000 | 406.506 | 21/1 | 0 | 0.000000/0.000000/0.000000 | 17.466/17.787 | 1.707
|
||||
300 | Два ожидающих | 63/0/0 | 2.986 | 590.000 | 406.506 | 21/1 | 0 | 0.000000/0.000000/0.000000 | 17.466/17.787 | 1.707
|
||||
300 | Прогноз 1000 мс | 63/0/0 | 2.986 | 590.000 | 406.506 | 21/1 | 0 | 0.000000/0.000000/0.000000 | 17.466/17.787 | 1.707
|
||||
300 | Прогноз 500 мс | 63/0/0 | 2.986 | 590.000 | 406.506 | 21/1 | 0 | 0.000000/0.000000/0.000000 | 17.466/17.787 | 1.707
|
||||
260 | Без удаления | 63/0/0 | 2.937 | 773.833 | 417.764 | 37/1 | 0 | 0.000000/0.000000/0.000000 | 18.908/20.492 | 1.969
|
||||
260 | Реактивная 1500 мс | 63/0/0 | 2.937 | 773.833 | 417.764 | 37/1 | 0 | 0.000000/0.000000/0.000000 | 18.908/20.492 | 1.969
|
||||
260 | Самый свежий | 63/0/0 | 2.937 | 773.833 | 417.764 | 37/1 | 0 | 0.000000/0.000000/0.000000 | 18.908/20.492 | 1.969
|
||||
260 | Два ожидающих | 63/0/0 | 2.937 | 773.833 | 417.764 | 37/1 | 0 | 0.000000/0.000000/0.000000 | 18.908/20.492 | 1.969
|
||||
260 | Прогноз 1000 мс | 63/0/0 | 2.937 | 773.833 | 417.764 | 37/1 | 0 | 0.000000/0.000000/0.000000 | 18.908/20.492 | 1.969
|
||||
260 | Прогноз 500 мс | 62/1/0 | 2.889 | 703.333 | 524.266 | 29/1 | 0 | 0.000000/0.000000/0.000000 | 18.908/20.533 | 1.969
|
||||
230 | Без удаления | 63/0/0 | 2.600 | 2913.333 | 424.000 | 160/8 | 0 | 0.000000/0.000000/0.000000 | 22.500/24.557 | 22.330
|
||||
230 | Реактивная 1500 мс | 27/0/36 | 1.300 | 11064.833 | 10626.980 | 87/4 | 321929 | 0.000000/0.000000/0.000000 | 22.461/24.557 | 22.330
|
||||
230 | Самый свежий | 56/7/0 | 2.600 | 960.000 | 426.226 | 37/1 | 0 | 0.000000/0.000000/0.000000 | 22.043/23.339 | 6.226
|
||||
230 | Два ожидающих | 57/6/0 | 2.600 | 1286.667 | 421.183 | 56/2 | 0 | 0.000000/0.000000/0.000000 | 22.539/23.339 | 6.991
|
||||
230 | Прогноз 1000 мс | 56/7/0 | 2.600 | 1226.667 | 426.226 | 53/2 | 0 | 0.000000/0.000000/0.000000 | 22.317/23.357 | 2.365
|
||||
230 | Прогноз 500 мс | 47/16/0 | 2.215 | 966.667 | 622.817 | 28/1 | 0 | 0.000000/0.000000/0.000000 | 22.212/23.304 | 5.739
|
||||
|
||||
5. Интерпретация
|
||||
- Реактивная Lab034 начинает кадр без гарантии завершения, затем удаляет остаток: уже переданные байты становятся бесполезными, а обновление не публикуется.
|
||||
- Удаление до первого пакета исключает бесполезную передачу; обслуживание целыми кадрами гарантирует, что начатый кадр будет опубликован.
|
||||
- Политика самого свежего уменьшает задержку ожидающих данных, но удаляет больше промежуточных кадров; очередь из двух кадров сохраняет больше последовательных обновлений ценой возраста.
|
||||
- Прогноз полного завершения учитывает весь размер кадра и будущую периодическую высокоприоритетную нагрузку, поэтому полезнее проверки только текущего возраста.
|
||||
- В модели точно известны команды 20 Гц, телеметрия 10 Гц и аварийная команда 10,0 с; неизвестные будущие дискретные события не моделируются и в реальной системе потребовали бы запаса.
|
||||
- При устойчивой перегрузке невозможно одновременно сохранить все кадры, исходное JPEG-качество и малую задержку; требуется уменьшить частоту, качество или заранее пропускать кадры.
|
||||
- Частота обновления, возраст изображения и длительность отсутствия нового изображения оцениваются одновременно: оптимизация одного показателя может ухудшить остальные.
|
||||
|
||||
6. Допущения
|
||||
- Ошибки и помехи отсутствуют; один общий абстрактный ресурс, форматы Lab028-Lab034 неизменны, активный пакет не прерывается.
|
||||
- Прогноз не изменяет настоящую очередь; для допущенных кадров сохраняются только агрегированные ошибки, без подробного журнала.
|
||||
- Политика автоматически не выбирается.
|
||||
|
||||
7. Функциональные проверки
|
||||
- PASS 01_video_frames_do_not_interleave: PASS
|
||||
- PASS 02_started_frame_never_dropped: PASS
|
||||
- PASS 03_high_priority_between_frame_packets: PASS
|
||||
- PASS 04_latest_drops_only_unstarted: PASS
|
||||
- PASS 05_two_waiting_limit: PASS
|
||||
- PASS 06_prediction_is_pure: PASS
|
||||
- PASS 07_prediction_uses_actual_sizes: PASS
|
||||
- PASS 08_prestart_drop_has_no_waste: PASS
|
||||
- PASS 09_partial_only_reactive: PASS
|
||||
- PASS 10_incomplete_not_published: PASS
|
||||
- PASS 11_crc_layers_pass: PASS
|
||||
- PASS 12_emergency_never_deleted: PASS
|
||||
- PASS 13_priority_above_video: PASS
|
||||
- PASS 14_300kbps_no_unnecessary_loss: PASS
|
||||
- PASS 15_230kbps_bounded_queue: PASS
|
||||
- PASS 16_frame_accounting: PASS
|
||||
- PASS 17_byte_accounting: PASS
|
||||
- PASS 18_reproducible: PASS
|
||||
- PASS 19_predict_1000_never_known_late: PASS
|
||||
- PASS 20_command_delay_bound: PASS
|
||||
|
||||
8. Созданные файлы
|
||||
- protocol/video_frame_scheduler.py
|
||||
- tests/lab035_video_frame_admission.py
|
||||
- data/processed/lab035/lab035_summary.csv
|
||||
- data/processed/lab035/lab035_video_metrics.csv
|
||||
- data/processed/lab035/lab035_control_metrics.csv
|
||||
- data/processed/lab035/lab035_prediction_metrics.csv
|
||||
- data/processed/lab035/lab035_report.txt
|
||||
- data/processed/lab035/lab035_update_rate.png
|
||||
- data/processed/lab035/lab035_image_age.png
|
||||
- data/processed/lab035/lab035_publication_delay.png
|
||||
- data/processed/lab035/lab035_frame_outcomes.png
|
||||
- data/processed/lab035/lab035_queue_size.png
|
||||
- data/processed/lab035/lab035_prediction_accuracy.png
|
||||
- data/processed/lab035/lab035_control_delay.png
|
||||
- data/processed/lab035/lab035_policy_comparison.png
|
||||
|
||||
9. Итоговый Git status
|
||||
- Lab035 не добавлена в индекс и не закоммичена.
|
||||
|
||||
## main...origin/main [ahead 2]
|
||||
?? data/processed/lab035/
|
||||
?? protocol/video_frame_scheduler.py
|
||||
?? tests/lab035_video_frame_admission.py
|
||||
Reference in New Issue
Block a user