Lidar_Muxa/docker/jury_cpu_test.sh

41 lines
2.4 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# Узел на урезанном процессоре — имитация стенда жюри (i7-9700E).
#
# bash docker/jury_cpu_test.sh /root/bags/doubleT_obstacle # доля 0.61
# bash docker/jury_cpu_test.sh /root/bags/cloud_with_fake_obj 0.5
#
# Запускается на хосте (в WSL), не в контейнере. Узел идёт в отдельном
# контейнере с квотой процессора, а проигрыватель и подсчёт — во втором, без
# квоты: на стенде у проигрывателя свои ядра, и делить с ним квоту узла было бы
# строже, чем на самом деле.
#
# Доля по умолчанию — отношение однопоточной производительности (PassMark
# single thread): 2511 у i7-9700E против 4129 у Ryzen 5 7600X, на котором
# писались замеры. Узел однопоточный (BLAS в один поток), поэтому доля одного
# ядра и есть «ядро в 1.64 раза медленнее». Для другой машины передайте свою
# долю. Квота нарезается периодами по 10 мс, а не по 100 мс по умолчанию, —
# иначе узел работал бы рывками по 61 мс и стоял бы по 39 мс, что искажает
# задержку кадра сильнее, чем настоящий медленный процессор.
set -u
BAG="${1:?укажите путь к бэгу на хосте}"
SHARE="${2:-0.61}"
here="$(cd "$(dirname "$0")" && pwd)"
bag_dir="$(cd "$(dirname "$BAG")" && pwd)"
bag_name="$(basename "$BAG")"
quota=$(awk -v s="$SHARE" 'BEGIN{printf "%d", s * 10000}')
docker rm -f fg_slow >/dev/null 2>&1 || true
docker run -d --name fg_slow --network host --ipc host \
--cpu-period 10000 --cpu-quota "$quota" flyguard > /dev/null
echo "узел: квота $SHARE ядра ($quota мкс из 10000)"
docker run --rm --network host --ipc host -e NODE=external \
-v "$bag_dir:/data:ro" -v "$here:/smoke:ro" flyguard \
bash /smoke/demo_test.sh "/data/$bag_name" 2>&1 | grep -v "^\s*$"
docker kill --signal=INT fg_slow > /dev/null 2>&1
sleep 3
echo
echo "=== итог узла ==="
docker logs fg_slow 2>&1 | grep -E "итог|ошибк|Traceback" | sed 's/.*\] //'
docker rm -f fg_slow > /dev/null 2>&1