Concurrent Chunk Management Engine (Fabric)

Concurrent Chunk Management Engine (Fabric)

Fabric
Concurrent Chunk Management Engine (Fabric) - 11 / 4

Concurrent Chunk Management Engine (Fabric)

Мод для Fabric, который серьёзно ускоряет работу с чанками в Minecraft. Если вы когда-нибудь ждали, пока прогрузится мир, или страдали от лагов при исследовании новых территорий — это решение для вас.

Что такое C2ME?

C2ME (расшифровывается как Concurrent Chunk Management Engine) — это мод, который оптимизирует генерацию чанков, их загрузку и ввод-вывод данных. Секрет в том, что он использует несколько ядер процессора параллельно. Для максимального эффекта разработчики советуют ставить C2ME вместе с Lithium и ScalableLux.

Важно: C2ME не меняет ванильное поведение игры и не жертвует оригинальной генерацией мира ради скорости. Однако из-за недетерминированности ванильной генерации миры с одинаковым сидом могут отличаться от запуска к запуску — это не баг мода, а особенность самой игры.

Если вы заметили, что C2ME ведёт себя не так, как ванильный Minecraft, — сообщите об этом разработчикам.

Совместимость с модами и датапаками

  • Датапаки, работающие на ванильном Minecraft, поддерживаются полностью.
  • Кастомные генераторы миров из модов обычно работают нормально, но иногда возникают конфликты из-за того, что авторы модов делают допущения, несовместимые с многопоточным ускорением. Если ваш мод сломался — заходите на Discord-сервер проекта, там помогут разобраться.

Защита от некорректного поведения

В C2ME встроен CheckedThreadLocalRandom (из UWRAD) и другие детекторы. Они отслеживают, не портят ли моды внутренние механизмы игры, что могло бы привести к неотлаживаемым багам. Ложных срабатываний практически не бывает — если детектор сработал, значит, мод действительно делает что-то не так. Сообщите об этом автору проблемного мода.

Поддерживаемые версии Minecraft

СтатусВерсия
Полная поддержкаПоследний релиз и последний снапшот
Долгосрочная поддержка (только критические баги)Старые релизы
Не поддерживаютсяСтарые снапшоты

Бенчмарки (1.21.10 с Terralith, ноябрь 2025)

Тестирование проводилось на двухпроцессорном Intel(R) Xeon(R) Gold 5218R с ограничением 2 ГГц, на Debian 13. Использовался OpenJDK Zulu25.30+17-CA (build 25.0.1+8-LTS). Датапак — Terralith_1.21.5_v2.5.13.zip.

2–80 потоков

1–16 потоков

Ключевые цифры (chunks per second, чем больше — тем лучше):

  • 2 потока: C2ME — 22.62, Paper — 17.37, Vanilla — 10.63
  • 16 потоков: C2ME — 182.38, Paper — 84.76, Vanilla — 14.22
  • 80 потоков: C2ME — 460.35, Paper — 81.43, Vanilla — 14.58

C2ME показывает практически линейный прирост производительности до 40–50 потоков, после чего выходит на плато. Для сравнения: Paper упирается в потолок уже на 18–20 потоках, а ванильный Minecraft почти не масштабируется.

Предыдущие бенчмарки (1.21.3, ноябрь 2024)

Развернуть
2t-80t1t-10t

Подробности: https://gist.github.com/ishland/9601a033afad4be5b17ffaed859577fd

Детали тестирования

Развернуть

Общие условия:

  • Все тесты на tmpfs, в Overworld, с очисткой папки мира перед каждым запуском JVM.
  • Сид: 114862964781274189
  • В конфиге Chunky включён force-load-existing-chunks.

Используемые моды:

  • C2ME: c2me-fabric-mc1.21.10-0.3.5.1.0.jar, Chunky-Fabric-1.4.51.jar, fabric-api-0.138.3+1.21.10.jar, lithium-fabric-0.20.1+mc1.21.10.jar, ScalableLux-0.1.6+fabric.c25518a-all.jar, spark-1.10.152-fabric.jar, vmp-fabric-mc1.21.10-0.2.0+beta.7.217-all.jar. В c2me.toml параметр globalExecutorParallelism установлен на количество потоков.
  • Paper: paper-1.21.10-113.jar, Chunky-Bukkit-1.4.40.jar. В paper-global.yml: worker-pool.io-threads = 4, worker-pool.worker-threads установлен на количество потоков.
  • Vanilla: Chunky-Fabric-1.4.51.jar, fabric-api-0.138.3+1.21.10.jar, spark-1.10.152-fabric.jar. Дополнительный JVM-флаг: -Dmax.bg.threads= установлен на количество потоков.

2–80 потоков: JVM-флаги: -Xmx32G -Xms32G -Xss4m -Xshare:off -XX:+DisableExplicitGC -XX:+UseNUMA -XX:+UseZGC -XX:-ZUncommit -XX:+UseLargePages -XX:+UseTransparentHugePages -XX:+UnlockExperimentalVMOptions -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -Dchunky.maxWorkingCount=256. Для ванильных тестов: -Xmx64G -Xms64G (чтобы избежать крашей). Прогрев: радиус 2048 блоков с центром 0 0. Измерение: радиус 4096 блоков с центром 1000000 1000000 (всего 263169 чанков).

1–16 потоков: JVM-флаги: -Xmx16G -Xms16G -Xss4m -Xshare:off -XX:+DisableExplicitGC -XX:+UseNUMA -XX:+UseZGC -XX:-ZUncommit -XX:+UseLargePages -XX:+UseTransparentHugePages -XX:+UnlockExperimentalVMOptions -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -Dchunky.maxWorkingCount=256. Прогрев: радиус 1024 блоков с центром 0 0. Измерение: радиус 2048 блоков с центром 1000000 1000000 (всего 66049 чанков).

Полезные ссылки

Не забудьте сделать бэкапы миров перед установкой.

Все права на данный контент принадлежат его авторам. Мы не храним и не распространяем файлы — страница носит исключительно информационный характер. Оригинальный источник доступен по этой ссылке.

0
0
1

Комментарии (0)

Войдите, чтобы оставить комментарий

Пока нет комментариев

Будьте первым!