Коротко о главном
Высокий приоритет задачи не гарантирует малую задержку, если она ждёт ресурс. Записывайте не только время выполнения, но и ожидание mutex, а также смену его владельца.
Сделать блокировку наблюдаемой
Отметьте запрос ресурса, получение и освобождение. Одновременно наблюдайте задачу среднего приоритета, которая потребляет процессорное время, но не использует этот ресурс. Это помогает выявить косвенную задержку срочной задачи низкоприоритетным владельцем. FreeRTOS описывает базовое наследование приоритета для mutex FreeRTOS — Mutexes.
Сократить защищённый участок
Проверьте, нет ли под mutex ожидания сети, длинной передачи или другой блокировки. По возможности готовьте данные до захвата. Альтернативой может быть единственный владелец периферии с ограниченной очередью запросов. При такой перестройке также измеряйте время ожидания: смена механизма обмена сама по себе не доказывает соблюдение сроков. Зафиксируйте порядок захвата нескольких ресурсов.
Проверить конкурирующую нагрузку
Одновременно запустите вычислительную фоновую задачу и частые обращения к общему устройству. Сравните максимальную полную задержку с согласованным пределом. Отдельно исследуйте вложенные блокировки и редко возникающие длительные операции. Одиночный удачный запрос на свободной системе не показывает поведение под нагрузкой. Сохраните временную трассу вместе с настройками приоритетов и версией программы.
Контрольный список
- Записать владельца ресурса и время ожидания.
- Найти длительные операции внутри блокировок.
- Измерить полную задержку при конкуренции задач.
Частые вопросы
Бинарный семафор полностью заменяет mutex?
Нет. Различаются правила владения и наследование приоритета. Выбирайте средство в зависимости от взаимного исключения или синхронизации по событию.
Технические источники
Услуга по теме