RCHeliClub.ru

Симуляторы - школа полётов => Симуляторы (Общий) => Тема начата: AlexSr от 10 Март, 2011, 15:49:05 pm

Название: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: AlexSr от 10 Март, 2011, 15:49:05 pm
По крайней мере в отношении Феникса могу сказать, что поведение сима (особенно реакция на стики) сильно зависит от того, как он запущен в многопроцессорной системе.
При простом запуске (по умолчанию), практически всегда наблюдается неадекватность (задержки, "лаги") на управление. И поведение модели (рендеринг скорее), да же при высоком ФПС не совсем адекватные.

Решаю эту проблему "привязкой" (AFFINITY) процесса симулятора к определённому (одному) ядру/потоку процессора.
Но делать это руками каждый раз - задалбывает. >:D

(делается это так: запускаем сим, давим CTRL+SHIFT+ESC, запускается диспетчер задач, на вкладке "приложения" делаем правый клик по приложению сима phoenixRC , или что там у нас запущено, выбираем в открывшемся меню:"перейти к процессам", на открывшейся вкладке "процессы", процесс сима будет уже выделен, опять правый клик мышки и там уже - "задать соответствие" (если склероз не врёт). Откроется окно выбора ядра/потока. Снимаем галку "все", и ставим напротив "0"... уф! Всё, задали привязку. ::))

Долго искал способ "автоматизации" процесса. Есть всякие разные программки, которые это умеют делать... но это - не "камильфо"  :D
И оказалось, что в недрах операционки семейства Виндуоз всё уже есть, на самом деле. ;)
Спасибо KiD0M4N с форума http://www.techenclave.com (http://www.techenclave.com/guides-and-tutorials/cpu-affinity-made-easy-67317.html) *BRAVO*

Для начала небольшой экскурс в глубь Вин-системы (любой, хоть 64-х битной, начиная с Вин 2000):

Многие знают про существование "дос окна" в винде. Этим занимается командный процессор CMD.EXE
Но не многие знают, про его скрытые возможности.
Открываем либо в главном меню "выполнить" и вводим CMD + энтер
Либо - просто кликаем ярлык "Командная строка" в меню программ "стандартные".
Откроется "дос окно". (чёрненькое такое  :D )

Набираем в нём: START /?

И видим список команд (опций) запуска приложений.

Нас интересует ключ "/AFFINITY"
Там ещё есть ключи для установки "приоритета" приложения, но нас это в данный момент не интересует.

Обозначение потока/ядра в командной строке начинается с НОМЕРА 1 , а не "0" - как если бы мы делали это в диспетчере задачь, в окне "процессы".
То есть, нумерация "человеческая" : 1, 2, 3, 4, ...

Теперь, как всё это "автоматизировать".

Нужен "ярлык" к экзешнику симулятора. Именно ярлык!
Клик правой кнопкой мыши на ярлыке  откроет нам контекстное меню, там самый последний пункт "свойства"...

В строке "обьект" ярлыка мы увидим что то на подобии: D:\Games\PhoenixRC\phoenixRC.exe
А в строке "рабочая папка" : D:\Games\PhoenixRC

Нам нужно в строку "обьект" вписать ДО имеющейся там строки D:\Games\PhoenixRC\phoenixRC.exe следующее:
(привязка к 1-му (нулевому) ядру процессора)

CMD.EXE /C START /AFFINITY 1



И говорим "ОК". После этого, наш ярлык станет такого же вида, как у ярлыка командной строки. А путь к CMD станет приблизительно такого вида: C:\WINDOWS\system32\cmd.exe

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

Одно важное замечание, касаемое ПУТИ к файлу!
К сожалению, CMD имеет проблемы с длинными путями с пробелами и русскими буквами.
В ярлыке такие пути заключены в кавычки, скажем: "C:\Documents and Settings\" - такой путь (с пробелами) просто так не передать в командный процессор.
По этому, самый простой выход из этой ситуации - вообще не передавать никакого пути туда  ;D

То есть, нужно сам ЯРЛЫК - положить в папку, где находится симулятор. Тогда, путь к симулятору - будет путём по умолчанию для командного процессора.
И строка запуска будет иметь следующий вид:
C:\WINDOWS\system32\cmd.exe /C START /AFFINITY 1 phoenixRC.exe

Усё! Наслаждаемся новыми впечатлениями  ;)
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: Громовержец от 10 Март, 2011, 17:08:29 pm
Real Flight имеет ту же проблему. Огромное спасибо за подсказку!!!!
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: vitkor от 10 Март, 2011, 17:09:08 pm
Саша, ты про какую версию Феникса говоришь?

Кстати, попробуй еще вместо привязки к ядру поставить v-sync в настройках видео.
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: AlexSr от 10 Март, 2011, 17:27:24 pm
Вить, практически любая версия.
И основная проблема не в синхронизации (чё только не пробовал, при этом фпс более 120....), а именно в "нелинейности" поведения, каких то "лаганиях" непонятных, задержках в реакции на стики...

Как только привязываю - всё становится адекватно!

К стати, вот ещё один эффект на ноуте присутствует забавный http://www.heli-spb.ru/forumheli/index.php?topic=4918.msg80688#msg80688
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: vitkor от 10 Март, 2011, 17:32:50 pm
Видимо по разному работает. У меня проблема в Фениксе решилась установкой v-sync и в симе, и в драйверах. До этого тоже был неадекватен.
Я думал что только у меня такая фигня. У меня же этот, как его... CrossFireX - две карты на 3D используются. Оказывается это у многих так.  :D
Спасибо за инфу. Как привязывать процесс к ядру в виндовс, я как-то не знал.  
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: GanGan от 10 Март, 2011, 18:24:35 pm
Странно. Никакой разницы. 7х64 I7 - всё идеально работает как не переставляй приоритеты и процы .
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: ilyxa от 10 Март, 2011, 18:55:23 pm
Вообще-то привязка к процессору - это сугубо индивидуально. Мне, например, это бесполезно делать - стоит голая винда (даже руссификации нет) для Феникса и Солида. Из внешних раздражителей - сетевая карточка. Для меня аффинити ничего не решит.

Кстати, Александр, можно еще и с приоритезацией процесса поиграть (realtime, priority 24, high, priority 13, normal, priority 8
low, priority 4, abovenormal 10 (Windows 2000 only), belownormal 6 (Windows 2000 only)).

V-SYNC на современных карточках я вообще толком не понимаю, как работает ;)
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: AlexSr от 10 Март, 2011, 21:46:46 pm
Ребят, тут вся "фишка" в том, что сим НЕ заточен под много поточность выполнения.
(таких программ пока, реально - единицы, грамотно сделанных)

От этого, начинают проявляться разные эффекты, типа конкуренции за нитки в кеше, холостые вытеснения и прочее.
Сильно зависит от конфига, объёма кеша, наличия других процессов и прочих факторов.

Но, упрямая практика говорит однозначно: если не хотите "непоняток", (особенно связанных с реалтаймом, коим является ввод данных с пульта), то однопоточное приложение должно работать - в одном потоке  :D
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: ilyxa от 10 Март, 2011, 22:06:04 pm
Ребят, тут вся "фишка" в том, что сим НЕ заточен под много поточность выполнения.
(таких программ пока, реально - единицы, грамотно сделанных)

Но, упрямая практика говорит однозначно: если не хотите "непоняток", (особенно связанных с реалтаймом, коим является ввод данных с пульта), то однопоточное приложение должно работать - в одном потоке  :D

Не обольщайся, говоря реалтайм в контексте винды ;) Это очень условное и спорное понятие. В целом - я согласен с выводами. Но - как ты и написал - сугубо индивидуально :)

А что за процессор, если не секрет - так, для сведения - современные процессора (я говорю про Intel) имеют очень небольшием накладные расходы на перегрузку контекста (ну или кроссколл)? У вопроса, собственно, ноги растут из т.н. "мега"-технологии Hyper Threading, убогой поделки от Интела - которую в общем случае на старых "камнях" лучше попросту отключить. Современный CMT (ok, HT, если угодно) имеет другую архитектуру и действительно улучшает утилизацию конвеера процессора. Как-то так - технически ;)
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: AlexSr от 10 Март, 2011, 22:45:26 pm
Я не питаю никаких иллюзий, в отношении винды  :D Слава богу, в своё время работал на машинах заточенных именно под реалтайм.
Винда безусловно к реал-тайму отношения не имеет никакого. Но ситуация с много-ядерностью только усугубляет эту ситуацию, приводя к полному рассогласованию временных задержек.

Был и коре 2 дуо как он там..., сечас core i3 ...
Дело не столько в проце, хотя и это играет роль. Дело в большей степени в программах (и програмистах  ;) ), и кеше который занимают данные.
Если данные не попадают в кеш - время работы (перезагрузки кеша) резко возрастает.
Вот и получается, что часть приложения исполняется быстро, а часть - тормозит.
Драйвак видео - жрёт память (сидит плотно), а драйвер ввода с шины юсб - должен каждый раз "всасываться".. для обработки ввода.

Вообще, в Фениксе в частности, ФПС - почти не отражает реальных "тормозов". У меня на слабой машине может быть стабильные 60 ФПС, а при этом тупит так, что мама не горюй! Летать невозможно. Обычно это именно "подтормаживания", кратковременные, но очень неприятные.
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: ilyxa от 10 Март, 2011, 23:08:59 pm
Был и коре 2 дуо как он там..., сечас core i3 ...
Дело не столько в проце, хотя и это играет роль. Дело в большей степени в программах (и програмистах  ;) ), и кеше который занимают данные.
Если данные не попадают в кеш - время работы (перезагрузки кеша) резко возрастает.
Вот и получается, что часть приложения исполняется быстро, а часть - тормозит.
Драйвак видео - жрёт память (сидит плотно), а драйвер ввода с шины юсб - должен каждый раз "всасываться".. для обработки ввода.

ну, факты - это ДА  O0
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: SERGINIO от 19 Март, 2011, 21:21:35 pm
Винда безусловно к реал-тайму отношения не имеет никакого.

Александр,мнится мне что наши "реалтаймы" настолько в глубокой оппе ,по сравнению с реальными прерываниями в любом проце,начиная с 12 серии,что рассуждать об этом,как минимум вводить в заблуждение соратников, к сожалению не все адекватно определяют реалтайм ,без кавычек работы процессора,чаще всего путают ,процу к великой радости есть чем заняться ,кроме нашей заботы,чаще всего прерывания по сети,его тормозят, :(
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: ilyxa от 19 Март, 2011, 22:13:33 pm
Ну я почти все понял ;) Сетевая карточка поддерживает поллинг, что резко снижает сетевую нагрузку - если в фоне не крутить торренты (либо что-то иное с массивной сетевой нагрузкой, характерной для домашней машины) - в расчет можно не брать. Тем более - по поводы о..ы на многоядерной система - прерывания на этапе загрузки жестко привязаны к ядру (потоку), так что можно удачно выбрать ядро ;)

В общем - по теме -  в win xp  на mbp 2010 - привязка к CPU  и подъем приоритета (до т.н. реального времени) дало порядка 190-210 кадров (против обычных 150-170), что в целом добавило гладкости (smoothing) приложению.
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: SERGINIO от 19 Март, 2011, 22:27:24 pm
Не настаиваю,но кадры нужны скорее всего монику,а не нам,если его частота обновления не совпадает,с тем что предоставил сим-жди прерываний,не факт что они совпадут ,скорее где-то дернется разок-другой,человеку глубоко фиолетово что там меняется за пределом восприятия-10-20 гц,подсознание уловит -типа некомфорт,зрение скажет-: от..тесь,все хоккей :), а там 534 гц,или 892 гц, это всё от лукавого,у нас в сервисе наш типо дирехтор пытался ,блин отспорить у мастеров что блю -рей куда круче двд,имея на борту сжатие в 4 раза сильнее ..... :o,наивный, :P
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: ilyxa от 19 Март, 2011, 23:00:32 pm
нас в сервисе наш типо дирехтор пытался ,блин отспорить у мастеров что блю -рей куда круче двд,имея на борту сжатие в 4 раза сильнее ..... :o,наивный, :P

просмотр аватара на двд (оригинальном) и блюрее (аналогично) для меня расставил все точки над i.
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: SERGINIO от 19 Март, 2011, 23:15:18 pm
Будешь смеяться,но сделано это специально,двд по умолчанию имеет ровно в 4 раза меньшее сжатие чем блюрей,запиши фильм на двд с качеством позволяющим  использовать данный формат -про блюрей никто и не вспомнит ;D, единственный недостаток ,придётся прерваться во время просмотра-непомещается кино :),а запиши это кино в качестве доступном современному кинопрокату на обычную кассету VHC, в стандарте digital, и блюрей и двд будут просто рыдать в уголке ,не в силах осознать всё своё ничтожество :),9 терабайт на обычной кассете -даже несмотря на тормознутость доступа ( а можно подумать с блюрей она прям блещет скоростью ;D) это кого угодно заставит применить непарламентские методы маркетинга :D
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: AlexSr от 20 Март, 2011, 00:31:36 am
Серёж, по поводу задержек.
Спорит не буду ЧТО и КАК там меняется. Успевает или нет.
Мне вполне достаточно обьективных (моих, личных) ощущений.

К стати, вполне возможно, что это ноутбучная специфика. На стационарной платформе я это не проверял.
А на ноутбуке - разница РАДИКАЛЬНАЯ.  ;)
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: ilyxa от 20 Март, 2011, 00:54:28 am
К стати, вполне возможно, что это ноутбучная специфика. На стационарной платформе я это не проверял.
А на ноутбуке - разница РАДИКАЛЬНАЯ.  ;)

разница между настольным и ноутбуком в новых интелах только одна - более агрессивное энергосбережение - ядро процессора на ноутбуке в каком-нибудь пустом цикле будет чаще будет (как бы) засыпать, снижай частоту и энергопотребление.
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: ilyxa от 20 Март, 2011, 01:06:40 am
Будешь смеяться,но сделано это специально,двд по умолчанию имеет ровно в 4 раза меньшее сжатие чем блюрей,запиши фильм на двд с качеством позволяющим  использовать данный формат -про блюрей никто и не вспомнит ;D, единственный недостаток ,придётся прерваться во время просмотра-непомещается кино :),а запиши это кино в качестве доступном современному кинопрокату на обычную кассету VHC, в стандарте digital, и блюрей и двд будут просто рыдать в уголке ,не в силах осознать всё своё ничтожество :),9 терабайт на обычной кассете -даже несмотря на тормознутость доступа ( а можно подумать с блюрей она прям блещет скоростью ;D) это кого угодно заставит применить непарламентские методы маркетинга :D

Ничего не понял, если честно. BluRay в спецификации вполне поддерживает MPEG-2, наравне в VC-1. Пишем в MPEG-2, получаем тот же DVD - только объема большего. VC-1 с точки зрения восприятия - существенно лучше, чем тот же MPEG-2, при меньшем битрейте на исходном разрешении. VHS Digital - что за стандарт? У меня до сих пор где-то валяется АрВид, ну для своего времени - актуально, 3,5 Гб - ОГО-ГО. Сейчас - чих, да и только. Да и не может VHS кассета И видеомагнитофон обеспечить нужной плотности записи - это не LTO. Откуда 9 Тб взялись?
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: SERGINIO от 20 Март, 2011, 01:56:41 am
прародитель формата VHS фирма JVC,несколько лет назад родила очередное усовершенствование ,которое общими усилиями тети Сони и других почти удалось похоронить,они использовали тот-же алгоритм что и современные системы видеозаписи,надеялись что это будет востребованно,да не тут-то было,туда сложно встроить защиту от копирования,а блюрей по умолчанию уже проектировался как формат с улучшенной защитой от копирования,и не мпег -2 ,а мпег-4 ,тоже типа улучшенный алгоритм сжатия,типа сониевского атрак4---только видео-аудио,адаптивное,использующее феномены человеческого зрения-слуха,форматы понятно можно любые использовать,только смысл блюрей получается туманный при использовании мпег2-всегото втрое больше обьём чем двд :D,пока ленточные накопители имеют больший потенциальный обьём,простой пример камера на кассету минидв пишет 1 час записи-несжатой,с потоком 56 мбит ,цепляешь ХД камеру к телеку через кабель HDMI ,смотришь,балдеешь от картинки,особенно когда камера с большой матрицей,сливаешь на комп,создаешь диск,пофигу в каком формате,смотришь на этом-же телеке картинку и тихо фигеешь от качества блюрей :D,жаль что не все обыватели имеют такую возможность для сравнения,многие забросили-б свои крутые камеры с флешками и хдд далеко в чулан.
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: ilyxa от 20 Март, 2011, 10:35:47 am
Жесткий оффтоп пошел.
Ленточные накопители отмирают  как мамонты, судя по всему, это сейчас переметнулось на про-сегмент. Ну да, маркетоиды - постарались. Я убиваться не буду ;) Единственное что - BluRay авторинг мне не на чем делать - потому кроме как в плеере мне он не интересен.
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: biblbrux от 29 Апрель, 2011, 16:18:14 pm
прародитель формата VHS фирма JVC,несколько лет назад родила очередное усовершенствование ,которое общими усилиями тети Сони и других почти удалось похоронить,они использовали тот-же алгоритм что и современные системы видеозаписи,надеялись что это будет востребованно,да не тут-то было,туда сложно встроить защиту от копирования,а блюрей по умолчанию уже проектировался как формат с улучшенной защитой от копирования,и не мпег -2 ,а мпег-4 ,тоже типа улучшенный алгоритм сжатия,типа сониевского атрак4---только видео-аудио,адаптивное,использующее феномены человеческого зрения-слуха,форматы понятно можно любые использовать,только смысл блюрей получается туманный при использовании мпег2-всегото втрое больше обьём чем двд :D,пока ленточные накопители имеют больший потенциальный обьём,простой пример камера на кассету минидв пишет 1 час записи-несжатой,с потоком 56 мбит ,цепляешь ХД камеру к телеку через кабель HDMI ,смотришь,балдеешь от картинки,особенно когда камера с большой матрицей,сливаешь на комп,создаешь диск,пофигу в каком формате,смотришь на этом-же телеке картинку и тихо фигеешь от качества блюрей :D,жаль что не все обыватели имеют такую возможность для сравнения,многие забросили-б свои крутые камеры с флешками и хдд далеко в чулан.

По стандартам блюрей-видео диски нативно поддерживают mpeg2 кодек. Так же как и AVC-1, поэтому сентенции про то, что мол на двд качество видео выше - мягко говоря заблуждение :) AVC лучше мпега2 по соотношению качество\битрейт. Если одно и то же видео пожать в мпег2 и в AVC, при этом добившись одинакового размера файлов (т.е. одинакового битрейта), а потом сравнить качество, AVC будет на порядок лучше смотреться. За счет все того же улучшенного соотношения качество\битрейт.

Блюрей имеет более высокую скорость считывания по сравнению со стандартами двд-видео. Стандарт для двд если не ошибаюсь что-то около 8 мбит\с, а у блюрея порядка 32 мбит\с.  Я имею в виду не предельно возможную физическую скорость считывания информации, а потолок битрейта по стандарту видео для блюрея и двд.

Разрешение видео у блюрея 1920х1080 точек. Двд видео же имеет разрешение 720х540 или 640х480, в зависимости от стандарта. Вот вам и качество... Вы как предпочитаете перед компом сидеть? Глядя в монитор с разрешением 640х480 или все-таки что-нить типа 1920х1200? :)

Видео с миниDV камеры, которое вы ошибочно принимаете за "несжатое" на самом деле очень даже покоцано. Поток несжатого видео в PAL разрешении составляет примерно 20 мегабайт (не мегабит!) в секунду.

HD видео с камеры после вашей компрессии выглядит хуже потому что:
а) все бытовые и полупроф HD камеры используют внутреннюю компрессию видео, частенько в мпег4 или AVC, кстати ;)
б) непонятно чем конвертировалось видео при "создании диска"
в)непонятно какие кодеки использовались непонятно с какими параметрами. Ну вы поняли. ;)
г) Компрессия компрессированного ранее  видеоматериала дает большое количество артефактов. Поэтому все студии, работающие с видео стараются иметь дело с _некомпрессированным_ материалом. У нас, к примеру, один кадр видео весит порядка 12 мб, а поток получится 12х25 мб :) Это, естественно, внутристудийные форматы, и наружу мы отдаем компрессированное видео с человеческим битрейтом

И вообще, комплекс для профессионального мастеринга и авторинга двд или блюреев стоит несколько сотен тыщ долларов. Програмки из интернета по полтора мега, которые типа конвертят видео в блюреи-двд - туфта. Энкор такая же туфта, но от производителя с именем :)


Оффтоп закончил :)

По теме: Периодически подлагивает феникс. Системы как-то не заметил. Иногда есть ощутимая задержка в реакции на стики, иногда ее нет. Попробуя с ярлычками провернуть фишку, мож получшеет...
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: vitkor от 30 Апрель, 2011, 12:18:19 pm
V-sync в видео драйвере включите, если еще не включен.
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: Bublik от 30 Апрель, 2011, 16:54:42 pm
Сорри если не в тему. Чтоб не создавать новую спрошу тут. Нигде не нашел.
В аэрофлае идл работает а в фениксе нет. Что может быть? может где галочку поставить надо?
Название: Re: Запуск сима с привязкой к потоку/ядру многопроцессорной системы.
Отправлено: GanGan от 30 Апрель, 2011, 17:16:59 pm
В настройке каналов - есть пункт IdleUP - его можно забиндить на канал или на кнопку ))
[attach=#]