Configuration
Le fichier de configuration de VoxelBench se trouve dans plugins/VoxelBench/config.yml.
/bench reload recharge le fichier. La plupart des réglages sont lus au moment où ils servent : ils s'appliquent donc au prochain benchmark ou test. Quelques-uns ne sont lus qu'au démarrage et nécessitent un redémarrage du serveur : les réglages de langue, le cooldown du rate limit, update-check, la détection de l'hébergement et les intégrations. Le monitoring distant est appliqué par /bench reload : il démarre, s'arrête ou redémarre avec les nouveaux réglages. Les réglages de monitoring ont leur propre /bench monitor reload (redémarrez ensuite le serveur web), et les profils personnalisés se relisent avec /bench custom reload.
Quand VoxelBench est mis à jour, les clés manquantes sont ajoutées automatiquement à votre config.yml. Voir Mettre à jour un config.yml existant.
Langue
language:
default: en_US # Langue par défaut, utilisée quand la langue du joueur n'est pas disponible
force: false # Imposer la langue par défaut à tous les joueurs
- Quand
force: false(par défaut), VoxelBench détecte automatiquement la langue du client Minecraft de chaque joueur. Un joueur peut la remplacer avec/bench lang <code>et revenir à la détection avec/bench lang auto. - Quand
force: true, tous les joueurs voient les messages dans la languedefault - Langues fournies :
en_US(anglais),fr_FR(français)
Les fichiers de langue sont extraits dans plugins/VoxelBench/lang/. Vous pouvez les modifier ; les clés manquantes sont complétées depuis le plugin au démarrage. VoxelBench charge aussi un fichier de traduction déposé dans ce dossier pour l'un de ces codes : de_DE, es_ES, it_IT, pt_BR, ru_RU, zh_CN, ja_JP, ko_KR, pl_PL, nl_NL, tr_TR.
Le tableau de bord web a ses propres traductions (anglais et français), choisies d'après la langue du navigateur ou le sélecteur de la page.
Mode de fonctionnement
mode: anonymous # anonymous ou authenticated
| Mode | Description |
|---|---|
anonymous | Pas de compte requis. Les rapports envoyés à voxelbench.com expirent au bout de 30 minutes |
authenticated | Lié à un compte VoxelBench. Les rapports vont dans votre compte, privés par défaut, et sont conservés 30 jours avec l'offre gratuite, 1 an avec Pro, Enterprise et les comptes d'hébergeur |
Utilisez /bench link pour passer en mode authentifié. Voir Liaison de compte.
server-name: "" # Nom proposé pour ce serveur lors de la liaison avec /bench link
Si server-name est vide, aucun nom n'est envoyé pendant la liaison.
Notifications
notifications:
sounds:
enabled: true # Jouer des sons à la fin des tests/benchmarks
Vérification des mises à jour
update-check: true
Environ 5 secondes après le démarrage, VoxelBench demande à voxelbench.com si une version plus récente existe. Si c'est le cas, elle est annoncée dans la console, et les opérateurs ainsi que les joueurs disposant de voxelbench.admin en sont informés en jeu (aussi lorsqu'ils se connectent). Mettez false pour désactiver cette vérification.
Anonymisation
Contrôle les données incluses lors de l'envoi des rapports à voxelbench.com.
anonymous:
anonymization-level: PARTIAL # NONE, PARTIAL ou FULL
| Niveau | Adresses IP | MAC/Disque | Plugins | Modèles de disque |
|---|---|---|---|---|
| NONE | Complètes | Complets | Liste complète | Noms complets |
| PARTIAL (recommandé) | Masquées (192.168.xxx.xxx) | Hash SHA-256 | Liste complète | Noms complets |
| FULL | Masquées | Hash SHA-256 | Nombre uniquement | Type générique |
Tous les niveaux envoient toujours : nom du CPU, quantité de RAM, version Java, nom de l'OS, et toutes les métriques de benchmark.
Voir Confidentialité et sécurité pour plus de détails.
Rate Limiting
rate-limiting:
local-cooldown-minutes: 30 # Minutes entre les benchmarks
Empêche de lancer des benchmarks trop fréquemment. Les joueurs avec la permission voxelbench.start.force peuvent ignorer ce cooldown.
Mode de benchmark
benchmark-mode: standard # standard ou custom
| Mode | Description |
|---|---|
| standard (défaut) | Paramètres fixes pour une comparaison équitable entre serveurs |
| custom | /bench start lit ses paramètres de test dans les sections ci-dessous |
Le mode ne change que ce qu'exécute /bench start (voir Benchmarks). Les profils personnalisés et /bench test prennent leurs paramètres dans le profil ou sur la ligne de commande.
Paramètres de test personnalisés
La section tests: et les quantités de benchmark-tests: sont utilisées par /bench start quand benchmark-mode: custom :
tests:
single-core-benchmark:
duration: 10 # Durée de mesure en secondes
multi-core:
threads: 100
iterations: 100000
limits: # Bornes pour /bench test multiCore
threads-min: 1
threads-max: 200
iterations-min: 1000
iterations-max: 1000000
disk:
threads: 4
queue-depth: 8
file-size-mb: 512
random-4k-operations: 200 # En milliers (200 = 200 000 opérations)
passes: 3
limits: # Bornes pour /bench test disk
size-min-mb: 64
size-max-mb: 4096
threads-min: 1
threads-max: 32
queue-depth-min: 1
queue-depth-max: 64
passes-min: 1
passes-max: 20
memory:
size-mb: 512
iterations: 75000
runs: 3
limits: # Bornes pour /bench test memory
size-min-mb: 16
size-max-mb: 1024
passes-min: 1
passes-max: 10
block-physics:
count: 24000 # Blocs qui tombent
interval-ticks: 1 # Ticks entre deux vagues d'apparition
benchmark-tests:
chunk-loading:
chunks-to-load: 200
limits: { min: 10, max: 5000 }
adaptive: # Régulation du chargement (/bench test, mode custom, profils personnalisés)
window-max: 200
target-mspt-ms: 75.0
soft-cap-mspt-ms: 100.0
critical-mspt-ms: 250.0
mob-spawn:
mob-count: 300
duration-seconds: 30
limits: { min: 10, max: 1000 }
hopper:
hopper-chain-length: 50
parallel-lines: 1
limits: { min: 1, max: 10 }
explosion:
tnt-count: 30
raise-host-tnt-quota: true
limits: { min: 1, max: 200 }
dispersed-zones:
default: 8
limits:
min: 1
max: 10
Quelques-uns de ces réglages ne se limitent pas au mode custom :
chunk-loading.adaptiverègle la vitesse à laquelle un run de chargement de chunks pousse la génération : le budget par tick augmente tant que le MSPT reste soustarget-mspt-ms, recule au-dessus desoft-cap-mspt-mset tombe à un chunk par tick au-dessus decritical-mspt-ms. Gardez les valeurs par défaut sauf raison précise.explosion.raise-host-tnt-quota: truerelève en mémoire lemax-tnt-per-tickde Spigot pendant un test d'explosions, puis le restaure (spigot.ymln'est jamais modifié). Avecfalse, la limite de l'hôte n'est pas touchée et un run dont toutes les charges n'ont pas pu tick est signalé comme une mesure partielle.hopper.hopper-chain-lengthetmob-spawn.duration-secondss'appliquent aux tests de hoppers et d'apparition de mobs hors benchmark standard (le stress limit fixe sa propre longueur de chaîne).- Les
limitsdechunk-loading,mob-spawnetexplosionplafonnent la quantité reçue par ces tests dans/bench test, enbenchmark-mode: customet dans les profils personnalisés. Elles sont relues à chaque run : un/bench reloadsuffit donc à appliquer une nouvelle borne. - Les
limitsdehopperne bornent que/bench test hopper <lignes>. Un profil personnalisé exécute le nombre de lignes qu'il demande, jusqu'à 500 par zone, quoi que disent ces limites (voir Profils personnalisés). mob-pathfinding,redstoneetblock-physicsn'ont pas de bloclimits:/bench testvalide leurs arguments contre des plages fixes, rappelées dans le message d'erreur quand une valeur sort de la plage.- Le
/bench startstandard ignore tout ce qui précède (limits,adaptive,hopper-chain-length,dispersed-zones.limits) : il exécute toujours la même charge fixe — 10 lignes de hoppers × 50, 150 TNT, 2000 chunks par zone avec la régulation par défaut, 8 zones — pour qu'un score standard mesure la même chose sur tous les serveurs. Seulexplosion.raise-host-tnt-quotas'applique encore, parce que c'est une autorisation de toucher aux réglages de l'hôte, pas un réglage de charge. - Tout run de chargement de chunks reste sous un plafond mémoire qu'aucun réglage ne modifie : 30 % du tas maximal, à environ 50 Ko par chunk, partagés entre les zones que le test parcourt, sans jamais descendre sous 200 chunks par zone. Avec 8 zones, une zone reçoit au plus 0,75 chunk par Mo de tas maximal : les 2000 chunks par zone du standard demandent donc un tas maximal d'environ 2 670 Mo, et sur un tas plus petit le benchmark standard en charge moins.
Zones dispersées
dispersed-zones.default est le nombre de zones de test, très éloignées les unes des autres dans le monde de benchmark, qu'utilisent les tests multi-zones en benchmark-mode: custom. La valeur est maintenue dans limits et toujours entre 1 et 10. Le benchmark standard et les profils personnalisés utilisent toujours 8 zones, quelle que soit cette valeur, pour que leurs résultats restent comparables.
Runs de benchmark
Tous les réglages benchmark: se trouvent dans un seul bloc :
benchmark:
target-world: "" # Monde épinglé, défini avec /bench world set
auto-temp-world: true # Créer un monde plat temporaire quand aucun monde n'est épinglé
post-cleanup-gc: true # GC complet après le nettoyage de chaque test
memory-budget: # Contrôlé avant chaque test
enabled: true
warn-pct: 75.0
fail-pct: 85.0
memory-watchdog: # Surveille le heap pendant chaque test
enabled: true
critical-pct: 92.0
hold-seconds: 3
target-world: le monde utilisé par tous les benchmarks, tests et stress. Définissez-le avec/bench world set <nom>et retirez-le avec/bench world unset. Si le monde épinglé n'est pas chargé, VoxelBench prévient et ignore l'épinglage.auto-temp-world: quand aucun monde n'est épinglé,/bench start,/bench stresslimit,/bench tieret les profils personnalisés créent un monde plat temporaire nommévoxelbench_temp_<horodatage>, s'y exécutent puis le suppriment à la fin (le monde est aussi importé dans Multiverse-Core s'il est installé). Un profil de benchmark personnalisé peut seulement le désactiver pour ses propres runs, avecoptions.auto-temp-world: false:truedans un profil ne crée aucun monde temporaire quand ce réglage vautfalse(voir Profils personnalisés). Avecfalse, ces runs utilisent le monde principal du serveur, et les vérifications préalables de/bench startsignalent un constat critique « Aucun monde cible configuré »./bench testl'applique autrement. Un test qui écrit dans le monde (tous les tests de gameplay saufworldSave) ne tourne jamais dans le monde où vous vous trouvez : il utilise le monde épinglé, sinon un monde temporaire, et avecauto-temp-world: falseil est refusé. Sur Folia, qui ne sait pas créer de monde en cours de route, un tel test exige un monde épinglé. Les tests matériels et CPU etworldSaveutilisent le monde épinglé, ou celui où vous vous trouvez (voir Benchmarks).post-cleanup-gc: force un garbage collection complet après le nettoyage de chaque test, pour que la mémoire laissée par un test ne pèse pas sur le suivant.memory-budget: avant chaque test, VoxelBench estime l'occupation du heap que le test va atteindre. À partir dewarn-pctpour cent du heap maximum, il lance d'abord un garbage collection ; si l'estimation reste supérieure ou égale àfail-pctpour cent ensuite, le test est ignoré et signalé comme tel plutôt que de risquer un crash par manque de mémoire.memory-watchdog: pendant un test, si l'occupation du heap reste supérieure ou égale àcritical-pctpour cent pendanthold-secondssecondes consécutives, le test est interrompu et signalé comme ignoré.
Gardez toutes ces clés sous un seul bloc benchmark: : si un fichier YAML déclare deux fois la même clé de premier niveau, seul le dernier bloc est conservé.
Confirmation
confirmation:
require-confirmation: true # Effectuer les vérifications préalables avant /bench start
popup: true # Fenêtre Oui/Non après un aperçu qui attend « confirm »
/bench start n'a pas de commande de confirmation. Quand require-confirmation vaut true (défaut), /bench start effectue d'abord les vérifications préalables :
- Si rien n'est détecté, le benchmark démarre aussitôt.
- Sinon, un écran d'inventaire liste les constats (monde non plat, autres joueurs connectés, serveur déjà chargé, hébergement gratuit, plugins susceptibles d'interférer...). Cliquez sur Start benchmark pour lancer le benchmark ou sur Cancel pour abandonner.
- Quand un constat est critique (par exemple, le monde cible n'est pas un monde
voxelbench_*), le bouton de démarrage normal est désactivé. Seul un joueur disposant devoxelbench.start.forceobtient un bouton Force start.
Avec false, /bench start saute les vérifications préalables et démarre immédiatement.
Cette option ne concerne que /bench start. /bench stresslimit demande toujours de retaper la commande dans les 10 secondes, tandis que /bench tier et /bench custom run démarrent sans confirmation.
popup concerne les commandes qui montrent un aperçu et attendent confirm : un vidage du tas, et upload/share … preview pour les profils et les rapports mémoire. Avec true (défaut), un joueur reçoit aussi une fenêtre Oui/Non avec l'aperçu — un dialogue natif sur Paper 1.21.6 et suivants, un écran d'inventaire ailleurs — dont le Oui lance la commande … confirm elle-même, avec tous ses contrôles. Avec false, restent la ligne cliquable du chat et /bench confirm. Relu à chaque aperçu : /bench reload suffit. Voir Confirmer un aperçu.
Détection de l'hébergement
hosting-detection:
enabled: true # Détecter l'environnement d'hébergement au démarrage
silent: false
Au démarrage, VoxelBench recherche les signes d'un hébergement gratuit ou mutualisé (par exemple Aternos, Minehut, ou un panneau d'hébergement avec peu de mémoire) et classe le serveur, de DEDICATED_OR_VPS à CONFIRMED_FREE. Le résultat est écrit dans les logs, et lorsqu'un hébergement gratuit est probable :
- un avertissement détaillant les raisons est écrit dans les logs de démarrage
- les vérifications préalables de
/bench startaffichent un constat « Hébergement gratuit détecté », qui renvoie vers le profil allégéfree-host - le bloc
hostingEnvironmentdu rapport contient le niveau détecté, l'hébergeur et les signaux, pour que voxelbench.com puisse distinguer ces runs
silent: true enregistre l'avertissement comme non affiché (warningEmitted: false) dans les rapports ; il ne masque ni l'avertissement des logs de démarrage ni le constat des vérifications préalables. Avec enabled: false, aucune détection n'a lieu. Les changements nécessitent un redémarrage.
Stress Limit
stress-limit:
warm-start:
enabled: true # false = toujours monter depuis la charge de départ
factor: 0.70 # démarrer à 70 % de la dernière valeur stable
max-refine-down-steps: 6 # étapes de dichotomie quand la sonde à chaud rompt
max-age-days: 30 # ignorer les valeurs mémorisées plus anciennes
Après chaque run Stress Limit complet, VoxelBench mémorise la dernière charge stable de chaque type de stress dans plugins/VoxelBench/stress-warmstart.yml. Avec le démarrage à chaud, le run suivant démarre à factor fois cette valeur au lieu de monter depuis la charge de départ. Si ce premier palier rompt, il cherche vers le bas pendant au plus max-refine-down-steps étapes, puis repart de la charge de départ si rien ne tient. /bench tier ... cold ignore le démarrage à chaud le temps d'un run. Voir Stress Limit.
Les autres réglages du Stress Limit (seuils, montée, durée des paliers) ne sont pas dans config.yml : ils sont fixes pour le run officiel et se modifient dans un profil de stress personnalisé.
Journalisation
logging:
test-verbosity: NORMAL # MINIMAL, NORMAL, VERBOSE, DEBUG
log-test-results: true # Afficher le résumé de chaque test
log-benchmark-progress: true # Afficher quel test est en cours
| Niveau | Sortie |
|---|---|
| MINIMAL | Erreurs et avertissements critiques uniquement |
| NORMAL (défaut) | Début/fin des tests, événements importants |
| VERBOSE | Progression détaillée de chaque étape |
| DEBUG | État interne complet (pour le dépannage) |
Ces réglages sont appliqués par /bench reload.
benchmark-diagnostics: false
Aide au dépannage des benchmarks : avec true, VoxelBench compte les entités, items au sol, mobs et chunks chargés de chaque monde avant et après chaque test, et prévient quand le nettoyage d'un test a laissé quelque chose derrière lui. Les comptages eux-mêmes sont écrits dans les logs en verbosité VERBOSE.
Monitoring
Voir Monitoring pour le fonctionnement de chaque fonctionnalité. Appliquez les changements avec /bench monitor reload, puis redémarrez le serveur web (/bench monitor web stop, puis start).
monitor:
web-port: 8080 # Port HTTP du tableau de bord et de /api/metrics
bind-address: "127.0.0.1" # Cette machine seulement ; toute autre adresse exige un mot de passe
https:
enabled: false # Servir en HTTPS sur https.port au lieu de web-port
port: 8443
keystore-path: "certificates/keystore.jks" # Relatif à plugins/VoxelBench/
keystore-password: "" # Rempli par /bench monitor https generate
key-alias: "voxelbench"
auto-start: # Démarrer les services au lancement du serveur
web-server: false
push-service: false
boss-bars: false # Boss bars TPS + MSPT (voir Monitoring pour savoir qui les voit)
dashboard:
enabled: true # false = /api/metrics seule, sans page HTML
auth:
enabled: false
username: "admin"
password-hash: "" # Défini depuis la console : /bench monitor auth password <mot de passe> (12 caractères min.)
password-salt: ""
session-timeout: 60 # Minutes
api-key: "" # Défini avec /bench monitor auth key pull
behind-proxy: false # true uniquement derrière un reverse proxy de confiance (lit X-Forwarded-For)
whitelist:
enabled: false
mode: "all" # all, dashboard ou api
allowed-ips:
- "127.0.0.1"
- "::1"
denied-message: "Access denied: Your IP is not whitelisted"
push:
enabled: false # Affiché dans l'interface ; le push démarre avec /bench monitor push start ou auto-start
url: "" # Destination des requêtes POST
api-key: "" # Envoyée en « Authorization: Bearer » ; /bench monitor auth key push
interval-seconds: 1
allow-insecure: false # Accepter les certificats TLS non vérifiés
Ne mettez jamais behind-proxy: true sur un tableau de bord exposé directement sur Internet : n'importe quel client pourrait alors falsifier son adresse IP et contourner la whitelist.
Rapports
Voir Rapports pour les détails.
reports:
enabled: true # false désactive les rapports locaux et /bench reports
folder: "reports" # Relatif à plugins/VoxelBench/
backend:
unit-tests: false # Envoyer les résultats de /bench test et /bench tier (nécessite /bench link)
retention: # -1 = illimité
max-age-days: 90 # Supprimer les rapports de plus de 90 jours
max-per-type: 100 # Maximum par type
max-total: 500 # Maximum total
cleanup-on-startup: true
storage: # Types de rapports sauvegardés localement
unit-tests: true # /bench test
benchmarks: true # /bench start
stresslimit: true # /bench stresslimit, /bench tier, profils de stress
Les benchmarks complets et les runs Stress Limit sont soumis à voxelbench.com quels que soient ces réglages (un profil personnalisé seulement avec submit: true dans le profil) ; reports.backend.unit-tests ne concerne que les résultats des tests individuels. Ces réglages ne décident que de ce qui est écrit sur le disque : un run dont le type est désactivé ici ne laisse aucun rapport local.
Monitoring distant
Le monitoring distant envoie des relevés de métriques périodiques et les événements détectés au tableau de bord de votre serveur sur voxelbench.com. Il nécessite un serveur lié.
Le plus simple pour l'activer est /bench monitor remote on : la commande met enabled: true, démarre le service et vérifie aussitôt la connexion, en indiquant en jeu ce qu'il reste à faire. Modifier le fichier fonctionne aussi : mettez enabled: true puis lancez /bench reload. /bench monitor remote status indique où il en est (liaison, service, dernier contact, dernier envoi).
Le monitoring doit aussi être activé pour le serveur sur voxelbench.com (page Monitoring de votre tableau de bord), et votre offre doit l'inclure. L'ordre n'a pas d'importance : tant que le site refuse les données, le plugin se met en pause et revérifie tout seul (chaque minute, ou toutes les 10 minutes quand l'offre n'inclut pas le monitoring), puis commence à envoyer dès que le site accepte. Il ne se désactive jamais lui-même dans config.yml. Si le site ne reconnaît plus la liaison, le service s'arrête jusqu'au prochain /bench link.
remote-monitoring:
enabled: false
collect-interval: 60 # Secondes entre deux relevés (30 - 600)
send-interval: 60 # Secondes entre deux envois des relevés en attente (60 - 3600)
buffer-size: 120 # Relevés gardés en mémoire avant d'écarter les plus anciens (10 - 1000)
folia-regions:
max-detailed: 64 # Folia seulement : régions détaillées une à une par relevé, les pires d'abord (0 - 256)
Sous Folia, chaque relevé mesure toutes les régions et en détaille jusqu'à folia-regions.max-detailed, les pires d'abord, avec leurs coordonnées, leur TPS et leurs durées de tick (environ 200 octets chacune) ; les autres sont seulement comptées, et les valeurs pires et moyennes les couvrent toutes. 0 n'envoie que les valeurs pires et moyennes. Paper et Spigot l'ignorent. Voir Monitoring.
Les deux intervalles sont en temps réel : un serveur qui rame garde son rythme. TPS, MSPT, mémoire, CPU et GC sont lus hors du thread principal ; joueurs, entités, chunks et mondes sont lus sur le thread principal au même rythme, et laissés de côté dans un relevé quand cette lecture est trop ancienne. Un retard s'envoie en plusieurs lots de 60 relevés, et les relevés de plus de deux heures environ sont écartés, puisque voxelbench.com les refuse. À l'arrêt du serveur, les derniers relevés partent avant l'extinction. La mise à jour depuis la 1.9.0 ou avant ramène à 60 un send-interval resté à l'ancien défaut de 300 : voxelbench.com évalue les règles d'alerte chaque minute sur les données reçues. Toute autre valeur est conservée. Un collect-interval inférieur à 30 est ramené à 30 : en dessous, le budget de relevés de l'offre sur voxelbench.com refusait les relevés au bout de quelques heures, et chaque relevé indique déjà le pire tick de son intervalle.
Événements
La détection d'événements tourne tant que le monitoring distant tourne. Chaque événement a son propre interrupteur enabled ; cooldown-seconds est le délai minimal entre deux événements du même type.
remote-monitoring:
events:
enabled: true
performance:
tps-drop: # TPS sous le seuil pendant au moins duration-seconds
enabled: true
threshold: 18.0
duration-seconds: 10
cooldown-seconds: 60
tps-critical: # TPS sous le seuil, signalé immédiatement
enabled: true
threshold: 10.0
cooldown-seconds: 120
tps-recovery: # Envoyé quand une chute prolongée prend fin
enabled: true
gc-major: # Pauses GC majeures (old-gen / heap complet) sur 5 s
enabled: true
threshold-ms: 200
cooldown-seconds: 30
memory: # percent = heap utilisé / heap maximum
high:
enabled: true
percent: 80
cooldown-seconds: 300
critical:
enabled: true
percent: 95
cooldown-seconds: 120
security:
op-changes:
enabled: true
config-reload: # Envoyé lors d'un /bench reload
enabled: true
whitelist-changes:
enabled: true
check-interval: 30 # Secondes entre deux contrôles de la liste des ops et de la whitelist (5 - 3600)
player: # percent = part des emplacements joueurs du serveur
high:
enabled: true
percent: 80
cooldown-seconds: 300
full:
enabled: true
cooldown-seconds: 300
litebans: # Nécessite LiteBans ; pris en compte au prochain redémarrage
enabled: false # Désactivé par défaut : les sanctions nomment des joueurs
bans: true
mutes: true
kicks: true
include-reason: false # Envoyer aussi le motif saisi par le modérateur
- Le TPS et le GC sont relevés toutes les 5 secondes, la mémoire toutes les 15 secondes.
tps-recoveryutilise le seuil et le délai detps-drop.- Les événements LiteBans transmettent les bans, mutes et kicks (et leur levée) avec le joueur et le modérateur, et le motif seulement avec
include-reason: true; voir Intégrations. Une nouvelle installation les a désactivés ; unconfig.ymlexistant garde sa valeur deenabled. - Une clé absente se comporte comme la valeur par défaut indiquée ici.
Profilage (expérimental)
Réglages de /bench profile, voir Profilage. Une valeur hors bornes est ramenée à la borne indiquée.
profiling:
enabled: true # false : toute action de /bench profile est refusée
ring:
enabled-on-start: false # démarrer le tampon circulaire avec le serveur (opt-in)
period-ms: 20 # 10-100
max-age-seconds: 300 # 60-3600
max-size-mb: 32 # 4-512, dans le dépôt de JFR (répertoire temporaire de la JVM)
auto-dump:
enabled: true # seulement quand le tampon tourne
slow-tick-ms: 100 # 55-10000
consecutive-slow-ticks: 40 # 1-1200
freeze-ms: 1000 # au moins slow-tick-ms, au plus 60000
cooldown-seconds: 300 # 30-86400
storage:
max-files: 20 # 1-500
max-total-mb: 100 # 1-10240
keep-raw-jfr: false # garder aussi le .jfr brut à côté de chaque JSON
upload:
enabled: true # false : /bench profile upload est refusé
max-size-kb: 1024 # 64-4096, JSON non compressé
share:
enabled: true # false : /bench profile share est refusé (unshare fonctionne toujours)
max-size-kb: 1024 # 64-4096, copie nettoyée non compressée
| Clé | Effet |
|---|---|
enabled | Interrupteur général. À false, /bench profile répond que le profileur est désactivé et le tampon circulaire ne démarre jamais |
ring.enabled-on-start | Démarrer le tampon circulaire au lancement du serveur. /bench profile ring on|off le change jusqu'au prochain redémarrage |
ring.period-ms | Période d'échantillonnage du tampon. Un autre enregistrement JFR de période plus courte impose la sienne |
ring.max-age-seconds, ring.max-size-mb | Ce que le tampon conserve. JFR élague par tronçon : un vidage peut en contenir un peu plus |
auto-dump.enabled | Vider et analyser le tampon quand un lag est détecté |
auto-dump.slow-tick-ms, auto-dump.consecutive-slow-ticks | Un lag, c'est ce nombre de ticks d'affilée, chacun au moins aussi long |
auto-dump.freeze-ms | Un seul tick au moins aussi long est un lag à lui seul |
auto-dump.cooldown-seconds | Au plus un vidage automatique par période |
storage.max-files, storage.max-total-mb | Rétention de plugins/VoxelBench/reports/profiles/ : les profils les plus anciens sont supprimés en premier |
storage.keep-raw-jfr | Garder le vidage JFR brut (tous les threads, tout le tampon) à côté du JSON |
upload.enabled | Autoriser /bench profile upload. Même à true, rien n'est jamais envoyé sans la commande, un profil à la fois (avec preview, seulement après confirm). false refuse la commande |
upload.max-size-kb | Taille maximale d'un profil envoyé, non compressé. Un profil pèse en général quelques dizaines de Ko |
share.enabled | Autoriser /bench profile share (une copie nettoyée derrière un lien public non listé, sans compte, 7 jours). Même à true, rien n'est jamais publié sans la commande, un profil à la fois (avec preview, seulement après confirm). false refuse la commande ; /bench profile unshare fonctionne toujours, pour pouvoir supprimer les liens existants |
share.max-size-kb | Taille maximale de la copie nettoyée partagée, non compressée |
/bench reload applique tout de suite les seuils du vidage automatique et les limites de rétention ; les réglages du tampon s'appliquent à son prochain démarrage (/bench profile ring off, puis on).
Inspection mémoire (expérimental)
Réglages de /bench memory, voir Inspection mémoire. Une valeur hors bornes est ramenée à la borne indiquée ; tout changement s'applique à la commande suivante (sans rechargement).
memory-inspection:
enabled: true # false : toute action /bench memory est refusée
summary:
max-files: 20 # 1-500
max-total-mb: 20 # 1-1024
host-disk-limit-gb: 0 # 0-1048576 (0 : aucune ou inconnue)
dump:
enabled: true # false : /bench memory dump est refusé
max-files: 2 # 1-10
min-free-disk-mb: 1024 # 0-1048576
analysis:
enabled: true # false : /bench memory analyze est refusé
max-heap-mb: 4096 # 256-65536
disk: true # false : l'analyse complète ne range jamais son graphe sur disque
memory-margin-mb: 512 # 0-65536
timeout-seconds: 1800 # 60-7200
cpu-throttle:
max-cores: 2 # 0-256 (0 : jamais freinée)
percent: 30 # 5-100
max-files: 20 # 1-500
max-total-mb: 20 # 1-1024
upload:
enabled: true # false : /bench memory upload est refusé
max-size-kb: 1024 # 64-4096
share:
enabled: true # false : /bench memory share est refusé (unshare marche toujours)
max-size-kb: 1024 # 64-4096
| Clé | Effet |
|---|---|
enabled | Interrupteur général. À false, /bench memory répond que l'inspection mémoire est désactivée |
summary.max-files, summary.max-total-mb | Rétention des résumés, enregistrés dans le dossier memory/ des rapports (reports.folder) : les plus anciens sont supprimés d'abord. Un résumé pèse quelques dizaines de Ko |
host-disk-limit-gb | Limite disque de votre offre d'hébergement, en Go (0 : aucune ou inconnue). Les panels comme Pterodactyl ou Pelican mesurent eux-mêmes le dossier du serveur et l'arrêtent quand il la dépasse, alors que le disque vu depuis le conteneur est celui de toute la machine. Renseignée, la place libre d'un vidage, d'une décompression et des fichiers de travail d'une analyse est la plus petite du disque et de cette limite moins ce que le dossier du serveur occupe déjà. Laissée à 0 sur un tel panel, l'aperçu du vidage et l'analyse préviennent. Voir Inspection mémoire |
dump.enabled | Autoriser les vidages complets du tas. Même à true, un vidage exige voxelbench.memory.dump, un aperçu et une confirmation. false les refuse (pour un hébergeur ou un réseau qui les interdit) |
dump.max-files | Vidages gardés dans plugins/VoxelBench/heapdumps/ : après un nouveau vidage, les plus anciens sont supprimés. Chacun pèse 1,3 à 1,5 fois le tas occupé |
dump.min-free-disk-mb | Espace disque qui doit rester libre une fois le vidage écrit. La taille estimée du vidage (1,5 × le tas occupé, moitié en plus avec gzip) est vérifiée en plus, avant l'aperçu et de nouveau avant l'écriture. Vaut aussi quand une analyse doit décompresser un .hprof.gz |
analysis.enabled | Autoriser les analyses de vidages (/bench memory analyze, dump … analyze, le bouton du menu). Elles tournent dans un processus Java séparé, en basse priorité, et exigent voxelbench.memory.dump |
analysis.max-heap-mb | Plafond du tas du processus d'analyse (-Xmx). L'analyse complète demande environ 90 octets par objet du vidage en mémoire (environ 3 Go pour 36 millions d'objets), environ 45 avec son graphe sur disque (voir analysis.disk) ; quand elle ne tient ni sous ce plafond ni dans la mémoire libre, c'est l'analyse rapide qui tourne, et elle dit pourquoi. Quand même la rapide ne tient pas dessous, l'analyse est refusée |
analysis.memory-margin-mb | Mémoire laissée libre sur la machine et sous la limite mémoire du conteneur (cgroup), en plus du processus d'analyse et de ce que le tas du serveur peut encore réclamer. Elle évite que le serveur soit tué faute de mémoire |
analysis.disk | Quand l'analyse complète ne tient pas en mémoire, ranger une partie ou la totalité de son graphe d'objets dans des fichiers de travail sous heapdumps/.work/ (effacés à la fin) : deux à quatre fois moins de mémoire pour le même résultat, deux à six fois plus lent sur un disque rapide, davantage sur un stockage réseau. Le disque doit garder dump.min-free-disk-mb libres en plus. false : jamais sur disque (c'est la rapide qui tourne). Voir Inspection mémoire |
analysis.timeout-seconds | Le processus d'analyse est arrêté au bout de ce temps ; le rapport rapide est gardé s'il existe. Allongé d'autant quand l'analyse est freinée (voir ci-dessous) |
analysis.cpu-throttle.max-cores, analysis.cpu-throttle.percent | Dans un conteneur dont le quota de processeur est de max-cores cœurs ou moins, le processus d'analyse ne prend que percent d'un cœur, par travail puis pause, pour ne pas épuiser le quota dont le serveur a besoin (un quota épuisé suspend tout le conteneur, ce que la priorité basse ne peut pas empêcher). Plus lente, même rapport. max-cores: 0 : jamais freinée |
analysis.max-files, analysis.max-total-mb | Rétention des rapports d'analyse (JSON de 20 à 35 Ko chacun) dans le dossier memory/ des rapports ; les plus anciens sont supprimés d'abord |
upload.enabled | Autoriser /bench memory upload (et le verbe upload après summary, analyze, dump … analyze) : un résumé du tas ou une analyse de vidage, jamais un vidage du tas, envoyé au compte voxelbench.com de ce serveur lié. Toujours manuel ; exige voxelbench.memory.upload |
upload.max-size-kb | Plus gros rapport qui peut être envoyé, non compressé |
share.enabled | Autoriser /bench memory share : une copie nettoyée d'un résumé ou d'une analyse derrière un lien public non listé pendant 7 jours (voir ce que la copie garde et retire). Toujours manuel ; exige voxelbench.memory.share. false ne bloque jamais /bench memory unshare |
share.max-size-kb | Plus grosse copie nettoyée qui peut être partagée, non compressée |
Mettre à jour un config.yml existant
Au démarrage, VoxelBench ajoute à votre config.yml les clés introduites par une nouvelle version sans toucher à vos valeurs, puis applique les migrations ponctuelles repérées par config-version (ne modifiez pas cette clé).
- Bloc
benchmark:en double. Les anciens fichiers fournis déclaraientbenchmark:deux fois. YAML ne garde que le dernier bloc : tout ce qui était écrit dans le premier (typiquementtarget-worldetauto-temp-world) était ignoré sans avertissement. Quand VoxelBench trouve une clé de premier niveau déclarée plusieurs fois, il écrit un avertissement dans les logs et réécrit le fichier avec un seul bloc. Les valeurs qui se trouvaient dans le bloc ignoré ne sont pas récupérées : redéfinissez-les (par exemple avec/bench world set). config-version9.benchmark-tests.dispersed-zones.defaultétait ignoré (chaque run utilisait 8 zones). Undefault: 1hérité d'un ancien fichier est réécrit en8; toute autre valeur est conservée et désormais appliquée en mode custom.- Clés abandonnées. Ces clés n'ont jamais été lues et ont été retirées du fichier fourni ; vous pouvez les supprimer du vôtre :
tests.single-core.*,tests.network.test-servers,benchmark-tests.chunk-loading.radius,benchmark-tests.hopper.items,benchmark-tests.world-save, les blocsbenchmark-tests.mob-pathfinding,benchmark-tests.redstoneetbenchmark-tests.block-physicsen entier (quantité, durée etlimits), etreports.auto-show-report. - Clés ajoutées.
update-check,server-name,benchmark-diagnostics,tests.single-core-benchmark.duration,tests.disk.random-4k-operations,tests.disk.passes,tests.block-physics.countettests.block-physics.interval-ticks.
Intégrations
Voir Intégrations pour la référence complète de la configuration des intégrations.
integrations:
dynmap:
enabled: true
spark:
enabled: true
discordsrv:
enabled: true
channel-id: ""