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