maj
This commit is contained in:
187
scripts/bench.sh
187
scripts/bench.sh
@@ -14,7 +14,7 @@ set -e
|
||||
# Version / variables globales
|
||||
#=========================================================
|
||||
|
||||
BENCH_SCRIPT_VERSION="1.1.0"
|
||||
BENCH_SCRIPT_VERSION="1.2.0"
|
||||
|
||||
# Couleurs
|
||||
GREEN='\033[0;32m'
|
||||
@@ -108,7 +108,7 @@ check_dependencies() {
|
||||
|
||||
echo -e "${BLUE}Vérification des dépendances...${NC}"
|
||||
|
||||
for tool in curl jq lscpu free lsblk ip bc; do
|
||||
for tool in curl jq lscpu free lsblk ip bc smartctl; do
|
||||
command -v "$tool" &>/dev/null || missing+=("$tool")
|
||||
done
|
||||
|
||||
@@ -146,6 +146,7 @@ check_dependencies() {
|
||||
[lsblk]="util-linux"
|
||||
[ip]="iproute2"
|
||||
[bc]="bc"
|
||||
[smartctl]="smartmontools"
|
||||
[sysbench]="sysbench"
|
||||
[fio]="fio"
|
||||
[iperf3]="iperf3"
|
||||
@@ -236,7 +237,18 @@ collect_cpu_info() {
|
||||
local vendor model cores threads
|
||||
vendor=$(lscpu | awk -F: '/Vendor ID/ {gsub(/^[ \t]+/,"",$2); print $2}')
|
||||
model=$(lscpu | awk -F: '/Model name/ {gsub(/^[ \t]+/,"",$2); print $2}')
|
||||
cores=$(lscpu | awk -F: '/^CPU\(s\)/ {gsub(/^[ \t]+/,"",$2); print $2}')
|
||||
|
||||
# Calcul du nombre de cores physiques: Core(s) per socket × Socket(s)
|
||||
local cores_per_socket sockets
|
||||
cores_per_socket=$(lscpu | awk -F: '/Core\(s\) per socket/ {gsub(/^[ \t]+/,"",$2); gsub(/[^0-9]/,"",$2); print $2}')
|
||||
sockets=$(lscpu | awk -F: '/Socket\(s\)/ {gsub(/^[ \t]+/,"",$2); gsub(/[^0-9]/,"",$2); print $2}')
|
||||
|
||||
# S'assurer que les valeurs sont des nombres valides
|
||||
[[ -z "$cores_per_socket" || "$cores_per_socket" == "0" ]] && cores_per_socket=1
|
||||
[[ -z "$sockets" || "$sockets" == "0" ]] && sockets=1
|
||||
|
||||
cores=$((cores_per_socket * sockets))
|
||||
|
||||
threads=$(nproc)
|
||||
|
||||
local cpu_mhz cpu_max_mhz base_freq_ghz max_freq_ghz
|
||||
@@ -253,9 +265,17 @@ collect_cpu_info() {
|
||||
fi
|
||||
|
||||
local cache_l1_kb cache_l2_kb cache_l3_kb
|
||||
cache_l1_kb=$(lscpu | awk -F: '/L1d cache/ {gsub(/[^0-9]/,"",$2); print $2}')
|
||||
cache_l2_kb=$(lscpu | awk -F: '/L2 cache/ {gsub(/[^0-9]/,"",$2); print $2}')
|
||||
cache_l3_kb=$(lscpu | awk -F: '/L3 cache/ {gsub(/[^0-9]/,"",$2); print $2}')
|
||||
# L1 cache = L1d + L1i
|
||||
# Parser format: "384 KiB (12 instances)" ou "6 MiB (12 instances)"
|
||||
# Extraire le premier nombre + unité, ignorer "(X instances)"
|
||||
# Utilisation de sed pour extraire "nombre unité" puis awk pour convertir MiB en KB
|
||||
local cache_l1d cache_l1i
|
||||
cache_l1d=$(lscpu | grep 'L1d cache' | sed -n 's/.*:\s*\([0-9]\+\)\s*\(KiB\|MiB\).*/\1 \2/p' | awk '{if ($2 == "MiB") print $1*1024; else print $1}')
|
||||
cache_l1i=$(lscpu | grep 'L1i cache' | sed -n 's/.*:\s*\([0-9]\+\)\s*\(KiB\|MiB\).*/\1 \2/p' | awk '{if ($2 == "MiB") print $1*1024; else print $1}')
|
||||
cache_l1_kb=$((${cache_l1d:-0} + ${cache_l1i:-0}))
|
||||
|
||||
cache_l2_kb=$(lscpu | grep 'L2 cache' | sed -n 's/.*:\s*\([0-9]\+\)\s*\(KiB\|MiB\).*/\1 \2/p' | awk '{if ($2 == "MiB") print $1*1024; else print $1}')
|
||||
cache_l3_kb=$(lscpu | grep 'L3 cache' | sed -n 's/.*:\s*\([0-9]\+\)\s*\(KiB\|MiB\).*/\1 \2/p' | awk '{if ($2 == "MiB") print $1*1024; else print $1}')
|
||||
|
||||
local flags
|
||||
flags=$(lscpu | awk -F: '/Flags/ {gsub(/^[ \t]+/,"",$2); print $2}')
|
||||
@@ -410,6 +430,7 @@ collect_hardware_info() {
|
||||
local gpu_vendor="null"
|
||||
local gpu_model="null"
|
||||
local gpu_vram="null"
|
||||
local gpu_driver="null"
|
||||
|
||||
if command -v lspci &>/dev/null; then
|
||||
local gpu_line
|
||||
@@ -418,6 +439,17 @@ collect_hardware_info() {
|
||||
gpu_model=$(echo "$gpu_line" | sed 's/.*: //')
|
||||
if echo "$gpu_line" | grep -qi 'nvidia'; then
|
||||
gpu_vendor="NVIDIA"
|
||||
# Essayer d'obtenir plus d'infos avec nvidia-smi
|
||||
if command -v nvidia-smi &>/dev/null; then
|
||||
local nvidia_model nvidia_vram nvidia_driver
|
||||
nvidia_model=$(nvidia-smi --query-gpu=name --format=csv,noheader 2>/dev/null | head -1)
|
||||
nvidia_vram=$(nvidia-smi --query-gpu=memory.total --format=csv,noheader,nounits 2>/dev/null | head -1)
|
||||
nvidia_driver=$(nvidia-smi --query-gpu=driver_version --format=csv,noheader 2>/dev/null | head -1)
|
||||
|
||||
[[ -n "$nvidia_model" ]] && gpu_model="$nvidia_model"
|
||||
[[ -n "$nvidia_vram" ]] && gpu_vram="$nvidia_vram"
|
||||
[[ -n "$nvidia_driver" ]] && gpu_driver="$nvidia_driver"
|
||||
fi
|
||||
elif echo "$gpu_line" | grep -qi 'amd'; then
|
||||
gpu_vendor="AMD"
|
||||
elif echo "$gpu_line" | grep -qi 'intel'; then
|
||||
@@ -432,14 +464,20 @@ collect_hardware_info() {
|
||||
--arg vendor "$gpu_vendor" \
|
||||
--arg model "$gpu_model" \
|
||||
--arg vram "$gpu_vram" \
|
||||
--arg driver "$gpu_driver" \
|
||||
'{
|
||||
vendor: $vendor,
|
||||
model: $model,
|
||||
vram_mb: (if $vram == "null" or $vram == "" then null else ($vram | tonumber?) end)
|
||||
memory_dedicated_mb: (if $vram == "null" or $vram == "" then null else ($vram | tonumber?) end),
|
||||
driver_version: (if $driver == "null" or $driver == "" then null else $driver end)
|
||||
}')
|
||||
|
||||
if [[ "$gpu_model" != "null" ]]; then
|
||||
log_info "GPU: $gpu_model"
|
||||
if [[ "$gpu_vram" != "null" ]]; then
|
||||
log_info "GPU: $gpu_model (${gpu_vram}MB VRAM)"
|
||||
else
|
||||
log_info "GPU: $gpu_model"
|
||||
fi
|
||||
else
|
||||
log_warn "GPU non détecté"
|
||||
fi
|
||||
@@ -497,13 +535,30 @@ collect_storage_info() {
|
||||
local interface="unknown"
|
||||
[[ -n "$tran" ]] && interface="$tran"
|
||||
|
||||
local model="Unknown" serial="Unknown"
|
||||
local model="Unknown" serial="Unknown" temperature="null" smart_health="null"
|
||||
if command -v smartctl &>/dev/null; then
|
||||
if sudo smartctl -i "/dev/$d" &>/dev/null; then
|
||||
local s
|
||||
s=$(sudo smartctl -i "/dev/$d" 2>/dev/null)
|
||||
model=$(echo "$s" | awk -F: '/Device Model|Model Number/ {gsub(/^[ \t]+/,"",$2); print $2}' | head -1)
|
||||
serial=$(echo "$s" | awk -F: '/Serial Number/ {gsub(/^[ \t]+/,"",$2); print $2}' | head -1)
|
||||
|
||||
# Essayer de récupérer la température et le statut SMART
|
||||
local smart_all
|
||||
smart_all=$(sudo smartctl -A "/dev/$d" 2>/dev/null || true)
|
||||
# Température (diverses variantes selon le type de disque)
|
||||
# SATA/HDD: Temperature_Celsius, Airflow_Temperature_Cel, Current Drive Temperature
|
||||
# RAW_VALUE est après le "-" (colonne 8 dans la plupart des cas, mais peut varier)
|
||||
# On extrait tout après le "-" puis prend le premier nombre
|
||||
# NVMe: Temperature: XX Celsius (colonne 2)
|
||||
temperature=$(echo "$smart_all" | awk '/Temperature_Celsius|Airflow_Temperature_Cel|Current Drive Temperature/ {for(i=1;i<=NF;i++) if($i=="-" && i<NF) {print $(i+1); exit}}' | head -1 | grep -oE '^[0-9]+' | head -1)
|
||||
[[ -z "$temperature" ]] && temperature=$(echo "$smart_all" | awk '/^Temperature:/ {print $2}' | head -1)
|
||||
[[ -z "$temperature" ]] && temperature="null"
|
||||
|
||||
# Statut SMART health
|
||||
local health
|
||||
health=$(sudo smartctl -H "/dev/$d" 2>/dev/null | awk '/SMART overall-health|SMART Health Status/ {print $NF}' | head -1)
|
||||
[[ -n "$health" ]] && smart_health="$health" || smart_health="null"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -517,18 +572,26 @@ collect_storage_info() {
|
||||
--arg type "$disk_type" \
|
||||
--arg interface "$interface" \
|
||||
--arg serial "$serial" \
|
||||
--arg temp "$temperature" \
|
||||
--arg health "$smart_health" \
|
||||
'{
|
||||
device: $device,
|
||||
model: $model,
|
||||
size_gb: $size,
|
||||
type: $type,
|
||||
interface: $interface,
|
||||
serial: $serial
|
||||
serial: $serial,
|
||||
temperature_c: (if $temp == "null" or $temp == "" then null else ($temp | tonumber?) end),
|
||||
smart_health: (if $health == "null" or $health == "" then null else $health end)
|
||||
}')
|
||||
|
||||
storage_array=$(echo "$storage_array" | jq --argjson disk "$disk_json" '. + [$disk]')
|
||||
|
||||
log_info "Disque: /dev/$d - $model ($size_h, $disk_type)"
|
||||
if [[ "$temperature" != "null" ]]; then
|
||||
log_info "Disque: /dev/$d - $model ($size_h, $disk_type, ${temperature}°C)"
|
||||
else
|
||||
log_info "Disque: /dev/$d - $model ($size_h, $disk_type)"
|
||||
fi
|
||||
done
|
||||
|
||||
STORAGE_INFO="$storage_array"
|
||||
@@ -567,10 +630,12 @@ collect_network_info() {
|
||||
local e
|
||||
e=$(sudo ethtool "$iface" 2>/dev/null || true)
|
||||
local spd
|
||||
spd=$(echo "$e" | awk -F: '/Speed:/ {gsub(/ Mb\/s/,"",$2); gsub(/^[ \t]+/,"",$2); print $2}')
|
||||
# Extraire seulement le nombre de la vitesse (enlever "Mb/s")
|
||||
spd=$(echo "$e" | awk -F: '/Speed:/ {gsub(/^[ \t]+/,"",$2); print $2}' | grep -oE '[0-9]+' | head -1)
|
||||
[[ -n "$spd" ]] && speed="$spd"
|
||||
local wol
|
||||
wol=$(echo "$e" | awk -F: '/Wake-on:/ {gsub(/^[ \t]+/,"",$2); print $2}')
|
||||
# Extraire Wake-on-LAN et nettoyer (enlever retours chariot)
|
||||
wol=$(echo "$e" | awk -F: '/Wake-on:/ {gsub(/^[ \t]+/,"",$2); print $2}' | tr -d '\n' | head -1)
|
||||
if [[ -n "$wol" && "$wol" != "d" ]]; then
|
||||
wol_supported="true"
|
||||
elif [[ -n "$wol" ]]; then
|
||||
@@ -578,6 +643,14 @@ collect_network_info() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# Convertir wol_supported en booléen ou null pour jq
|
||||
local wol_json="null"
|
||||
if [[ "$wol_supported" == "true" ]]; then
|
||||
wol_json="true"
|
||||
elif [[ "$wol_supported" == "false" ]]; then
|
||||
wol_json="false"
|
||||
fi
|
||||
|
||||
local net_json
|
||||
net_json=$(jq -n \
|
||||
--arg name "$iface" \
|
||||
@@ -585,17 +658,22 @@ collect_network_info() {
|
||||
--arg mac "$mac" \
|
||||
--arg ip "${ip_addr:-}" \
|
||||
--arg speed "$speed" \
|
||||
--arg wol "$wol_supported" \
|
||||
--argjson wol "$wol_json" \
|
||||
'{
|
||||
name: $name,
|
||||
type: $type,
|
||||
mac: $mac,
|
||||
ip_address: ( $ip | select(. != "") ),
|
||||
speed_mbps: ( ( $speed | tonumber? ) // null ),
|
||||
wake_on_lan: ( if $wol == "" then null else ( $wol|test("true";"i") ) end )
|
||||
}')
|
||||
wake_on_lan: $wol
|
||||
}' 2>/dev/null || echo '{}')
|
||||
|
||||
network_array=$(echo "$network_array" | jq --argjson net "$net_json" '. + [$net]')
|
||||
# Vérifier que net_json est valide avant de l'ajouter
|
||||
if [[ "$net_json" != "{}" ]] && echo "$net_json" | jq empty 2>/dev/null; then
|
||||
network_array=$(echo "$network_array" | jq --argjson net "$net_json" '. + [$net]')
|
||||
else
|
||||
log_warn "Interface $iface: JSON invalide, ignorée"
|
||||
fi
|
||||
|
||||
log_info "Interface: $iface ($type) - IP: ${ip_addr:-N/A}"
|
||||
done
|
||||
@@ -647,7 +725,9 @@ run_benchmarks() {
|
||||
local mem_res
|
||||
mem_res=$(sysbench memory --memory-total-size=1G run 2>&1 || true)
|
||||
local thr
|
||||
thr=$(echo "$mem_res" | awk '/transferred/ {print $6}' | head -1)
|
||||
# Extraire le throughput - essayer plusieurs patterns
|
||||
thr=$(echo "$mem_res" | grep -oP '\d+\.\d+(?= MiB/sec)' | head -1)
|
||||
[[ -z "$thr" ]] && thr=$(echo "$mem_res" | awk '/transferred/ {print $(NF-1)}' | head -1)
|
||||
[[ -z "$thr" ]] && thr=0
|
||||
local mem_score
|
||||
mem_score=$(safe_bc "scale=2; $thr / 100")
|
||||
@@ -727,44 +807,46 @@ run_benchmarks() {
|
||||
|
||||
if ping -c 1 -W 1 "$target" &>/dev/null; then
|
||||
if nc -z "$target" 5201 &>/dev/null; then
|
||||
# Test upload (client → serveur)
|
||||
local upload_result=$(iperf3 -c "$target" -t 10 -J 2>/dev/null || echo '{}')
|
||||
# Test bidirectionnel (upload + download simultanés)
|
||||
local bidir_result=$(iperf3 -c "$target" -t 10 --bidir -J 2>/dev/null || echo '{}')
|
||||
|
||||
local upload_mbps="0"
|
||||
local download_mbps="0"
|
||||
local ping_ms="null"
|
||||
|
||||
if [[ "$upload_result" != "{}" ]]; then
|
||||
# Extraire le débit d'upload en bits/sec et convertir en Mbps
|
||||
local upload_bps=$(echo "$upload_result" | jq '.end.sum_sent.bits_per_second // 0')
|
||||
upload_mbps=$(echo "scale=2; $upload_bps / 1000000" | bc)
|
||||
if [[ "$bidir_result" != "{}" ]]; then
|
||||
# Extraire upload (end.sum_sent) et download (end.sum_received)
|
||||
local upload_bps=$(echo "$bidir_result" | jq -r '.end.sum_sent.bits_per_second // 0' | tr -d '\n')
|
||||
local download_bps=$(echo "$bidir_result" | jq -r '.end.sum_received.bits_per_second // 0' | tr -d '\n')
|
||||
|
||||
# Test download (serveur → client avec -R)
|
||||
local download_result=$(iperf3 -c "$target" -t 10 -R -J 2>/dev/null || echo '{}')
|
||||
if [[ "$download_result" != "{}" ]]; then
|
||||
local download_bps=$(echo "$download_result" | jq '.end.sum_received.bits_per_second // 0')
|
||||
download_mbps=$(echo "scale=2; $download_bps / 1000000" | bc)
|
||||
fi
|
||||
upload_mbps=$(safe_bc "scale=2; $upload_bps / 1000000" | tr -d '\n')
|
||||
download_mbps=$(safe_bc "scale=2; $download_bps / 1000000" | tr -d '\n')
|
||||
|
||||
# Mesurer le ping
|
||||
local ping_output=$(ping -c 5 "$target" 2>/dev/null | grep 'avg' || echo "")
|
||||
if [[ -n "$ping_output" ]]; then
|
||||
ping_ms=$(echo "$ping_output" | awk -F'/' '{print $5}')
|
||||
ping_ms=$(echo "$ping_output" | awk -F'/' '{print $5}' | tr -d '\n')
|
||||
fi
|
||||
|
||||
# Score réseau
|
||||
local net_score=$(echo "scale=2; ($upload_mbps + $download_mbps) / 20" | bc)
|
||||
local net_score=$(safe_bc "scale=2; ($upload_mbps + $download_mbps) / 20" | tr -d '\n')
|
||||
|
||||
# S'assurer que les valeurs sont valides pour jq
|
||||
[[ -z "$upload_mbps" || "$upload_mbps" == "null" ]] && upload_mbps="0"
|
||||
[[ -z "$download_mbps" || "$download_mbps" == "null" ]] && download_mbps="0"
|
||||
[[ -z "$ping_ms" || "$ping_ms" == "null" ]] && ping_ms="0"
|
||||
[[ -z "$net_score" || "$net_score" == "null" ]] && net_score="0"
|
||||
|
||||
net_bench=$(jq -n \
|
||||
--argjson upload "$upload_mbps" \
|
||||
--argjson download "$download_mbps" \
|
||||
--argjson ping "${ping_ms:-null}" \
|
||||
--argjson ping "$ping_ms" \
|
||||
--argjson score "$net_score" \
|
||||
'{upload_mbps: $upload, download_mbps: $download, ping_ms: $ping, score: $score}')
|
||||
|
||||
log_info "Réseau: ↑${upload_mbps}Mbps ↓${download_mbps}Mbps (ping: ${ping_ms}ms, score: ${net_score})"
|
||||
else
|
||||
log_warn "Test iperf3 upload échoué - Network bench ignoré"
|
||||
log_warn "Test iperf3 bidirectionnel échoué - Network bench ignoré"
|
||||
fi
|
||||
else
|
||||
log_warn "Port iperf3 (5201) fermé sur $target - Network bench ignoré"
|
||||
@@ -780,28 +862,43 @@ run_benchmarks() {
|
||||
local gpu_bench="null"
|
||||
log_warn "GPU bench non implémenté - ignoré"
|
||||
|
||||
# Score global (CPU 40%, RAM 30%, Disque 30%)
|
||||
# Score global selon pondérations recommandées :
|
||||
# CPU 30%, RAM 20%, Disque 25%, Réseau 15%, GPU 10%
|
||||
local scores="" total_weight=0
|
||||
|
||||
if [[ "$cpu_bench" != "null" ]]; then
|
||||
local cs
|
||||
cs=$(echo "$cpu_bench" | jq '.score // 0')
|
||||
scores="$scores + $cs * 0.4"
|
||||
total_weight=$(safe_bc "$total_weight + 0.4")
|
||||
scores="$scores + $cs * 0.30"
|
||||
total_weight=$(safe_bc "$total_weight + 0.30")
|
||||
fi
|
||||
|
||||
if [[ "$mem_bench" != "null" ]]; then
|
||||
local ms
|
||||
ms=$(echo "$mem_bench" | jq '.score // 0')
|
||||
scores="$scores + $ms * 0.3"
|
||||
total_weight=$(safe_bc "$total_weight + 0.3")
|
||||
scores="$scores + $ms * 0.20"
|
||||
total_weight=$(safe_bc "$total_weight + 0.20")
|
||||
fi
|
||||
|
||||
if [[ "$disk_bench" != "null" ]]; then
|
||||
local ds
|
||||
ds=$(echo "$disk_bench" | jq '.score // 0')
|
||||
scores="$scores + $ds * 0.3"
|
||||
total_weight=$(safe_bc "$total_weight + 0.3")
|
||||
scores="$scores + $ds * 0.25"
|
||||
total_weight=$(safe_bc "$total_weight + 0.25")
|
||||
fi
|
||||
|
||||
if [[ "$net_bench" != "null" ]]; then
|
||||
local ns
|
||||
ns=$(echo "$net_bench" | jq '.score // 0')
|
||||
scores="$scores + $ns * 0.15"
|
||||
total_weight=$(safe_bc "$total_weight + 0.15")
|
||||
fi
|
||||
|
||||
if [[ "$gpu_bench" != "null" ]]; then
|
||||
local gs
|
||||
gs=$(echo "$gpu_bench" | jq '.score // 0')
|
||||
scores="$scores + $gs * 0.10"
|
||||
total_weight=$(safe_bc "$total_weight + 0.10")
|
||||
fi
|
||||
|
||||
scores=$(echo "$scores" | sed -E 's/^[[:space:]]*\+ //')
|
||||
@@ -924,8 +1021,8 @@ send_benchmark_payload() {
|
||||
capacity_gb: (.size_gb | tonumber? // .size_gb),
|
||||
vendor: null,
|
||||
model,
|
||||
smart_health: null,
|
||||
temperature_c: null
|
||||
smart_health,
|
||||
temperature_c
|
||||
}
|
||||
],
|
||||
partitions: []
|
||||
@@ -940,7 +1037,8 @@ send_benchmark_payload() {
|
||||
mac,
|
||||
ip: .ip_address,
|
||||
speed_mbps,
|
||||
driver: null
|
||||
driver: null,
|
||||
wake_on_lan
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -948,6 +1046,7 @@ send_benchmark_payload() {
|
||||
motherboard: {
|
||||
vendor: $mb.manufacturer,
|
||||
model: $mb.model,
|
||||
bios_vendor: $mb.bios_vendor,
|
||||
bios_version: $mb.bios_version,
|
||||
bios_date: $mb.bios_date
|
||||
},
|
||||
|
||||
366
scripts/resultat_bench_aorus.md
Normal file
366
scripts/resultat_bench_aorus.md
Normal file
@@ -0,0 +1,366 @@
|
||||
════════════════════════════════════════════════════════
|
||||
DEBUG: Payload JSON complet
|
||||
════════════════════════════════════════════════════════
|
||||
{
|
||||
"device_identifier": "aorus",
|
||||
"bench_script_version": "1.2.0",
|
||||
"hardware": {
|
||||
"cpu": {
|
||||
"vendor": "AuthenticAMD",
|
||||
"model": "AMD Ryzen 9 5900X 12-Core Processor",
|
||||
"cores": 12,
|
||||
"threads": 24,
|
||||
"base_freq_ghz": null,
|
||||
"max_freq_ghz": 4.95,
|
||||
"cache_l1_kb": 76824,
|
||||
"cache_l2_kb": 612,
|
||||
"cache_l3_kb": 642,
|
||||
"flags": [
|
||||
"fpu",
|
||||
"vme",
|
||||
"de",
|
||||
"pse",
|
||||
"tsc",
|
||||
"msr",
|
||||
"pae",
|
||||
"mce",
|
||||
"cx8",
|
||||
"apic",
|
||||
"sep",
|
||||
"mtrr",
|
||||
"pge",
|
||||
"mca",
|
||||
"cmov",
|
||||
"pat",
|
||||
"pse36",
|
||||
"clflush",
|
||||
"mmx",
|
||||
"fxsr",
|
||||
"sse",
|
||||
"sse2",
|
||||
"ht",
|
||||
"syscall",
|
||||
"nx",
|
||||
"mmxext",
|
||||
"fxsr_opt",
|
||||
"pdpe1gb",
|
||||
"rdtscp",
|
||||
"lm",
|
||||
"constant_tsc",
|
||||
"rep_good",
|
||||
"nopl",
|
||||
"xtopology",
|
||||
"nonstop_tsc",
|
||||
"cpuid",
|
||||
"extd_apicid",
|
||||
"aperfmperf",
|
||||
"rapl",
|
||||
"pni",
|
||||
"pclmulqdq",
|
||||
"monitor",
|
||||
"ssse3",
|
||||
"fma",
|
||||
"cx16",
|
||||
"sse4_1",
|
||||
"sse4_2",
|
||||
"x2apic",
|
||||
"movbe",
|
||||
"popcnt",
|
||||
"aes",
|
||||
"xsave",
|
||||
"avx",
|
||||
"f16c",
|
||||
"rdrand",
|
||||
"lahf_lm",
|
||||
"cmp_legacy",
|
||||
"svm",
|
||||
"extapic",
|
||||
"cr8_legacy",
|
||||
"abm",
|
||||
"sse4a",
|
||||
"misalignsse",
|
||||
"3dnowprefetch",
|
||||
"osvw",
|
||||
"ibs",
|
||||
"skinit",
|
||||
"wdt",
|
||||
"tce",
|
||||
"topoext",
|
||||
"perfctr_core",
|
||||
"perfctr_nb",
|
||||
"bpext",
|
||||
"perfctr_llc",
|
||||
"mwaitx",
|
||||
"cpb",
|
||||
"cat_l3",
|
||||
"cdp_l3",
|
||||
"hw_pstate",
|
||||
"ssbd",
|
||||
"mba",
|
||||
"ibrs",
|
||||
"ibpb",
|
||||
"stibp",
|
||||
"vmmcall",
|
||||
"fsgsbase",
|
||||
"bmi1",
|
||||
"avx2",
|
||||
"smep",
|
||||
"bmi2",
|
||||
"erms",
|
||||
"invpcid",
|
||||
"cqm",
|
||||
"rdt_a",
|
||||
"rdseed",
|
||||
"adx",
|
||||
"smap",
|
||||
"clflushopt",
|
||||
"clwb",
|
||||
"sha_ni",
|
||||
"xsaveopt",
|
||||
"xsavec",
|
||||
"xgetbv1",
|
||||
"xsaves",
|
||||
"cqm_llc",
|
||||
"cqm_occup_llc",
|
||||
"cqm_mbm_total",
|
||||
"cqm_mbm_local",
|
||||
"user_shstk",
|
||||
"clzero",
|
||||
"irperf",
|
||||
"xsaveerptr",
|
||||
"rdpru",
|
||||
"wbnoinvd",
|
||||
"arat",
|
||||
"npt",
|
||||
"lbrv",
|
||||
"svm_lock",
|
||||
"nrip_save",
|
||||
"tsc_scale",
|
||||
"vmcb_clean",
|
||||
"flushbyasid",
|
||||
"decodeassists",
|
||||
"pausefilter",
|
||||
"pfthreshold",
|
||||
"avic",
|
||||
"v_vmsave_vmload",
|
||||
"vgif",
|
||||
"v_spec_ctrl",
|
||||
"umip",
|
||||
"pku",
|
||||
"ospke",
|
||||
"vaes",
|
||||
"vpclmulqdq",
|
||||
"rdpid",
|
||||
"overflow_recov",
|
||||
"succor",
|
||||
"smca",
|
||||
"fsrm",
|
||||
"debug_swap"
|
||||
],
|
||||
"microarchitecture": null,
|
||||
"tdp_w": null
|
||||
},
|
||||
"ram": {
|
||||
"total_mb": 48096,
|
||||
"used_mb": 7458,
|
||||
"free_mb": 36521,
|
||||
"shared_mb": 146,
|
||||
"slots_total": 4,
|
||||
"slots_used": 4,
|
||||
"ecc": false,
|
||||
"layout": [
|
||||
{
|
||||
"slot": "DIMM",
|
||||
"size_mb": 16384,
|
||||
"type": "DDR4",
|
||||
"speed_mhz": 0,
|
||||
"vendor": "Unknown",
|
||||
"part_number": null
|
||||
},
|
||||
{
|
||||
"slot": "DIMM",
|
||||
"size_mb": 8192,
|
||||
"type": "DDR4",
|
||||
"speed_mhz": 0,
|
||||
"vendor": "Unknown",
|
||||
"part_number": null
|
||||
},
|
||||
{
|
||||
"slot": "DIMM",
|
||||
"size_mb": 16384,
|
||||
"type": "DDR4",
|
||||
"speed_mhz": 0,
|
||||
"vendor": "Unknown",
|
||||
"part_number": null
|
||||
},
|
||||
{
|
||||
"slot": "DIMM",
|
||||
"size_mb": 8192,
|
||||
"type": "DDR4",
|
||||
"speed_mhz": 0,
|
||||
"vendor": "Unknown",
|
||||
"part_number": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"gpu": {
|
||||
"vendor": "NVIDIA",
|
||||
"model": "NVIDIA GeForce RTX 3060",
|
||||
"driver_version": null,
|
||||
"memory_dedicated_mb": null,
|
||||
"memory_shared_mb": null,
|
||||
"api_support": []
|
||||
},
|
||||
"storage": {
|
||||
"devices": [
|
||||
{
|
||||
"name": "/dev/sda",
|
||||
"type": "SSD",
|
||||
"interface": "sata",
|
||||
"capacity_gb": 447.1,
|
||||
"vendor": null,
|
||||
"model": "KINGSTON SUV500480G",
|
||||
"smart_health": "PASSED",
|
||||
"temperature_c": 23
|
||||
},
|
||||
{
|
||||
"name": "/dev/sdb",
|
||||
"type": "SSD",
|
||||
"interface": "usb",
|
||||
"capacity_gb": 0,
|
||||
"vendor": null,
|
||||
"model": "Unknown",
|
||||
"smart_health": null,
|
||||
"temperature_c": null
|
||||
},
|
||||
{
|
||||
"name": "/dev/sdc",
|
||||
"type": "SSD",
|
||||
"interface": "usb",
|
||||
"capacity_gb": 0,
|
||||
"vendor": null,
|
||||
"model": "Unknown",
|
||||
"smart_health": null,
|
||||
"temperature_c": null
|
||||
},
|
||||
{
|
||||
"name": "/dev/sdd",
|
||||
"type": "SSD",
|
||||
"interface": "usb",
|
||||
"capacity_gb": 0,
|
||||
"vendor": null,
|
||||
"model": "Unknown",
|
||||
"smart_health": null,
|
||||
"temperature_c": null
|
||||
},
|
||||
{
|
||||
"name": "/dev/sde",
|
||||
"type": "SSD",
|
||||
"interface": "usb",
|
||||
"capacity_gb": 0,
|
||||
"vendor": null,
|
||||
"model": "Unknown",
|
||||
"smart_health": null,
|
||||
"temperature_c": null
|
||||
},
|
||||
{
|
||||
"name": "/dev/nvme0n1",
|
||||
"type": "SSD",
|
||||
"interface": "nvme",
|
||||
"capacity_gb": 465.8,
|
||||
"vendor": null,
|
||||
"model": "CT500P2SSD8",
|
||||
"smart_health": "PASSED",
|
||||
"temperature_c": 29
|
||||
},
|
||||
{
|
||||
"name": "/dev/nvme1n1",
|
||||
"type": "SSD",
|
||||
"interface": "nvme",
|
||||
"capacity_gb": 465.8,
|
||||
"vendor": null,
|
||||
"model": "CT500P2SSD8",
|
||||
"smart_health": "PASSED",
|
||||
"temperature_c": 30
|
||||
}
|
||||
],
|
||||
"partitions": []
|
||||
},
|
||||
"network": {
|
||||
"interfaces": [
|
||||
{
|
||||
"name": "eno1",
|
||||
"type": "ethernet",
|
||||
"mac": "18:c0:4d:b5:65:74",
|
||||
"ip": "10.0.1.109",
|
||||
"speed_mbps": null,
|
||||
"driver": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"motherboard": {
|
||||
"vendor": "Gigabyte Technology Co., Ltd.",
|
||||
"model": "B450 AORUS ELITE",
|
||||
"bios_version": "F65e",
|
||||
"bios_date": "09/20/2023"
|
||||
},
|
||||
"os": {
|
||||
"name": "debian",
|
||||
"version": "13 (trixie)",
|
||||
"kernel_version": "6.12.57+deb13-amd64",
|
||||
"architecture": "x86_64",
|
||||
"virtualization_type": "none"
|
||||
},
|
||||
"sensors": {
|
||||
"cpu_temp_c": null,
|
||||
"disk_temps_c": {}
|
||||
},
|
||||
"raw_info": {
|
||||
"lscpu": null,
|
||||
"lsblk": null
|
||||
}
|
||||
},
|
||||
"results": {
|
||||
"cpu": {
|
||||
"events_per_sec": 26823.16,
|
||||
"duration_s": 10.0008,
|
||||
"score": 268.23
|
||||
},
|
||||
"memory": {
|
||||
"throughput_mib_s": 8419.68,
|
||||
"score": 84.19
|
||||
},
|
||||
"disk": {
|
||||
"read_mb_s": 1066.86,
|
||||
"write_mb_s": 1066.34,
|
||||
"iops_read": 273117,
|
||||
"iops_write": 272983,
|
||||
"latency_ms": 0,
|
||||
"score": 106.66
|
||||
},
|
||||
"network": {
|
||||
"upload_mbps": 401.77,
|
||||
"download_mbps": 399.98,
|
||||
"ping_ms": 13.623,
|
||||
"score": 40.08,
|
||||
"jitter_ms": null,
|
||||
"packet_loss_percent": null
|
||||
},
|
||||
"gpu": {
|
||||
"glmark2_score": null,
|
||||
"score": null
|
||||
},
|
||||
"global_score": 144.40
|
||||
}
|
||||
}
|
||||
════════════════════════════════════════════════════════
|
||||
|
||||
✓ Payload sauvegardé dans: /tmp/bench_payload_20251214_092836.json
|
||||
|
||||
Appuyez sur Entrée pour continuer l'envoi ou Ctrl+C pour annuler...
|
||||
✓ Envoi du payload vers: http://10.0.1.97:8007/api/benchmark
|
||||
✓ Payload envoyé avec succès (HTTP 200)
|
||||
|
||||
════════════════════════════════════════════════════════
|
||||
Benchmark terminé avec succès !
|
||||
════════════════════════════════════════════════════════
|
||||
Reference in New Issue
Block a user