- Баллы
- 98
- Имя в Minecraft
- OverwriteMC
Начну с того, что вообще меня навело на написание данного текста.
Большинство людей как выясняется на практике - совершенно не понимают принципа работы Folia и того при каких обстоятельствах данное ядро может быть полезно. За частую люди ограничены простым утверждением на вроде "многопоток = лучше" и "написано производительность - значит поставлю и будет круто лагов не будет". Однако это в корне неверное утверждение и ниже я попытаюсь доступ объяснить неправильность подобных утверждений и показать почему ЛИЧНО ВАМ Folia уж точно не требуется.
Для начала стоит понять как данное ядро вообще работает и т.к. большинству людей просто западло читать весь текст с оф.страницы - опишу это просто и понятно:
Обычный Paper имеет 1 главный поток, в котором протекает основная активность сервера т.е. весь мир (распространение травы, физика блоков), все сущности (спавн мобов, ии мобов), игроки (ломание блоков, команды), эффекты (партиклы) и т.п. и вместе с этим также существуют параллельные основному потоку (тоесть асинхронные) таски, по типу света, загрузки чанков, сохранения файлов (в новых версиях) и т.п. и все данные параллельные (или же асинхронные) таски зачастую синхронизируются с основным потоком, чтобы все действия на сервере работали корректно. (хотя на самом деле это не совсем так работает и всё немного сложнее, но мы упростим это для банального понимания)
В Folia мы имеем что-то на вроде такого, однако там основного потока с которым бы синхронизировались бы все параллельные таски нет, вместо этого мы имеем множество таких "псевдо-основных" потоков каждый из которых действует параллельно и выполняет все задачи которые выполняет основной поток. И все асинхронные таски которые были в paper также есть в folia и работают они практически также как и в paper, за исключением того, что если ранее они синхронизовались с основным потоком - то теперь они синхронизуются со всеми "псевдо-основными".
Итак, когда мы примерно поняли как это работает - давайте поймем ЗАЧЕМ оно так работает.
Чтожь, тут нужно понять что есть tps и mspt и при чем тут лаги. Далее пойдет объяснение, которое вы можете увидеть в документации spark.
TPS - тики в секунду
MSPT - милисекунда за тик
Тикрейт майнкрафта - 20 т.е. 20 тиков в секунду. Отсюда максимальный MSPT для корректной работы сервера = 50мс (50мс*20 = 1 секунда)
Когда мы знаем эти вводные - давайте поймем как работают лаги. Да, лаги бывают разные.
За частую все думают что низкий TPS = лаги, а 20 tps - всё хорошо, но это не совсем так.
Суть в том, что когда ТПС не 20 - то МСПТ - больше 50 на столько, что 20 тиков в секунду просто не влезает. Однако, бывают и ситуации когда тпс 20, но лаги всё равно заметны. Почему так? По тому что если вдруг какой-то тик занял более 50 мс, но остальные заняли меньше 50мс (как за частую бывает, ведь на практике не каждый тик достигает даже 20мс) то сервер может вместить в себя 20 тиков не смотря на то, что один из них - не нормален.
И теперь, зная уже всё это - нужно понять, что если основной поток должен выполнить задачу - он её выполнит и только потом пойдет дальше. И если тик занимает 100 мс - эти 100 мс сервер будет ждать эти 100 мс для того чтобы работать дальше. Это мы лагами и называем.
И теперь, наконец мы можем переходить к фолии.
Как мы знаем - в фолии основного потока нет, а если его нет, но есть множество "псевдо-основных" - подумайте, что будет, если вдруг сервер решит залагать. Ответ - лаги будут только в том "псевдо-основном" потоке, в котором есть то, что может его нагрузить.
И в этом и есть вся суть Folia - сделать так, чтобы лаги в их привычном виде не существовали. Эти самые "псевдо-основные" потоки можно представить в виде разных серверов. Представьте, что они независимы. Если залагает один сервер - второй, что логично - не залагает. Также и с регионами, у них также есть свой TPS и если какой-то из регионов лагает - остальные живут спокойно.
Так почему же в таком случае это ядро не будет правильным выбором для создания сервера? Ну тут всё достаточно просто и описывается по сути одной фразой - ПОТОКИ НЕ БЕСПЛАТНЫЕ. Хотя есть и ряд других причин.
Разберем по пунктам, какие недостатки в использовании folia вместо обычного paper:
1) Невероятное потребление памяти. Каждый поток требует определенного объема памяти для хранения своего состояния (стек вызовов, локальные переменные и т.п.) Чем больше потоков, тем больше памяти будет использоваться. Следовательно folia будет требовать как минимум в 3 раза больше памяти чем такой же сервер на Paper.
2) Синхронизация. Когда несколько потоков обращаются к общим ресурсам или данным, необходимо управлять доступом к этим ресурсам, чтобы избежать состояний гонки и других проблем согласованности данных. А также стоит вспомнить те самые асинхронные таски, которым необходимо теперь синхронизироваться со всеми "псевдо-основными" потоками, вместо одного. Т.е. на выходе мы имеем куда большее потребление ресурсов процессора.
3) Сломанное API. Folia хоть и может поддерживать плагины, однако некоторые корневые механики, связанные с шедулерами и взаимодействие с ентити и миром (тот же player scheduler) просто не позволят запустить на вашем сервере большинство публичных плагинов.
4) Отсутствие регулярных обновлений. Это ядро обновляется хорошо если раз в месяц, что делает его немного так уязвимым в случае нахождения новых краш-эксплоитов и т.п.
Таким образом вместо ядра с "невероятной производительностью", как вы могли бы подумать увидев слово многопоток, вы получаете только большее потребление ресурсов и в добавок еще и отсутствие поддержки как плагинов так и регулярных обновлений.
Тогда зачем ядро Folia существует если оно не даёт производительности? Ответ - если в ваших реалиях оно не даст производительности - оно делалось не для вас.
Главное преимущество фолии опять же - наличие системы множества "псевдо-основных" потоков или же регионов, что в свою очередь позволяет разместить на одном сервере множество игроков без излишних волнений по поводу производительности, чего не позволяет сделать обычный Paper. Folia нацелена в первую очередь на обеспечение комфортной игры при большом онлайне на одном сервере и речь тут про 200+ человек одновременно, что в целом подразумевает то, что владельцы сервера могут позволить себе оборудование способное полностью невелировать недостатки фолии в плане большего потребления ресурсов, раскрыв его преимущества по полной. Говоря простыми словами - проигрываем в одном, но отыгрываем за счет другого и многократно.
Таким образом, подводя итог, скажу, что если вы НЕ являетесь невероятно крупным сервером, которому необходимо держать одновременно онлайн под 200+ человек одновременно и вы НЕ имеете достаточно мощного оборудования на котором будет стоять ваш сервер, а также НЕ имеете крупной команды разработчиков, способной переделать плагины под нужды вашего ядра - забудьте про существование Folia, это ядро - не ваш выбор.
Большинство людей как выясняется на практике - совершенно не понимают принципа работы Folia и того при каких обстоятельствах данное ядро может быть полезно. За частую люди ограничены простым утверждением на вроде "многопоток = лучше" и "написано производительность - значит поставлю и будет круто лагов не будет". Однако это в корне неверное утверждение и ниже я попытаюсь доступ объяснить неправильность подобных утверждений и показать почему ЛИЧНО ВАМ Folia уж точно не требуется.
Для начала стоит понять как данное ядро вообще работает и т.к. большинству людей просто западло читать весь текст с оф.страницы - опишу это просто и понятно:
Обычный Paper имеет 1 главный поток, в котором протекает основная активность сервера т.е. весь мир (распространение травы, физика блоков), все сущности (спавн мобов, ии мобов), игроки (ломание блоков, команды), эффекты (партиклы) и т.п. и вместе с этим также существуют параллельные основному потоку (тоесть асинхронные) таски, по типу света, загрузки чанков, сохранения файлов (в новых версиях) и т.п. и все данные параллельные (или же асинхронные) таски зачастую синхронизируются с основным потоком, чтобы все действия на сервере работали корректно. (хотя на самом деле это не совсем так работает и всё немного сложнее, но мы упростим это для банального понимания)
В Folia мы имеем что-то на вроде такого, однако там основного потока с которым бы синхронизировались бы все параллельные таски нет, вместо этого мы имеем множество таких "псевдо-основных" потоков каждый из которых действует параллельно и выполняет все задачи которые выполняет основной поток. И все асинхронные таски которые были в paper также есть в folia и работают они практически также как и в paper, за исключением того, что если ранее они синхронизовались с основным потоком - то теперь они синхронизуются со всеми "псевдо-основными".
Итак, когда мы примерно поняли как это работает - давайте поймем ЗАЧЕМ оно так работает.
Чтожь, тут нужно понять что есть tps и mspt и при чем тут лаги. Далее пойдет объяснение, которое вы можете увидеть в документации spark.
TPS - тики в секунду
MSPT - милисекунда за тик
Тикрейт майнкрафта - 20 т.е. 20 тиков в секунду. Отсюда максимальный MSPT для корректной работы сервера = 50мс (50мс*20 = 1 секунда)
Когда мы знаем эти вводные - давайте поймем как работают лаги. Да, лаги бывают разные.
За частую все думают что низкий TPS = лаги, а 20 tps - всё хорошо, но это не совсем так.
Суть в том, что когда ТПС не 20 - то МСПТ - больше 50 на столько, что 20 тиков в секунду просто не влезает. Однако, бывают и ситуации когда тпс 20, но лаги всё равно заметны. Почему так? По тому что если вдруг какой-то тик занял более 50 мс, но остальные заняли меньше 50мс (как за частую бывает, ведь на практике не каждый тик достигает даже 20мс) то сервер может вместить в себя 20 тиков не смотря на то, что один из них - не нормален.
И теперь, зная уже всё это - нужно понять, что если основной поток должен выполнить задачу - он её выполнит и только потом пойдет дальше. И если тик занимает 100 мс - эти 100 мс сервер будет ждать эти 100 мс для того чтобы работать дальше. Это мы лагами и называем.
И теперь, наконец мы можем переходить к фолии.
Как мы знаем - в фолии основного потока нет, а если его нет, но есть множество "псевдо-основных" - подумайте, что будет, если вдруг сервер решит залагать. Ответ - лаги будут только в том "псевдо-основном" потоке, в котором есть то, что может его нагрузить.
И в этом и есть вся суть Folia - сделать так, чтобы лаги в их привычном виде не существовали. Эти самые "псевдо-основные" потоки можно представить в виде разных серверов. Представьте, что они независимы. Если залагает один сервер - второй, что логично - не залагает. Также и с регионами, у них также есть свой TPS и если какой-то из регионов лагает - остальные живут спокойно.
Так почему же в таком случае это ядро не будет правильным выбором для создания сервера? Ну тут всё достаточно просто и описывается по сути одной фразой - ПОТОКИ НЕ БЕСПЛАТНЫЕ. Хотя есть и ряд других причин.
Разберем по пунктам, какие недостатки в использовании folia вместо обычного paper:
1) Невероятное потребление памяти. Каждый поток требует определенного объема памяти для хранения своего состояния (стек вызовов, локальные переменные и т.п.) Чем больше потоков, тем больше памяти будет использоваться. Следовательно folia будет требовать как минимум в 3 раза больше памяти чем такой же сервер на Paper.
2) Синхронизация. Когда несколько потоков обращаются к общим ресурсам или данным, необходимо управлять доступом к этим ресурсам, чтобы избежать состояний гонки и других проблем согласованности данных. А также стоит вспомнить те самые асинхронные таски, которым необходимо теперь синхронизироваться со всеми "псевдо-основными" потоками, вместо одного. Т.е. на выходе мы имеем куда большее потребление ресурсов процессора.
3) Сломанное API. Folia хоть и может поддерживать плагины, однако некоторые корневые механики, связанные с шедулерами и взаимодействие с ентити и миром (тот же player scheduler) просто не позволят запустить на вашем сервере большинство публичных плагинов.
4) Отсутствие регулярных обновлений. Это ядро обновляется хорошо если раз в месяц, что делает его немного так уязвимым в случае нахождения новых краш-эксплоитов и т.п.
Таким образом вместо ядра с "невероятной производительностью", как вы могли бы подумать увидев слово многопоток, вы получаете только большее потребление ресурсов и в добавок еще и отсутствие поддержки как плагинов так и регулярных обновлений.
Тогда зачем ядро Folia существует если оно не даёт производительности? Ответ - если в ваших реалиях оно не даст производительности - оно делалось не для вас.
Главное преимущество фолии опять же - наличие системы множества "псевдо-основных" потоков или же регионов, что в свою очередь позволяет разместить на одном сервере множество игроков без излишних волнений по поводу производительности, чего не позволяет сделать обычный Paper. Folia нацелена в первую очередь на обеспечение комфортной игры при большом онлайне на одном сервере и речь тут про 200+ человек одновременно, что в целом подразумевает то, что владельцы сервера могут позволить себе оборудование способное полностью невелировать недостатки фолии в плане большего потребления ресурсов, раскрыв его преимущества по полной. Говоря простыми словами - проигрываем в одном, но отыгрываем за счет другого и многократно.
Таким образом, подводя итог, скажу, что если вы НЕ являетесь невероятно крупным сервером, которому необходимо держать одновременно онлайн под 200+ человек одновременно и вы НЕ имеете достаточно мощного оборудования на котором будет стоять ваш сервер, а также НЕ имеете крупной команды разработчиков, способной переделать плагины под нужды вашего ядра - забудьте про существование Folia, это ядро - не ваш выбор.