revert fee40f5f469f4879dbcef4053fb39a1a6b75170e

revert Téléverser les fichiers vers "observabilite/observability/vm_observabilite_hardware_desVMs/scripts"
This commit is contained in:
Kimrau 2025-11-14 16:08:39 +00:00
parent fee40f5f46
commit 9b94cd4159

View File

@ -1,139 +0,0 @@
#!/usr/bin/env bash
# Script de stress "fort mais contrôlable" pour VM Linux
# - CPU : boucle infinie sur plusieurs cœurs
# - RAM : allocation d'un pourcentage de la RAM
# - DISK : gros fichier + lectures en boucle
#
# ⚠️ À adapter AVANT d'exécuter : les variables MEM_PRESSURE_PCT, DISK_FILE_SIZE_MB, etc.
set -euo pipefail
########## PARAMÈTRES À ADAPTER ##########
# Pourcentage de RAM à consommer (50 = 50%)
MEM_PRESSURE_PCT=60
# Nombre de workers CPU
# 0 = "autant que de vCPU" (nproc)
CPU_WORKERS=0
# Taille du fichier de stress disque (en MiB)
DISK_FILE_SIZE_MB=1024 # 1024 MiB ≈ 1 GiB
# Répertoire temporaire utilisé pour le test disque
TEST_DIR=/tmp/vm_stress_test
##########################################
pids=()
cleanup() {
echo
echo "[*] Nettoyage en cours..."
# On essaie de tuer proprement tous les jobs de fond
for pid in "${pids[@]}"; do
if kill -0 "$pid" 2>/dev/null; then
kill "$pid" 2>/dev/null || true
fi
done
# On attend un peu qu'ils se terminent
sleep 1
for pid in "${pids[@]}"; do
if kill -0 "$pid" 2>/dev/null; then
kill -9 "$pid" 2>/dev/null || true
fi
done
# On supprime les fichiers disque
rm -rf "$TEST_DIR" 2>/dev/null || true
echo "[*] Nettoyage terminé. La charge devrait retomber dans quelques secondes."
}
trap cleanup INT TERM EXIT
mkdir -p "$TEST_DIR"
echo "=== Infos de la VM ==="
if command -v nproc >/dev/null 2>&1; then
echo "CPU : $(nproc) vCPU détectés"
fi
if [ -r /proc/meminfo ]; then
mem_total_kb=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
echo "RAM totale : $((mem_total_kb / 1024)) MiB"
fi
echo
########## STRESS CPU ##########
cpu_workers=${CPU_WORKERS:-0}
if [ "$cpu_workers" -le 0 ]; then
cpu_workers=$(nproc)
fi
echo "[*] Lancement de $cpu_workers workers CPU…"
for ((i=0; i<cpu_workers; i++)); do
# Boucle occupée, avec une micro-pause pour éviter un comportement trop violent
while :; do
: # opération vide
: # on fait travailler un peu le CPU
: # encore une fois
sleep 0.001
done &
pids+=("$!")
done
########## STRESS RAM ##########
if [ -r /proc/meminfo ]; then
mem_total_kb=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
target_kb=$((mem_total_kb * MEM_PRESSURE_PCT / 100))
echo "[*] Allocation d'environ ${MEM_PRESSURE_PCT}% de la RAM (~$((target_kb / 1024)) MiB)…"
python3 - <<EOF &
import time
target_kb = $target_kb
block = b"x" * 1024 # 1 KiB
chunks = []
try:
for _ in range(target_kb):
chunks.append(block)
# On garde la RAM occupée
while True:
time.sleep(1)
except MemoryError:
# Si on atteint la limite mémoire, on sort calmement
time.sleep(1)
EOF
pids+=("$!")
else
echo "[!] /proc/meminfo non disponible, pas de stress RAM."
fi
########## STRESS DISQUE ##########
echo "[*] Création d'un fichier de ${DISK_FILE_SIZE_MB} MiB sur le disque et lectures en boucle…"
(
file="$TEST_DIR/bigfile.bin"
# Écriture initiale
dd if=/dev/zero of="$file" bs=1M count="$DISK_FILE_SIZE_MB" status=none
# Boucle de lecture en continu pour stresser le disque
while :; do
dd if="$file" of=/dev/null bs=1M status=none
done
) &
pids+=("$!")
echo
echo "=== STRESS DÉMARRÉ ==="
echo "- CPU : $cpu_workers workers en boucle"
echo "- RAM : ~${MEM_PRESSURE_PCT}% de la RAM allouée (si possible)"
echo "- DISK : fichier de ${DISK_FILE_SIZE_MB} MiB lu en boucle"
echo
echo "Surveille l'effet avec :"
echo " top / htop / free -h / iotop (si installé)"
echo
echo "▶ Appuie sur Ctrl+C pour arrêter le script."
echo " Tous les processus de stress seront tués et les fichiers temporaires supprimés."
# On attend tous les jobs de fond (jusqu'à Ctrl+C)
wait