Spaces:
Running
Running
File size: 1,592 Bytes
8cc9cda |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#!/bin/bash
# Установите пороги использования ЦПУ и ГПУ.
CPU_THRESHOLD=10
GPU_THRESHOLD=10
# Счетчик, сколько раз подряд нагрузка была ниже порога
LOW_USAGE_COUNT=0
while true; do
# Получаем текущую загрузку ЦПУ.
CPU_USAGE=$(mpstat 1 1 | awk '/Average/ {print 100 - $12}')
# Преобразуем десятичный разделитель в точку, если он в формате запятой
CPU_USAGE=$(LC_NUMERIC=C printf "%.0f\n" $CPU_USAGE)
# Получаем текущую загрузку ГПУ (предполагая использование nvidia-smi для NVIDIA GPUs)
GPU_USAGE=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits)
# Проверяем, ниже ли загрузка пороговых значений.
if [ $(echo "$CPU_USAGE < $CPU_THRESHOLD" | bc) -eq 1 ] && [ $(echo "$GPU_USAGE < $GPU_THRESHOLD" | bc) -eq 1 ]; then
# Увеличиваем счетчик низкой нагрузки.
((LOW_USAGE_COUNT++))
else
# Если нагрузка выше порога, сбрасываем счетчик.
LOW_USAGE_COUNT=0
fi
# Если низкая нагрузка была обнаружена в течение 60 минут, останавливаем скрипт.
if [ $LOW_USAGE_COUNT -ge 60 ]; then
runpodctl stop pod ${RUNPOD_POD_ID}
break
fi
# Пауза в одну минуту перед следующей итерацией.
sleep 60
done |