revert fee40f5f469f4879dbcef4053fb39a1a6b75170e
revert Téléverser les fichiers vers "observabilite/observability/vm_observabilite_hardware_desVMs/scripts"
This commit is contained in:
parent
fee40f5f46
commit
9b94cd4159
@ -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
|
|
||||||
Loading…
x
Reference in New Issue
Block a user