Діагностика затримки компонентів SSD
Використовуйте цю процедуру, коли ssd_mobilenet_boxdecode перевищує бюджет
затримки компонента. Успішний результат FPS не скасовує невдалий p99 компонента.
Явно визначайте межі вимірювання
Поточний граф готує числовий BoxDecode та його адаптер публікації вихідного формату як окремі елементи A65. Core володіє вихідним форматом передачі; Kernels — числовою операцією. Scheduler подає перевірені елементи через Runner.
| Компонент | Початок | Кінець | Включена робота |
|---|---|---|---|
boxdecode_backend_wall_v2.execution_envelope_wall | Виклик числового декодування | Завершення залежного виклику публікації вихідного формату | Декодування, проміжне планування й операції доступу, кодування формату передачі |
boxdecode_stage_wall_v2 | Допуск повного кадру перед отриманням виходу | Завершення звільнення ресурсів, фіналізації та відпускання входу | Отримання з пулу, прив’язування, виконання всіх елементів і фіналізація |
Ні час стадії, ні час бекенду не включає власне передавання цього кадру далі. Інтервал бекенду виключає попередні елементи перетворення. Інтервал стадії включає їх.
Це інтервали астрономічного часу, а не завантаження CPU чи чистий час ядра.
Вони навмисно мають іншу ідентичність, ніж старі інтервали boxdecode_backend
і boxdecode_plugin_exclusive. Не порівнюйте різні інтервали як доказ регресії
числового ядра й не вилучайте час черги, щоб отримати успішний результат.
Збережений у репозиторії щотижневий еталон потребує 1 000 вимірів та абсолютних меж p99: 0,7 мс для бекенду й 0,93 мс для стадії. Загальний допуск пропускної здатності не розширює ці межі компонентів. Під час діагностики не змінюйте межі, тестові дані, прогрівання, кількість ітерацій та граничні строки.
Зберігайте наявні докази
Матриця продуктивності тепер зберігає повністю захоплені stdout і stderr для
кожної спроби сценарію, включно з успішними запусками, некоректним виводом,
пропусками та відмовами супервізора. Поле run_meta.artifacts кожного результату
вказує на унікальний каталог scenario-logs/, що містить:
stdout.logіstderr.log: повні захоплені потоки, а не лише їхні кінці.invocation.json: команду, робочий каталог, кількість ітерацій, граничний строк і два значення середовища для керування трасуванням. Усе середовище не виводиться.outcome.json: результат порівняння та доступний результат процесу або супервізора.
Журнали містять усе, що виводить програма; переглядайте їх перед поширенням. Відмова супервізора може не містити виводу процесу. Порожні журнали не доводять, що процес виконувався, завершився або звільнив ресурси пристрою. Збережіть запис відмови та виконайте звичайну процедуру відновлення.
Для окремого діагностичного запуску використовуйте наявні засоби керування:
SIMA_NEAT_METRICS_RETAIN_TRACE=1зберігає файли LTTng Common Trace Format (CTF).SIMA_NEAT_METRICS_TRACE_DIRвибирає їхній батьківський каталог; збирач створює унікальний дочірній каталог для кожного сеансу.
Виконуйте матрицю на DevKit у межах нового допущеного апаратного тесту
з правильними встановленими постачальниками та прошивкою. Налаштуйте ці значення
середовища перед допуском; не змінюйте активну зафіксовану область кваліфікації.
Ця захищена діагностична процедура явно вибирає постійний супервізор через
SIMA_HARDWARE_SUPERVISOR_SOCKET; стандартний CI його не потребує. Матриця сама
не отримує володіння платою та не дозволяє змінювати прошивку.
Наприклад, із цільової робочої копії Core після вибору каталогу встановлених тестів і допуску діагностичного середовища:
: "${CORE_ROOT:?set the target Core checkout path}"
: "${CORE_TESTS:?set the installed target test directory}"
: "${SIMA_HARDWARE_SUPERVISOR_SOCKET:?use an admitted hardware-test scope}"
cd "$CORE_ROOT"
export SIMA_NEAT_METRICS_RETAIN_TRACE=1
export SIMA_NEAT_METRICS_TRACE_DIR="$CORE_ROOT/ssd-diagnostic-traces"
python3 tests/perf/tools/run_perf_matrix.py \
--repo-root "$CORE_ROOT" \
--prebuilt-tests-dir "$CORE_TESTS" \
--include-long \
--results-dir "$CORE_ROOT/ssd-diagnostic-results"
Це виконує повну щотижневу матрицю продуктивності, включно з SSD, і не перебудовує постачальників. Для цільових програм використовуйте кроскомпіляцію SDK та засіб запуску DevKit; ніколи не виконуйте тести AArch64 на хості x86.
За ввімкненого збереження трас, непорожнього перевизначення каталогу трас або
перевизначення кількості ітерацій результат записує
run_meta.execution_purpose: diagnostic. Порівняння й коди відмов не змінюються;
ця мітка не дозволяє послаблювати критерій прийняття. Без цих перевизначень
записується baseline_comparison, що саме по собі не доводить повного
канонічного запуску CI.
Запитаний батьківський каталог трас не є фактичною ідентичністю сеансу.
Прочитайте run_meta.measure_report.plugin_latency.trace_dir і стан збирання,
а потім архівуйте саме цей каталог разом із результатом і журналами сценарію.
Зберігайте ідентичності екземпляра зовнішнього модуля, запуску, графа, кадру та
запиту із записів CTF. Повідомляйте про відсутні події чи втрату трас замість
вигаданих зв’язків. Повторне використання каталогу результатів замінює JSON
верхнього рівня, але зберігає попередні каталоги журналів спроб; використовуйте
нові кореневі каталоги результатів і трас для окремих кампаній.