Spaces:
Running
Running
| # Установите пороги использования ЦПУ и ГПУ. | |
| CPU_THRESHOLD=5 | |
| GPU_THRESHOLD=5 | |
| # Счетчик, сколько раз подряд нагрузка была ниже порога | |
| 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 | |
| # Если низкая нагрузка была обнаружена в течение 40 минут, останавливаем под. | |
| if [ $LOW_USAGE_COUNT -ge 40 ]; then | |
| runpodctl stop pod ${RUNPOD_POD_ID} | |
| break | |
| fi | |
| # Пауза в одну минуту перед следующей итерацией. | |
| sleep 60 | |
| done |