LINUX.ORG.RU
ФорумTalks

Многопоточность в современных играх

 , , ,


0

2

Сам не играю, но иногда смотрю тестирование CPU в современных играх. Как это не странно, на данный момент, у большинства современных игр отстутсвтутет поддержка многопоточности. Что скажут аналитики?

★★★★★
Ответ на: комментарий от next_time

Кстати, линукс тоже так делает?

У Линукса немного другой шедулер, да понятие и «Линукс» растяжимо. У ядра опций навалом.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от unt1tled

отличная идея для стартапа: игра с героями шизофрениками с раздвоением личности в реальном времени, минимальные требования — 2х ядерный процессор

Зря вы так смеётесь,персонажей можно разбить на N групп и обсчитывать каждую группу на своём ядре процессора.

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

Нагрузка на ядрах говорит только об умении венды разбрасывать задачи по ядрам и более ни о чем.

предполагаю, там всё проще: процессов в системе сидит over9000, потоков суммарно ещё больше. а ядер всего 8. в каждый момент времени на одном ядре исполняется 1 поток, => (over9000 - 8) потоков ждут. как только одно, любое, ядро освобождается, планировщик ему выделяет поток, исходя из своих соображений (приоритет и др.), т.о., и получается, что потоки прыгают по разным ядрам.

Верно смотреть суммарную нагрузку и соотносить с количеством ядер, см. выше.

не совсем ясно, каким образом это сделать

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

К стати какой то ботописатель к своему боту распознавание образов прикручивал.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от lenin386

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

В чем должна заключаться поддержка более одного ядра процессора?

Многие местные эксперты не могут и это.

Вы даже не знаете чем отличаются потоки, нити, процессы. Так что ваше мнение о местных экспертах несколько бесполезно.

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

Вы даже не знаете чем отличаются потоки, нити, процессы.

Отличия на самом деле минимальны и надуманы. Одно время в этом вашем Линуксе потоки через процессы и эмулировались.

В чем должна заключаться поддержка более одного ядра процессора?

В наличие более одного активного потока.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от next_time

не совсем ясно, каким образом это сделать

Как это сделал я в своей скриншоте. Специально выбрал машину с двумя ядрами, без гипертрединга, чтобы было удобно считать и было наглядно. Берём за 100% нагрузку на все ядра. Если у вас 4 ядра, и диспетчер задач показывает, что игра использует 25% ресурсов процессора, то игра использует ровно одно ядро. С гипертредингом сложнее.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от EXL

да вроде же по статичтике у 80% x64

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

Отличия на самом деле минимальны и надуманы. Одно время в этом вашем Линуксе потоки через процессы и эмулировались.

Эксперты такие эксперты.

В наличие более одного активного потока.

А если поток спит или находится в conditional sleep?

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

Эксперты такие эксперты.

Если ты думаешь, что изолированность адресного пространства, отдельный pid, привязка к исполняемому файлу - это что-то существенное, то время тебе покажет твою неправоту. Это всё многократно переигрывалось и реализовывалось друг через друга на самом деле.

А если поток спит или находится в conditional sleep?

Значит, для жизнедеятельности этого потока не нужно отдельного ядра. Вариант, что этот поток решительно проснётся, при появлении какого-то особого монстра, например, и начнёт что-там усиленно считать, оставим. Так не бывает.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 3)
Ответ на: комментарий от lenin386

у меня, как раз, гипертридинг, поэтому, таким способом не смогу воспользоваться, но, в любом случае, нужно проверять на играх с UE3-4, а не на варкрафте.

А вообще:

«В связи с широким распространением многопроцессорных систем движок использует два параллельных главных потока — основной поток (отвечающий преимущественно за игровой процесс) и поток рендеринга. Кроме двух главных потоков могут быть вызваны второстепенные, которые выполняют разовые задачи.[18] Появилась поддержка многопоточной динамической загрузки данных (streaming), например, загрузка «локации» непосредственно при перемещении по ней в целях экономии ресурсов.»

(вики, статья о UE, раздел UE3)

улучшена работа с многопроцессорными системами — распределение задач между многопроцессорными системами с помощью Unreal Swarm

(там же, UE 3.5)

Так что, многопоточность в играх таки есть, но ограниченная в UE3 и полноценная в UE3.5+

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

у меня, как раз, гипертридинг

Его несложно отключить для эксперимента, потом вернуть.

в любом случае, нужно проверять на играх с UE3-4 а не на варкрафте.

Можно и на них проверить. Хотя, заметь, на счёт UE3-4 я и не спорил. Господин Спуфинг с видом эксперта поведал нам, что игры от Близзард, вов и старик, используют два ядра, я с этим не согласился.

Так что, многопоточность в играх таки есть

Никто не спорит с тем, что она есть. Вопрос в том, нужны ли для этих потоков отдельные ядра процессора. Что даст сбор восьмиядерной печки для повышения производительности в играх относительно двухядерного Целерона ? Вообще ничего, кроме минимального прироста за счёт кеша и частоты. Шок, сенсация.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 2)
Ответ на: комментарий от lenin386

то время тебе покажет твою неправоту

О да.

Так не бывает.

Вижу, что в вашем мире вообще все по-другому.

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

нужно проверять на играх с UE3-4

Ну, давай проверим. Где взять бисплатно и без SMS ? Запустил Pillars of Eternity. 2015-й год. Одно ядро загружено.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от lenin386

Господин Спуфинг с видом эксперта поведал нам, что игры от Близзард, вов и старик, используют два ядра, я с этим не согласился.

Как обычно, он, конечно, не прав. У близов допотопные движки.

Его несложно отключить для эксперимента, потом вернуть.

Оно же в UEFI делается? А я пароль от него забыл.

Что даст сбор восьмиядерной печки для повышения производительности в играх относительно двухядерного Целерона ?

Обработка столкновений, например, выполняется на процессоре, а она «жручая», вероятно даст, но зависит от игры.

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

Где взять бисплатно и без SMS ?

вероятно, нигде(

Pillars of Eternity.

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

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

Школоигры уже давно упираются в видеокарту, а не в процессор.

fix

cvs-255 ★★★★★
()
Ответ на: комментарий от unt1tled

отличная идея для стартапа: игра с героями шизофрениками с раздвоением личности в реальном времени, минимальные требования — 2х ядерный процессор

раздвоение личности к шизофрении не имеет никакого отношения, это очень редкое расстройство

Harald ★★★★★
()

Конвейер от многопоточности страдает. Так что смысл в многопоточности велик обычно тогда, когда что-то с диска читается. Пока один поток ждёт результатов чтения, другой работает. А все игры сейчас оперативку кушают, как не в себя, так что смысла в такой многопоточности не так много, как кажется.

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

а еще давно не было вайна про то, что некоторые игры выходят только в 64 битной версии

да давно пора было ещё с момента появления первых 64 битных процессоров, это просто виндузятники-геймдевелоперы долго не могли в 64битность, пока совсем не припёрло по потреблению памяти

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

не ну некоторые в сетевых особенно играх вроде распараллеивают. например каой нибуть батлофилд что-ли вроде как. или нет?

а смысл сетевой код выносить в отдельный поток? Он много процессорного времени не жрёт с одной стороны, с другой требует синхронизации с игровой логикой, профита нет

Кстати, библиотека WinSock и так всегда один поток внутри себя создаёт, так что в сетевых играх потоков минимум 2 будет всё равно

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

Нет. Оно не равно числу юнитов и не равно числу ядер. Оно чуть побольше числа ядер, но не на очень много. Зависит от того, что в этих потоках творится.

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

Угу, вот только на восьмиядерном процессоре конвейер один на все 8 ядер. Потому восьмиядерный проц такой же частоты и сходных характеристик и не в 8 раз быстрее одноядерного, а максимум на 40%.

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

А игровых систем с несколькими процессорами я что-то не много встречал.

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

Угу, вот только на восьмиядерном процессоре конвейер один на все 8 ядер.

где бы пруфы посмотреть? Ты про intel или amd?

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

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

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

Да я об обработке данных уже после сети. Там же несколько игроков про левелам бегает. Каждого можно наверное обрабатывать своим потоком.

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

На сервере м.б., а на клиенте что там обрабатывать, отрендерить только по указанным координатам, что задача видеокарты

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

Угу, вот только на восьмиядерном процессоре конвейер один на все 8 ядер.

Это ты с гипертредингом попутал.

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

Оно чуть побольше числа ядер, но не на очень много.

а бывает ещё чуть поменьше, а ещё есть гипертридинг... не суть важно.

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

Я думаю от подхода и его реализации всё зависит.

trueshell ★★★★★
()

Что скажут аналитики?

что разрабы - ленивые рукожопы

reprimand ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.