Страница 1 из 2

Для чего используется ЦП?

СообщениеДобавлено: 24 июн 2009, 23:49
wild_r
Одно ядро ЦП загружено на 95-100 процентов, и это мне совсем не нравиться. Сцена большая и далеко неоптимальная. Есть прямой свет.

1) Физика - ее почти не на сцене, поэтому она отбрасываеться.
2) Обеспечение скриптов. Есть скрипт с показыванием ФПС, его отключение ничего не дает. Также скрипты из префаба FPS.
3) Свет?? Вроде должна видеокарта просчитывать.
4) Собственные нужды движка.

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

Re: Для чего используется ЦП?

СообщениеДобавлено: 24 июн 2009, 23:55
ffinder
wild_r писал(а):Все остальные скрипты я буду пускать в несколько потоков.

интересно как ты будешь это делать?

Re: Для чего используется ЦП?

СообщениеДобавлено: 25 июн 2009, 00:13
wild_r
http://www.rsdn.ru/article/dotnet/CSThreading1.xml

Вот, читай и удивляйся. Прикинь, работает... :ymparty: :-B

З.Ы. Можно даже вот такое устроить... :)) :D

Скрытый текст:

Re: Для чего используется ЦП?

СообщениеДобавлено: 25 июн 2009, 00:57
gnoblin
Насколько я понял, Unity API - не "thread safe".

Пост Aras'а (второй сверху) http://forum.unity3d.com/viewtopic.php?t=18508.

Расскажете, как стабильно у вас будет работать это все). Должно вылетать в половине случаев (особенно при работе с Компонентами в отдельном потоке).

Но лично Я никаких тестов не проводил (*) .

Re: Для чего используется ЦП?

СообщениеДобавлено: 25 июн 2009, 01:02
gnoblin
Может стоит просто разобраться в скриптах во всем проекте? К примеру, обрабатывать происходящие в Update() события не каждый кадр, а каждые 3-5?
Еще в OnGUI() ничего не стоит пихать, потому что она может вызываться несколько раз за кадр. :ympeace:

Re: Для чего используется ЦП?

СообщениеДобавлено: 25 июн 2009, 10:57
wild_r
Убрал скрипт с показыванием фпс. Все так-же, в тяжелых кадрах загрузка до 32 процентов, в легких до 26. Понятно, что часть тратиться на обеспечение ГПУ работой, на сам рендер движка, что цифры выше и показывают. Но куда деваеться остальное время ЦП? Звука нет.

Все скрипты, которые остались - mouselook, firstpersoncontroller.

Re: Для чего используется ЦП?

СообщениеДобавлено: 25 июн 2009, 11:10
Zaicheg
Одно ядро ЦП загружено на 95-100 процентов

Все так-же, в тяжелых кадрах загрузка до 32 процентов, в легких до 26.

Стоит определиться в цифрах.
Стоит включить голову и понять, что существуют процессоры с 4 ядрами. И загрузка одного ядра полностью соотв. загрузке процессора на 25 процентов. Когда загуружено одно ядро и часть второго - это 32 процента.

Как бэ я указал Вам на недостаточно информации в вопросе (чёрт знает, сколько у Вас там ядер, и где Вы говорите о загрузке одного ядра, а где о всём ЦП), а Вы ругаться. Ай-ай-ай.
Хотя признаю, что особого смысла моё сообщение не несло. Так, мелкое уточнение для общей пользы.

Re: Для чего используется ЦП?

СообщениеДобавлено: 25 июн 2009, 11:44
wild_r
Zaicheg писал(а):
Одно ядро ЦП загружено на 95-100 процентов

Все так-же, в тяжелых кадрах загрузка до 32 процентов, в легких до 26.

Стоит определиться в цифрах.


Стоит включить голову и понять, что существуют процессоры с 4 ядрами. И загрузка одного ядра полностью соотв. загрузке процессора на 25 процентов. Когда загуружено одно ядро и часть второго - это 32 процента.

Иногда лучше молчать, чем говорить. Если у вас нет никаких дельных предложений.

Re: Для чего используется ЦП?

СообщениеДобавлено: 26 июн 2009, 13:14
GrueGames
У меня тоже квад, и загружено только 1 ядро.
На офф форуме пишут [unity 3D] не поддерживает многоядерность.

"If you write code that fully runs within .NET threads and does not touch Unity, then yes
Otherwise no, unity scripts all run in the same thread"

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

Re: Для чего используется ЦП?

СообщениеДобавлено: 26 июн 2009, 13:18
Neodrop
Сеть, Подгрузка и звук работают в отдельных потоках, ядра для которых раздаёт ОСь.
А так, да, многоядерность оставляет желать лучшего. Ждёмс. :-w
У меня 4 ядерный процессор. Грузится одно и совсем малость остальные. Очень досадно.. :-?
Хуже всего, что физика тоже на том же ядре.

Re: Для чего используется ЦП?

СообщениеДобавлено: 26 июн 2009, 20:06
wild_r
Вот, отлично - мы выяснили что работа с ресурсами идет в других потоках. Но куда тогда девается время ЦП?

З.Ы. Понял. Судя по всему, напрямую зависит от количества объектов на сцене. И мне кажется, что все дело в просчете видимости объектов камерой, ибо экспериментируя с OnBecomeVisible я заметил что просчет видимости происходит похоже каждый проход рендера. А это затратно. Но это только мои предположения.

Re: Для чего используется ЦП?

СообщениеДобавлено: 26 июн 2009, 20:13
Neodrop
Загрузка ЦП растёт пропорционально дравколлам. Это единственное, что я точно заметил.
Видать на подготовку рендеринга оно и уходит.
Если у меня 200-300 дравколлов, то загрузка одного ЦП не более 15-20 % если более 1000 (точно не мерял) то выростает до 90-100% и так и держится постоянно. :-?

Re: Для чего используется ЦП?

СообщениеДобавлено: 26 июн 2009, 21:27
romeo_ftv
Еще скелетная анимация выполняется на ЦПУ в отдельном потоке (может даже не одном).

Re: Для чего используется ЦП?

СообщениеДобавлено: 26 июн 2009, 21:40
wild_r
Да, теперь все ясно. Сейчас смотрю на многопоточность, завтра или сегодня напишу о резалтах и стабильности. Для теста планирую пока счетчик фпс стандартный перевести во второй поток. Все-так мне кажется что все нормально будет с потоками, ибо в .NET есть все - от семофоров, до даемонов (?) и приоритета.

Хотя пока возникла трабла с видимостью фунции Update движком, если она в другом классе.

Re: Для чего используется ЦП?

СообщениеДобавлено: 26 июн 2009, 23:14
Neodrop
Update почти наверняка выполнятся не будет. И довольно большой букет других "системных" функций Юнити. Я думаю нужно делать флаги - типа началось Update - ставим тру в переменную, которую читает поток.