LINUX.ORG.RU
ФорумAdmin

4х ядерный процессор, но приложение использует лишь 1 ядро одновременно

 ,


0

1

Есть игровой сервер Killing Floor. 4х ядерный процессор. При пиковой нагрузке сервера в htop колонка CPU равна 100% (бывает 105%), но используется только 1 ядро из 4. Остальные незагружены. И на сервере начинаются ЛАГИ. Это так и должно быть, чтобы 1 процессор обрабатывает 1 процесс? И как это изменить?



Последнее исправление: Klymedy (всего исправлений: 2)

если приложение не умеет овер 1 поток, то хоть что делай
можешь разве что планировщиком заставить скакать с ядра на ядро, не более того
а чтобы изменить сие, надо *внезапно* дать разрабу_по_яйцам/заплатить и просить многопоточную версию

megabaks ★★★★
()
Ответ на: комментарий от Kindly_Cat

Это не вариант, я не программист да и этот сервер без исходников. Есть другие варианты? Просто странно получается, 3 ядра прохлаждаются, одно загружено. Причем то, которое загружено постоянно меняется, то есть они обрабатывают процесс по очереди, но не одноврименно.

vmart333
() автор топика

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

anonymous
()
Ответ на: комментарий от vmart333

странно? тебе же написали - так задумано
вот тебе задачка: почеши одной рукой одновременно оба уха и пятку, не забыв погладить котэ.

megabaks ★★★★
()
Ответ на: комментарий от Kindly_Cat

А можно как-то узнать «наверняка», поддерживает многопроцесорность или нет? В смысле как проверить, кроме наблюдений в htop?

vmart333
() автор топика
Ответ на: комментарий от vmart333

Если процесс многопоточный, то htop отобразит его как несколько процессов (во всяком случае это настраивалось). Если процесс представляет собой один поток, то и работать он будет на одном процессоре.

mky ★★★★★
()
Ответ на: комментарий от vmart333

покурить ман/прочие_доки по сабжу?
возможно софтина ждёт от тебя ключиков каких, типа -jX, -nX, --threads=X и т.д....

megabaks ★★★★
()
Ответ на: комментарий от vmart333

Это не вариант, я не программист да и этот сервер без исходников. Есть другие варианты? Просто странно получается, 3 ядра прохлаждаются, одно загружено.

Ничего странного. У тебя есть шоссе 4 полосы и жигули семерка. Странно, ты едешь всего 100км/ч по одной полосе, а 3 другие прохлаждаются.

Странно - это если ты на этих жигулях будешь делать 400км/ч сразу по всему шоссе.

BaBL ★★★★★
()
Ответ на: комментарий от vmart333

Тогда ещё вариант: отключи 2-3 ядра, а оставшееся разгони до 4; 4,5 гГц. Не забудь про повышение вольтажа на конкретное ядро!

darkenshvein ★★★★★
()
Ответ на: комментарий от Deleted

В этой папке 4 других папки с номерами PID'ов каждого процесса.

vmart333
() автор топика
Ответ на: комментарий от darkenshvein

Тогда ещё вариант: отключи 2-3 ядра, а оставшееся разгони до 4; 4,5 гГц. Не забудь про повышение вольтажа на конкретное ядро!

Ага, а потом ловить рандомные глюки в разных местах =).

Deleted
()
Ответ на: комментарий от Deleted

Просто проигрывает новым процам, а у него старый. Мб fx-8350 потянул бы эту задачу, там хоть и ядер 8, но 4 Ггц. Почему-то этот случай заставил меня задуматься, брать ли fx-8350 :)

Woklex
()
Ответ на: комментарий от darkenshvein

Использовать разгон на серверных задачах - дрючево и нищебродство.

Deleted
()
Ответ на: комментарий от vmart333

Это странно. Если htop показывает и в /proc/PID/task несколько каталогов, значит многопоточный.

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

mky ★★★★★
()
Ответ на: комментарий от mky

Наверное в /proc/PID/task серверу разрешено использовать 4 ядра по умолчанию, но он это не поддерживает...

vmart333
() автор топика
Ответ на: комментарий от vmart333

В /proc/PID/task показывается именно количество потоков, созданных процессом (сервером). Причём для создания каждого потока процесс должен делать системный вызов, то есть это полностью инициатива сервера, а не то, что операционная система разрешает использовать несколько ядер процессора.

Вобще, Killing Floor ведь сделан на движке Unreal, наверное у них и сервер на одной кодовой базе, поэтому можно поискать, что пишут про многоядерность сервера для Unreal.

mky ★★★★★
()
Ответ на: комментарий от mky

Не помню писал или нет, сервер работает в chroot окружении, может это еще как-то влияет.

Сделал скрин, для наглядной демонстрации загрузки только ОДНОГО ядра. И в такие моменты, на сервере начинаются лаги. http://s019.radikal.ru/i617/1301/f6/5b2c818082c9.png

root@life:~# ls /proc/922/task
922  925  927  928
root@life:~# ls /proc/922/task/928
attr  cgroup      cmdline  cpuset  environ  fd      io       limits    maps  mountinfo  ns       oom_score      pagemap      root   schedstat  smaps  stat   status   wchan
auxv  clear_refs  comm     cwd     exe      fdinfo  latency  loginuid  mem   mounts     oom_adj  oom_score_adj  personality  sched  sessionid  stack  statm  syscall
root@life:~# ls /proc/922/task/922
attr  cgroup      cmdline  cpuset  environ  fd      io       limits    maps  mountinfo  ns       oom_score      pagemap      root   schedstat  smaps  stat   status   wchan
auxv  clear_refs  comm     cwd     exe      fdinfo  latency  loginuid  mem   mounts     oom_adj  oom_score_adj  personality  sched  sessionid  stack  statm  syscall
root@life:~#
vmart333
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.