forked from Dan4ick/Lidar_Muxa
41 lines
2.4 KiB
Bash
41 lines
2.4 KiB
Bash
#!/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
|