Вопрос Распределение серверов по ядрам

manul694

Premium
Сообщения
1 168
Решения
34
Можно ли как-то сделать что бы игровой сервер брал только 0, 1 и 2 ядра, лобби 3, банжикорд 4 и так далее?
 
Решение
Выше дан ответ, как это сделать, но терять производительность через виртуализацию не всегда будет лучше, чем просто довериться судьбе

Насколько я знаю, настолько низкоуровневыми вещами никто не занимается. Система сама распределяет задачи и со случайными интервалами переключает их (это называется context switching)

1 ядро = 1 выполняемое действие в текущее время. Имея одно ядро, можно запустить хоть 500 потоков, но они будут выполняться медленно, потому что система постоянно будет переключаться между ними. И настроить это нельзя

Поэтому достаточно иметь много ядер, система сама разберётся. В крайнем случае можно установить максимальный приоритет для процесса сервера, добавив флаг к старту (флаг не нашёл, сам использовал...
Можно, с помощью KVM или Docker.
Если не умеете работать с ними, поставьте Pterodactyl, там функция разноса ядров по контейнерам серверов встроена.
 
Выше дан ответ, как это сделать, но терять производительность через виртуализацию не всегда будет лучше, чем просто довериться судьбе

Насколько я знаю, настолько низкоуровневыми вещами никто не занимается. Система сама распределяет задачи и со случайными интервалами переключает их (это называется context switching)

1 ядро = 1 выполняемое действие в текущее время. Имея одно ядро, можно запустить хоть 500 потоков, но они будут выполняться медленно, потому что система постоянно будет переключаться между ними. И настроить это нельзя

Поэтому достаточно иметь много ядер, система сама разберётся. В крайнем случае можно установить максимальный приоритет для процесса сервера, добавив флаг к старту (флаг не нашёл, сам использовал раньше). Но это не всегда хороший вариант. Я бы так не делал

Хорошее описание:
Известно, что на одно ядро процессора, в каждый момент времени, приходится одна единица исполнения. То есть одноядерный процессор может обрабатывать команды только последовательно, по одной за раз (в упрощенном случае). Однако запуск нескольких параллельных потоков возможен и в системах с одноядерными процессорами. В этом случае система будет периодически переключаться между потоками, поочередно давая выполняться то одному, то другому потоку. Такая схема называется псевдо-параллелизмом. Система запоминает состояние (контекст) каждого потока, перед тем как переключиться на другой поток, и восстанавливает его по возвращению к выполнению потока. В контекст потока входят такие параметры, как стек, набор значений регистров процессора, адрес исполняемой команды и прочее…

Проще говоря, при псевдопараллельном выполнении потоков процессор мечется между выполнением нескольких потоков, выполняя по очереди часть каждого из них.

Edit: нужно всегда понимать, что, кроме серверов, также работает и система, и другие программы, типа базы данных, вебсервера и так далее. Кроме того, сервер также делится на несколько потоков + плагины тоже могут их создавать. Поэтому ядер лучше брать с запасом, а не по одному на сервер. Чем больше ядер, тем реже будет происходить context switching и тем быстрее будут выполняться задачи
 
Последнее редактирование:
Назад
Сверху Снизу