Unity и многоядерность

Общие вопросы о Unity3D

Unity и многоядерность

Сообщение bwolf88 30 апр 2014, 22:15

Вечер добрый.
Народ, вопрос, как заставить Unity грузить многоядерный процессор по полной ?
Тестировал приложение на создание ГО примитивов с корутиной 0.02 секунды. На 20 000 объектах фпс падает до 25-30, дальше еще меньше, при этом максимальная нагрузка на проц 12-13%. Когда останавливаю добавление, фпс нормальный. Я так понимаю, Unity использует только одно ядро для вычислений (из 8 в моем случае, как раз 12-13% и получается) и хоть и писали в других темах, что сама распределяет нагрузку, железо даже в пол силы не используется ни в редакторе, ни в скомпилированном билде.

Подскажите, если не сложно, есть ли возможность распределить нагрузку и использовать всю мощность железа?

//update ------
еще забыл упомянуть, что одновременная загрузка из сохраненного файла (уже 30 000) объектов происходит довольно быстро, при этом они создаются тем же методом. А вот динамическое создание в процессе игры как то туго идет.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: Unity и многоядерность

Сообщение Simmilliar 30 апр 2014, 23:20

12% нагрузки - еще не доказательство одноядерности движка
ведь стоит помнить, что в редакторе производительность ужимается

специально провел тест: сбилдил сцену на которой постоянно спавнятся rigidbody. и посматривал на графики нагрузки ядер.
да, нагружались они не шибко равномерно. одно ядро где-то 60% еще 4ре - процентов 30-50. три ядра вообще простаивали.
но нагружалось не одно ядро.

НО ходят мысли, что Unity может не поддерживать многоядерность на 32х ОС и что некоторые (хрен знает, какие) компоненты не могут использовать многоядерность.


Попробуй сбилдить и проверить нагрузку на ядра.
Аватара пользователя
Simmilliar
Старожил
 
Сообщения: 883
Зарегистрирован: 09 авг 2013, 14:45

Re: Unity и многоядерность

Сообщение focus 01 май 2014, 00:11

Моно дружит с потоками. Почитайте подробнее тут:
http://unitygems.com/threads/

И можете глянуть на результаты моих тестов этих потоков:
http://blog.codestage.ru/2013/03/27/unity3d-threads/

Но имейте ввиду, там есть некоторые особенности, например доступ к Unity-объектам не из основного потока может быть невозможен. Но распараллеливать тяжёлые вычисления - самое то.
Полезные плагины:
Maintainer | Anti-Cheat Toolkit | Advanced FPS Counter
Аватара пользователя
focus
UNITрон
 
Сообщения: 263
Зарегистрирован: 20 авг 2013, 22:59
Откуда: Russia, Saint-Petersburg
  • Сайт

Re: Unity и многоядерность

Сообщение bwolf88 01 май 2014, 07:58

Simmilliar писал(а):НО ходят мысли, что Unity может не поддерживать многоядерность на 32х ОС и что некоторые (хрен знает, какие) компоненты не могут использовать многоядерность.
Попробуй сбилдить и проверить нагрузку на ядра.


Я же писал, что и в редакторе и в сбилденном экзешнике одинаково 12-13% общей нагрузки. Немного странное распределение, даже если и дет нгрузка то у всех одинаково и общая все равно остается на этом же уровне.

А вот тесты по многопоточности, о которых ниже написали грузят на 60-70%. Я вчера еще до написания их пробовал, но думал, что может есть какие то встроенные решения. Буду ручками пробовать вынести вычисления в отдельные потоки. )
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: Unity и многоядерность

Сообщение 2rusbekov 01 май 2014, 11:34

Какие вычисления? Инстанциирование? Ну их вы не вытащите в отдельный поток.
Still alive...
Аватара пользователя
2rusbekov
Адепт
 
Сообщения: 1409
Зарегистрирован: 06 апр 2012, 12:57
Откуда: Бишкек

Re: Unity и многоядерность

Сообщение bwolf88 01 май 2014, 12:22

Продолжая экспериментировать с инстантом рандомных примитивов выяснил, что процесс вычисления координат и установки самого объекта на производительность практически не влияет, НО осной удар по ФПС наносит обработка нового (именно нового) коллайдера объекта. То есть, я пробовал отключить коллайдеры у всех инстантированных ГО и лаги пропали, таким образом я довел количество ГО до 50 000 на площади 1000х1000, из них около 20 000 на площади 100х100.

При этом с включенными коллайдерами при одновременной загрузке (из файла) всех объектов и передвижении по площади никаких лагов также не наблюдается. Но при установке нового объекта с включенным коллайдером в процессе игры происходят фризы, причем, чем больше уже имеющихся объектов с коллайдерами, тем дольше фриз. То есть до 5-10 тысяч лагов нет, после уже проседает ФПС. При 50 000 установленных объектах, каждый новый тормозит игру на пол секунды. При этом дополнительной нагрузки на процессор нет вообще, как было 16-20% так и остается, хотя судя по фризам при каждом новом инстанте объекта с коллайдером проиходит какое то мощное вычисление, как будто идет перебор всех уже имеющихся коллайдеров.

И еще, Юнити все таки распределяет нагрузку на проц между ядрами автоматом. При большом скоплении ГО нагрузка увеличивалась до 25-30%. Это радует. (хотя при большом скоплениии объектов в одном месте ФПС проседал, но это больше из-за графической составляющей, этот момент можно будет исправить).

Поискал по теме проседания фпс из-за коллайдеров - наткнулся еще на пару похожих тем, но решения там так никто и не нашел.
http://www.gamedev.ru/code/forum/?id=173551
viewtopic.php?f=5&t=15751

Теперь собственно новый вопрос, как избавится от фризов, при появлении нового коллайдера ? Насколько я понимаю, обработка данных всех ГО должна происходить в одном потоке, но учитывая, что не идет никакой дополнительной нагрузки, я честно говоря теряюсь в догадках.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: Unity и многоядерность

Сообщение _Ignat_ 01 май 2014, 15:04

https://www.assetstore.unity3d.com/#/content/7285
Правда запоздал Вам сообщить.
Изображение
| · участник клуба GCC · |
Аватара пользователя
_Ignat_
UNITрон
 
Сообщения: 311
Зарегистрирован: 11 дек 2013, 20:26
Откуда: Российская Федерация
  • Сайт


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 12