- Баллы
- 98
- Ник в Minecraft
- Dymeth
После добавления нескольких десятков голограмм и npc стал сильно проседать TPS.
Начал разбираться - выяснил, что львиную долю процессорного времени использует нативный io.netty.channel.epoll.Native.eventFdWrite().
В связи с этим у меня несколько вопросов:
1) Можно ли подкрутить какие-то параметры epoll или сети в целом?
UPD: Посоветовали отключить epoll (use-native-transport в server.properties). Ситуация стала чуть лучше
2) Можно ли подкрутить какие-то параметры Citizens и HolographicDisplays для уменьшения количества отправляемых пакетов?
UPD: Отключил precise-hologram-movement в HolographicDisplays - опять же, лагать стало меньше.
UPD: Добавил в свой код проверку - теперь голограммы телепортируются, только если расстояние между старым и новым положением более 0.1, также увеличил время между телепортациям с 3 до 5-и тиков. Для вычисления расстояния используется distanceSquired.
3) Какие ещё есть варианты решения проблемы?
4) Если косяк в железке - как я могу понять, в чём конкретно, чтобы больше на эти грабли не наступать? Сейчас я не уверен, что дело исключительно в процессоре.
5) Существуют ли профайлеры с поддержкой нативных вызовов java? Какие посоветуете и почему?
UPD: Посоветовали это: https://github.com/jvm-profiling-tools/async-profiler
Приведённые выше действия помогли снизить остроту проблемы. Спасибо @xDark
Начал разбираться - выяснил, что львиную долю процессорного времени использует нативный io.netty.channel.epoll.Native.eventFdWrite().
В связи с этим у меня несколько вопросов:
1) Можно ли подкрутить какие-то параметры epoll или сети в целом?
UPD: Посоветовали отключить epoll (use-native-transport в server.properties). Ситуация стала чуть лучше
2) Можно ли подкрутить какие-то параметры Citizens и HolographicDisplays для уменьшения количества отправляемых пакетов?
UPD: Отключил precise-hologram-movement в HolographicDisplays - опять же, лагать стало меньше.
UPD: Добавил в свой код проверку - теперь голограммы телепортируются, только если расстояние между старым и новым положением более 0.1, также увеличил время между телепортациям с 3 до 5-и тиков. Для вычисления расстояния используется distanceSquired.
3) Какие ещё есть варианты решения проблемы?
4) Если косяк в железке - как я могу понять, в чём конкретно, чтобы больше на эти грабли не наступать? Сейчас я не уверен, что дело исключительно в процессоре.
5) Существуют ли профайлеры с поддержкой нативных вызовов java? Какие посоветуете и почему?
UPD: Посоветовали это: https://github.com/jvm-profiling-tools/async-profiler
Приведённые выше действия помогли снизить остроту проблемы. Спасибо @xDark
Последнее редактирование:
