Обсудим Есть вопрос конкретно какой процессор себе поставить...

Lemurzin

Premium
Заблокирован
Сообщения
570
Решения
5
Тут такая тема для обсуждения. Так вот ближе к делу Сейчас мы используем на машине i7 12700k 8 ядер 16 потоков энергоэффективные мы отключили так как когда поток попадает на них сильно падает тпс, + майнкрафт почему то любит юзать эти ядра. Сборка моих проектов такая вот: Velocity + Lobby + Anrchy1 + anarchy 2 + anarchy 3 и уже делаем 4 анархию так вот дело в том что при установке 3 анархии начал сильно просидать тпс когда на сервере более 100 игроков при этом 1 и 2 анархия при 150 игроках играющих на ней держит стабильно 20, я посмотрел нагрузку на ядра и заметил что в целом процессор держит нагрузку на 50% но увидел что все ядра нагружены на половину и некоторые часто уходят в пик до 100% когда онлайн не большой на 1 и 2 то на 3 держится хороший тпс, так вот дело в том что мне посоветовали перейти на ryzen r9 5950x якобы там 16 ядер 32 потока и я смогу поставить спокойно и 4 анархию вопрос в том умеют ли сейчас ядра сервера распределять нагрузку на процессор так что-бы они не трогали ядра занятые другим сервером к примеру вот 1 ядро активно использует 1 сервер а другие ядра простаивают у процессора и 2 сервак ложит нагрузку на ядро 1 сервака иза чего падает тпс. Я бы хотел подробно узнать как работают сервера на машине и как ядро распределяет нагрузку по потоком будет ли конфликт за потоки между соседями или они смогу нармально раскидать свои процесс по потоком процессора?
 
Lemurzin, просадки могут быть из-за тротлинга,либо хостинг не добросовестный тем самым твоим цпу кто то ещё пользуется.
Процессор лучше гонится чем амд процы,если не разогнал то попробуй разогнать а дальше посмотреть ТПС.
Так же попробуй сервера распределить по ядрам,планировщик ядер у Интела не очень в этом поколение Интела,так же дело в софте может быть т.к процессор новый.
 
Последнее редактирование:
вопрос в том умеют ли сейчас ядра сервера распределять нагрузку на процессор так что-бы они не трогали ядра занятые другим сервером к примеру вот 1 ядро активно использует 1 сервер а другие ядра простаивают у процессора и 2 сервак ложит нагрузку на ядро 1 сервака иза чего падает тпс. Я бы хотел подробно узнать как работают сервера на машине и как ядро распределяет нагрузку по потоком будет ли конфликт за потоки между соседями или они смогу нармально раскидать свои процесс по потоком процессора?
Я расписывал об этом You must be logged in to see this link., прочитай обязательно

R9 5950x хороший процессор, я бы такой поставил. У тебя на машине станет ощутимо больше потоков, что должно положительно повлиять на ситуацию. Правда, по бенчмаркам 12700k немного быстрее на ядро. 5950x лучше себя чувствует в многопоточных бенчах, что для майна тоже важно (хоть и не сильно в случае форков баккита)



Немного допишу про ядра, на будущее пригодится.

Что будет, если ограничить сервер одним ядром?

Сервер это просто Java процесс. Конкретно - JVM.

Новые потоки создают все - сам сервер и плагины. Сервер распределяет по потокам асинхронные задачи в BukkitScheduler, работает с подключениями через Netty, обрабатывает чат и входы игроков, в общем, много всего. Особенно если используется новейший публичный или годный платный форк, сейчас все вокруг пытаются параллелить баккит, чтобы исправить проблемы с тпс.

Плагины могут делать что угодно, начиная от асинхронной отправки пакетов (что очень мощная штука, можно делать скорборды, нпс и многое другое без влияния на тпс) и заканчивая запросами в интернет, в базу данных и так далее. Вариантов ОЧЕНЬ много. Большинство плагинов с богатым функционалов хоть что-нибудь делают асинхронно.

Когда сервер получит всего одно ядро, плюсы асинхронности пропадут. Более того, они будут ему вредить. В предыдущем посте я рассказывал про context switching.

Задачи, которые попадут в адаптивный thread pool, будут стоять в очень долгой очереди. А вот многие другие, например, ForkJoinPool (дефолтный) и использующие его Async Streams, CompletableFutures станут создавать по потоку на задачу. Сам представляешь, что будет, если на одном ядре будет висеть 800 активных потоков. Он будет переключаться настолько много, что не справиться толком не с одной, а переключение тоже тратит время. В итоге тпс очень сильно упадёт.

Что будет, если ограничить сервер %d ядрами?

То же самое, что и выше. Ограничивать нет смысла, тк меньше ядер = больше context switching = меньше процессорного времени.

Поэтому о таком даже думать не стоит, достаточно просто взять хороший процессор и множеством потоков, тогда можно будет и парочку серверов, и базу данных, и вебсервер, и ещё что нибудь присобачить. А о том, как это всё распределить, позаботится операционка.
 
Последнее редактирование:
Lemurzin, просадки могут быть из-за тротлинга,либо хостинг не добросовестный тем самым твоим цпу кто то ещё пользуется.
Процессор лучше гонится чем амд процы,если не разогнал то попробуй разогнать а дальше посмотреть ТПС.
Так же попробуй сервера распределить по ядрам,планировщик ядер у Интела не очень в этом поколение Интела,так же дело в софте может быть т.к процессор новый.
у меня дедик, разгон до 5.1 по всем ядрам только я часто замечаю что температура проца максимум подымается до 40 градусов но частоты тротлят до 4.6
Объединено

Я расписывал об этом You must be logged in to see this link., прочитай обязательно

R9 5950x хороший процессор, я бы такой поставил. У тебя на машине станет ощутимо больше потоков, что должно положительно повлиять на ситуацию. Правда, по бенчмаркам 12700k немного быстрее на ядро. 5950x лучше себя чувствует в многопоточных бенчах, что для майна тоже важно (хоть и не сильно в случае форков баккита)



Немного допишу про ядра, на будущее пригодится.

Что будет, если ограничить сервер одним ядром?

Сервер это просто Java процесс. Конкретно - JVM.

Новые потоки создают все - сам сервер и плагины. Сервер распределяет по потокам асинхронные задачи в BukkitScheduler, работает с подключениями через Netty, обрабатывает чат и входы игроков, в общем, много всего. Особенно если используется новейший публичный или годный платный форк, сейчас все вокруг пытаются параллелить баккит, чтобы исправить проблемы с тпс.

Плагины могут делать что угодно, начиная от асинхронной отправки пакетов (что очень мощная штука, можно делать скорборды, нпс и многое другое без влияния на тпс) и заканчивая запросами в интернет, в базу данных и так далее. Вариантов ОЧЕНЬ много. Большинство плагинов с богатым функционалов хоть что-нибудь делают асинхронно.

Когда сервер получит всего одно ядро, плюсы асинхронности пропадут. Более того, они будут ему вредить. В предыдущем посте я рассказывал про context switching.

Задачи, которые попадут в адаптивный thread pool, будут стоять в очень долгой очереди. А вот многие другие, например, ForkJoinPool (дефолтный) и использующие его Async Streams, CompletableFutures станут создавать по потоку на задачу. Сам представляешь, что будет, если на одном ядре будет висеть 800 активных потоков. Он будет переключаться настолько много, что не справиться толком не с одной, а переключение тоже тратит время. В итоге тпс очень сильно упадёт.

Что будет, если ограничить сервер %d ядрами?

То же самое, что и выше. Ограничивать нет смысла, тк меньше ядер = больше context switching = меньше процессорного времени.

Поэтому о таком даже думать не стоит, достаточно просто взять хороший процессор и множеством потоков, тогда можно будет и парочку серверов, и базу данных, и вебсервер, и ещё что нибудь присобачить. А о том, как это всё распределить, позаботится операционка.
ну смотри я кое что узнал, что r9 5950x работает по всем ядрам на чистоте 4.4 Ghz а на 1 ядро когда идет нагрузка он держит 5 ghz если считать нагрузку на все ядра то однопоточная производительность получится намного ниже чем в бенчмарках что не позволит держать стабильный тпс на сервере 150 слотов 1.18.2 так как i7 12700k держит стабильные 5 ghz на все ядра
 
Последнее редактирование:
Назад
Сверху Снизу