stlaurentjr commited on
Commit
8cc9cda
1 Parent(s): a3030da

Upload monitor_usage.sh

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