Valence Benchmark
Бенчмарк, который ничего не стоит запустить. Записывает 10 минут фреймтаймов, чанков, сущностей, CPU/GPU/RAM и тиков сервера без единой аллокации в потоке рендера, а затем пишет полный отчёт в HTML и текстовом формате.
- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 152
- Подписчиков на Modrinth
- 0
- версия
- 1
- Обновлён
- 15 августа 202615 авг.
- Опубликован
- в 2026
Коротко о моде
Нужен и в игре, и на сервере
Valence Benchmark
Бенчмарк для Minecraft, который ничего не стоит запустить. Minecraft 1.21.1 · Fabric · только клиентская часть · от ceketrumdev
Большинство внутриигровых бенчмарков меняют то, что измеряют. Они рисуют оверлей, пишут на диск, выделяют память в потоке рендера, и часть лагов, о которых они сообщают, — их собственные. Valence Benchmark записывает 10-минутное окно, в котором не делает ничего из этого. Один System.nanoTime(), два сравнения и две записи в массив на кадр, в буферы, выделенные до старта часов. Ни оверлея, ни логирования, ни сборки мусора, ни скриншотов, пока окно открыто. Затем, когда часы остановлены, он пишет полный отчёт. Он не просит верить ему на слово. Отчёт печатает собственную стоимость мода — в наносекундах и в байтах, выделенных на кадр, — измеренную в потоке рендера в начале каждого запуска. Показатель выделения памяти должен быть 0.00.
Быстрый старт
1. Зайдите в мир и постойте на месте несколько секунд
2. /valence bench start
3. Играйте как обычно 10 минут
4. Нажмите на ссылку отчёта в чатеЭто весь процесс. Запуск завершается сам; останавливать его никогда не нужно.
Команды
Всё находится под /valence. Все команды клиентские — они обрабатываются вашей игрой и никогда не доходят до сервера — за одним исключением, отмеченным ниже.
| Команда | Аргументы | Что делает |
|---|---|---|
/valence bench start | — | Прогревается, затем измеряет в течение 10 минут |
/valence bench stop | — | Отменяет прогрев или досрочно завершает идущее измерение |
/valence bench status | — | Текущее состояние, прогресс, ссылка на последний отчёт |
/valence bench open | — | Кликабельная ссылка на последний отчёт |
/valence bench | — | То же, что status |
/valence world | — | Последнее измеренное время загрузки мира |
/valence scene entities | ` [type] [radius]` | Создаёт воспроизводимую сцену с сущностями |
/valence scene clear | — | Удаляет сцену |
/valence bench start
Печатает короткий отсчёт, затем открывает окно измерения. Во время прогрева мод выделяет свои буферы, запускает аппаратные пробы, делает эталонный скриншот и принудительно запускает сборку мусора, чтобы окно начиналось с чистой кучи. Отказывается запускаться, если вы не в мире (метрикам чанков и сущностей нужен мир), если запуск уже идёт или если сцена всё ещё строится. Как только окно открыто, ничего не рисуется и не логируется до его закрытия. Играйте как обычно.
/valence bench stop
Во время прогрева — отменяет. Во время запуска — завершает досрочно и всё равно пишет отчёт, явно помеченный как частичный, потому что 3-минутный и 10-минутный запуски несопоставимы.
/valence bench status
Простой: последнее время загрузки мира и ссылка на последний отчёт. Идёт: прошло, осталось, записано кадров на данный момент, получено чанков на данный момент.
/valence world
Последнее время загрузки мира отдельно. Это измерение идёт непрерывно, независимо от любого бенчмарка — зайдите в мир, постойте на месте, и мод засечёт время, не будучи попрошенным.
`/valence scene entities [type] [radius]`
| Аргумент | Диапазон | По умолчанию |
|---|---|---|
count | 1 – 20000 | обязателен |
type | любой id сущности, например minecraft:zombie | minecraft:zombie |
radius | 1 – 256 блоков | 16 |
/valence scene entities 300
/valence scene entities 300 minecraft:zombie
/valence scene entities 300 minecraft:zombie 24Призывает count сущностей по кольцу заданного радиуса вокруг вас, на вашем уровне Y. Каждая сущность находится на одинаковом расстоянии, поэтому все они на одном уровне детализации и в одном состоянии отсечения — единственная оставшаяся переменная — их количество. Они появляются с NoAI, NoGravity, Silent, Invulnerable и PersistenceRequired, и несут тег valence_bench. Никто не уходит, не падает, не исчезает, не шумит и не умирает. Запустите ту же команду завтра — и получите ту же сцену.
Это единственная команда, которая обращается к серверу. Она отправляет обычные команды
/summonот вашего имени, поэтому нужны читы в одиночной игре или op на сервере. Они отправляются по 20 за тик, чтобы сервер не кикнул вас за спам.radiusможно указать только если указан иtype.
/valence scene clearВыполняет
kill @e[tag=valence_bench]— удаляет ровно то, что разместила команда сцены, и ничего из того, что построили вы.Что вы получаете
Отчёты записываются в
.minecraft/valence-benchmark/:
Файл Что это `valence-.html` Полный отчёт. Графики, интерактивный, работает офлайн навсегда `valence-.txt` То же содержимое в виде простого текста, можно вставить в issue или таблицу `valence-.json` Необработанные данные `valence--golden-start.png /-golden-end.png`Эталонные кадры latest.html/latest.txtКопия самого последнего запуска HTML-отчёт
Сначала главные цифры, затем детали, сгруппированные по категориям: Сводка — полоса На первый взгляд, оценивающая стабильность, лаги, давление GC, скорость выделения памяти и время тика сервера, каждая с порогом, с которым она сравнивалась, чтобы оценку можно было проверить, а не принимать на веру. Затем FPS, 1% low, 0.1% low, стабильность и время загрузки мира, каждое со своей линией тренда. Частота кадров — процентили, подсчёт лагов, распределение, FPS во времени и FPS по количеству сущностей: зависимость нагрузки от частоты кадров, фактически измеренная в этом запуске. CPU и GPU — нагрузка на систему и процесс, загрузка GPU, VRAM, температуры, питание, частота. Память — куча, вне кучи, RSS процесса, GC и выделение памяти Java в потоке рендера. Мир — время загрузки чанков, пропускная способность, удерживаемые чанки, клиентские сущности. Сервер — полная картина встроенного сервера (см. ниже). Эталонные кадры — два эталонных скриншота, чтобы вы могли убедиться, что два сравниваемых запуска действительно рисовали одну и ту же сцену. Конфигурация — машина, GPU, драйвер, флаги Java, все настройки видео, полный список модов. Перетаскивайте по любому графику времени, чтобы приблизить, и все семнадцать из них перейдут к одному и тому же моменту —
Заметьте просадку на 4:10 на графике частоты кадров и сразу увидьте, чем занимались CPU, GPU, куча и загрузчик чанков в течение этих пятнадцати секунд. Есть кнопка Copy summary, которая кладёт в буфер обмена таблицу в markdown, экспорт в CSV и стилевая таблица для печати, чтобы получить чистый PDF.
Что измеряется
Кадры — сырое время каждого кадра в наносекундах, без ограничений. Задержка в 4 секунды так и остаётся задержкой в 4 секунды. Медиана, p95, p99, p99.9, максимум, стандартное отклонение, вариация между кадрами, количество статтеров и время, потерянное на статтеры. Сущности, по кадрам — количество клиентских сущностей записывается на каждом кадре, рядом с его временем. Частота кадров без указания количества сущностей, при котором она измерялась, ни с чем не сравнима. Время загрузки мира — от появления в мире до момента, когда счётчик чанков перестаёт двигаться. Это самое универсальное сравнимое число, которое может выдать бенчмарк Minecraft, потому что ему ничего не нужно знать о рендерере: ClientChunkManager остаётся ванильным, что бы вы ни установили поверх. Чанки — время декодирования и применения для каждого полученного чанка, пропускная способность, количество удерживаемых чанков во времени. Встроенный сервер — реальная длительность каждого тика: минимум, p1, медиана, p95, p99, p99.9, максимум, стандартное отклонение, полное распределение, тики дольше 20/33/50 мс, какую долю 50-мс бюджета тика использует средний тик, и общее время, потраченное сверх него. Загруженные чанки и сущности в сумме и по измерениям. TPS — это фактически наблюдаемые тики ÷ прошедшее время, а не 1000 ÷ MSPT, который не видит тик, пропущенный полностью. Показаны оба, рядом. Машина — загрузка CPU (системная и доля Minecraft), загрузка GPU, VRAM, температуры, энергопотребление, частоты, куча, внекучная память, RSS процесса, системная память, потоки, GC. Выделение памяти Java в потоке рендера — сэмплируется по потокам и дифференцируется в МБ/с. Именно эта скорость, а не размер кучи, определяет, будет ли конфигурация страдать от статтеров на GC. Фактически удерживаемая куча — измеряется после принудительной сборки, когда окно уже закрыто. Кривая кучи показывает давление выделения; это одно число показывает реальный объём.
Как читать числа
FPS — это кадры ÷ прошедшее время. Никогда не среднее мгновенных частот кадров — это придаёт больший вес быстрым кадрам и выдаёт число, которое никто не испытывал. То же правило действует внутри каждой секунды и каждой группы сущностей. В ходу два определения «1% low», и они не совпадают:
| 1% low | кадры ÷ прошедшее время по самым медленным 1% кадров |
| P1 | 1000 ÷ 99-й процентиль времени кадра |
Первое чувствительнее к крупным просадкам, второе стабильнее. Оба есть в отчёте. Сравнивайте одну и ту же строку между запусками. Стабильность — это 1% low ÷ FPS. При 100% игра идеально ровная; ниже 60% статтеры ощущаются, даже когда среднее выглядит лестно. Запуск сравним только с запуском, сделанным в тех же условиях: тот же мир, тот же маршрут или сцена, те же настройки, те же моды, то же количество сущностей. Отчёт записывает всё это — а золотые кадры позволяют проверить своими глазами.
Требования
- Minecraft 1.19 - 1.21.1
- Fabric Loader 0.16 или новее
- Fabric API
- Java 21 (уже требуется для 1.21.1) или Java 17 Только клиентская часть. Работает в одиночной игре и на серверах; метрики сервера заполняются в одиночной игре, где встроенный сервер работает в том же процессе. Для загрузки GPU нужен
nvidia-smiвPATH(по умолчанию с драйверами NVIDIA) или, на Linux с картой AMD, счётчикgpu_busy_percent, который уже предоставляет драйверamdgpu. Без того или другого всё остальное продолжает работать, а загрузка GPU отображается какn/a.
Настройка
.minecraft/config/valence-benchmark.json, создаётся при первом запуске. Значения по умолчанию — то, что вам нужно; из них стоит знать:
| Ключ | По умолчанию | Эффект |
|---|---|---|
durationSeconds | 600 | Длительность окна измерения |
warmupSeconds | 5 | Период тишины перед стартом отсчёта |
frameBufferMaxFps | 1500 | Задаёт размер буфера кадров — увеличьте, если у вас больше 1500 fps |
gpuProbe | "auto" | auto, nvidia-smi, sysfs, off |
cpuTemperature | "auto" | Везде, кроме Windows, где запрос через WMI требует прав администратора и обычно не срабатывает |
goldenScreenshots | true | Снимки до и после окна измерения |
progressMessages | false | Строка прогресса каждую минуту — выключено, потому что сообщение в чате стоит раскладки текста |
autoOpenReport | false | Открывать отчёт в браузере по завершении запуска |
Credits
Valence Benchmark от ceketrumdev. Лицензия MIT.
Частые вопросы
Как установить Valence Benchmark?
Установите Fabric под свою версию Minecraft, скачайте Valence Benchmark под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Valence Benchmark?
У Valence Benchmark есть сборки для Minecraft 1.19–1.21.11.
Нужен ли Valence Benchmark на сервере?
Нужен и в игре, и на сервере