AndreW82 Posted November 5, 2008 Posted November 5, 2008 Итак, в погоне за драгоценными FPS в "акуле" проделал ещё один эксперимент - поставил висту (32-bit edition). И о чудо - FPS на моей системе (P4 Prescott 3.2@3.6 GHz, 2GB RAM, Ati Radeon HD3850 512MB) подрос в среднем на 4-5 на тех же настройках, что и в XP (скопировал файлы options.lua и graphics.cfg в новую установку и подкрутил в видео драйвере AA и AF). Сравнивал в обеих системах на трэке "шоу". Windows XP SP3: вид снаружи, количество объектов в сцене приближается к 2000 - FPS падает до ~15... Windows Vista Ultimate (32-bit edition): вид снаружи, количество объектов в сцене приближается к 2000 - FPS падает до ~20... Заодно попробовал процессу dcs.exe разрешить использовать "второе ядро" (проц одноядерный, но с включенным HyperThreading, поэтому в системе виден как два ЦП) - как я и предполагал эффект равен нулю, что в XP, что в висте. Для полноценного эксперимента можно было бы поставить "чистую" WinXP SP2, но и в моей XP SP3 во время теста сторонние (не родные для винды) процессы предварительно убивались, кроме антивиря и ATT (но они были запущены и в висте). Дрова видео в обеих системах были Catalyst 8.10 Hotfix (т.е. последние на этот момент). 1
eXceed Posted November 5, 2008 Posted November 5, 2008 (edited) Dmut Заметь, я не критиковал ваше творение никогда. Просто меня раздражает такой тон разговора с обычными юзерами вашего продукта. Вы тупо затыкаете рот другим, говоря что все это чушь. Просто надоело уже терпеть. Я этот форум просто читал с 2006го и лишь в этом году зарегистрировался и вот теперь НАКИПЕЛО ПРОСТО. Когда проверил пост товарища про прогу CPU Control и отписался, что действительно есть прирост производительность, мне уважаемые девелоперы начали твердить обратное и етц. Знаешь, очень неприятно слышать в свой адрес подобное. Мол ты не прав и хоть тресни. А я два раза написал, что действительно акула стала плавней работать, т.е. просадок ФПС стало меньше. НО опять же девелоперы взгромоздились на свой трон откуда чернь(т.е. простой народ) просто отфутболили сказав, что это не возможно. Еще раз пишу, что паралельное выполнение одного потока возможно на двух и более конвеерах. Блин, об этом подробно написано в Intel Programming Reference(Manual) x86. Подобный функционал был заложен еще в Pentium II, а в Core 2 Duo и старше только расширен и улучшен. Ознакомся для начала с архитектурой под которую программируешь. Windows XP и младше просто не несли подобного функционала в ядре. Подобная обработка целиком и полностью должна управлятся программно(из ядра ОС) и аппаратным декодером инструкций процессора. Да, выполняются паралельно не зависящее друг от друга инструкции. И еще скажите, что это не возможно или это не паралельное выполнение скажете вы? Собсно вот я в это и вцепился, потому, что тут вы господа не правы. AndreW82 От HT выигрыша не будет. А вот уже от 2х ядер выигрышь будет заметен. Камень слабоват, но раскинув ЧА на 2 ядра провалов ФПС стало меньше гораздо. Сегодня отлетал тяжелую мисиию на ура просто. з.ы. Это называется Суперскалярное выполнение и архитектура, появилась еще в самых первых Pentium. Опять же это все описано в Intel Programming Reference Edited November 5, 2008 by eXceed Welcome to the Rock
Geen Posted November 5, 2008 Posted November 5, 2008 Еще раз пишу, что паралельное выполнение одного потока возможно на двух и более конвеерах. Блин, об этом подробно написано в Intel Programming Reference(Manual) x86. Подобный функционал был заложен еще в Pentium II Как-то это совсем не тоже самое, что многопоточность или многоядерность... :smilewink:
Dmut Posted November 6, 2008 Posted November 6, 2008 (edited) Еще раз пишу, что паралельное выполнение одного потока возможно на двух и более конвеерах. Блин, об этом подробно написано в Intel Programming Reference(Manual) x86. приведи цитату, где говорится, что выполение потока может происходить на двух ядрах одновременно. суперскалярная архитектура - это совсем другое и появилась она в линейке x86 ещё в Pentium Pro ps: в той ветке я просто недосмотрел, что акула делает свой setaffinity; по умолчанию винда назначает процесс на все ядра и для этого не нужно использовать никаких утилит, поэтому я был против использования разных cpu control и похожих. я согласен, что на большинстве конфигураций предпочтительнее назначать "акулу" на все ядра, она будет идти плавнее - при нагрузке одного ядра каким-либо периодическим процессом винда перекинет акулу на другое ядро. но это не означает одновременное исполнение кода двумя ядрами. Edited November 6, 2008 by Dmut "There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu [sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]
JGr124_MUTbKA Posted November 6, 2008 Posted November 6, 2008 Еще раз пишу, что паралельное выполнение одного потока возможно на двух и более конвеерах. Блин, об этом подробно написано в Intel Programming Reference(Manual) x86.А чем конвейеры от ядер отличаются - в это же мануале не написано случаем? :)Подобная обработка целиком и полностью должна управлятся программно(из ядра ОС) и аппаратным декодером инструкций процессора.О как! ОС уже управляет конвейерами процессора? JGr124 "Katze"
eXceed Posted November 6, 2008 Posted November 6, 2008 JGr124_MUTbKA ОС непосредственно не управляет конвейером, ядро балансирует нагрузку на ядра и заведует распределением квантов времени потокам. Этим занимается менеджер ресурсов ядра. Dmut Это называется ILP - Instruction Level Parallelism(основа суперскалярной архитектуры). Хорошо описано здесь. Смысл в том, что чем больше исполнительных модулей - тем больше инструкций можно выполнять параллельно. Не важно сколько у тебя ядер. Ядро по сути это лишь еще несколько исполнительных модулей. Тем более учитывая то, что кэш общий то проблем с синхронизацией на исполнительных модулях не возникнет. Тем более декодер инструкций один на ядро работающий на общем кэше(кэш инструкций, введен в P4, один на оба ядра). А вот когда система по настоящему многопроцессораная - начнутся проблемы и увелечения производительности не будет наблюдатся, т.к. область памяти одна, но кэш и кэш инструкций отдельные. В таком нагрузка ляжет на исполнительные модули одного процессора. з.ы. ILP подробно описан в Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 2B 1 Welcome to the Rock
swu Posted November 6, 2008 Posted November 6, 2008 короче что надо сделать чтобы ЧА шла лучше на 2х ядрах? WR=012=SWU
eXceed Posted November 6, 2008 Posted November 6, 2008 swu Либо поставь CPU Control прогу и переключи dcs.exe на два ядра, либо руками в диспетчере задач установи соответствие на DCS.exe 2 ядра. Welcome to the Rock
swu Posted November 6, 2008 Posted November 6, 2008 (edited) скачал, поставил. достаточно ли установить автоматик? р.с поставил автоматик закрыл(не свернул), запустил ча, открыл диспетчер - там лаунчер на 2е ядро, поставил на оба, запустил просмотр трека, открыл диспетчер - там дцс на 2 ядра уже стоит. просмотрел трек, скрин диспетчера прилагаю, поднятия быстродействия незаметил :( Edited November 6, 2008 by swu WR=012=SWU
DruiD Posted November 6, 2008 Posted November 6, 2008 Какая ось? =012= A..a..are you gangsters??? No! We are RUSSIANS!
eXceed Posted November 6, 2008 Posted November 6, 2008 swu Работает только на Windows Vista или Windows Server 2003 к сожалению. Владельцы Windows XP отдыхают. Welcome to the Rock
swu Posted November 6, 2008 Posted November 6, 2008 жалко, но висты у меня нет, хотя подумываю создать раздел на харде с вистой и играми под неё. а пока и хп хватает :) програмулину стоит удалять иль вреда как и пользы небудет :)? WR=012=SWU
eXceed Posted November 6, 2008 Posted November 6, 2008 swu От нее толку мало. Можно руками в диспетчере задач выставить раз и потом автоматически будет запускаться на 2х ядрах. А висту попробуй. Если не хочешь гимора с вистой, попробуй Windows Server 2003 Standart + SP2. Работает без проблем. Виста сделана на модифицированном ядре Сервер 2003 и поэтому такой фокус работает, а по юзабилити ближе к родной ХП. Welcome to the Rock
swu Posted November 6, 2008 Posted November 6, 2008 "Можно руками в диспетчере задач выставить раз и потом автоматически будет запускаться на 2х ядрах." только что проверял, запустил ЧА, открыл диспетчер, дцс на 2м ядре, незапоминает :( в принципе проблем с производительностью нет, но хочется чтобы всё было по макс. :) WR=012=SWU
eXceed Posted November 6, 2008 Posted November 6, 2008 swu Возможно в ХП не запоминает, но в Windows Server 2003 нормально все(на ней работаю). Ну тогда CPU Control тебе в помощь, благо ЧА адекватно теперь реагирует на сворачивания. Welcome to the Rock
z1 Posted November 7, 2008 Posted November 7, 2008 У меня ХР х64, она на ядре 2003 сервера, прироста от двух ядер не заметил, хотя толком не тестил еще, как можно запустить ЧА на двух ядрах без применения програм и сворачивания, может разработчики файлик какой кинут, хлопотно ли переделать экзешник ЧА, чтобы сразу на двух ядрах шла? Maximus VII Ranger,4690K, SSD PLEXTOR M5 Pro 128Гб, RAM 16Гб, NVIDIA GTX-970, X-52PRO, TR-4, MG279Q
FreemanRU Posted November 7, 2008 Posted November 7, 2008 JGr124_MUTbKA Это называется ILP - Instruction Level Parallelism(основа суперскалярной архитектуры). Сэр, вы не правы. 1. Данная функциональность должна поддерживаться компилятором 2. ----//----//---//----//---//---//--- быть включена на уровне компилятора 3. Данная функциональность распаралеливает только независимые вычисления. Т.к. в движке всё завязано на кадр/сек, то как ты понимаешь, независимых вычислений нет. Если ты нарисуешь диаграмму распределения потоков по ядрам, думаю ты поймешь, почему у тебя прирост производительности. А в Висте, кстати, крайне изменилось ядро ОС в отношении тсэка памяти и распределения процессорного времени, поэтому и игра идет более градко. Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog
eXceed Posted November 7, 2008 Posted November 7, 2008 FreemanRU Кто сказал, что от компилятора зависит? Компилятор не решит задачи декодирования инструкций и отправки на выполнения. Читай выше, я писал, что ILP возможен на ИНСТРУКЦИЯХ работа которых не зависит друг от друга. Привязка к кадрам тут ничего не решает, т.к. ILP работает уже на готовом байт коде. Или ты думаешь, что каждая инструкция движка зависит от предыдущей? Как это работает читаем тут. И впредь попрошу сначала ознакомиться с сутью вопроса и прочесть документацию, а потом высказывать свое мнение. z1 Windows XP 64 построена на ядре Windows XP ;) Welcome to the Rock
FreemanRU Posted November 7, 2008 Posted November 7, 2008 FreemanRU Кто сказал, что от компилятора зависит? Компилятор не решит задачи декодирования инструкций и отправки на выполнения. Читай выше, Ну вот и чтай: A goal of compiler and processor designers is to identify and take advantage of as much ILP as possible Перевод: Цель компилятора и проектировщиков процессора состоит в том, чтобы идентифицировать и использовать в своих интересах так можно больше ILP Именно на стадии компиляции обпределяется, какие инструкции независимы и могут быть распаралелены, а какие нет. Как по твоему на уровне скомпилированного приложения, когда есть вызовы внешних библиотек и пр. Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog
eXceed Posted November 7, 2008 Posted November 7, 2008 FreemanRU Разработчики процессора учитывают эти особенности в декодере инструкций, а компиляторы со времен еще Pentium умеют оптимизировать код под Pentium и старше, да и компилер тут мало чего решает. Главное эффективность декодера инструкций. Welcome to the Rock
goro Posted November 7, 2008 Posted November 7, 2008 Наслушался вас. Рискнул поставить зверя XP 64. Пока под рукой только Локон для тесту, но он пошёл гораздо плавнее, Ни фризов ни подгрузок. что было ранее на ХР (х86) Сразу вопросов парочка возникла, ХП64 на диске "С" делает 2 папки, Program Files и Program Files(Х86) , для 64 и 32 битных приложений соответсвенно, вопрос , если я ставлю обычную,32 битную игру, например на логический диск D, там тоже нужно создавать папку с именем например Lockon(Х86) ? -------- И ещё что за фишка такая " Повышенная производительность" В свойствах винчестера ? В ХР32 вроде не было такой. Л.Н. Гумилев - «Нынешняя интеллигенция — это такая духовная секта. Что характерно: ничего не знают, ничего не умеют, но обо всем судят и совершенно не приемлют инакомыслия...»
depilot Posted November 7, 2008 Posted November 7, 2008 FreemanRU Разработчики процессора учитывают эти особенности в декодере инструкций, а компиляторы со времен еще Pentium умеют оптимизировать код под Pentium и старше, да и компилер тут мало чего решает. Главное эффективность декодера инструкций. Компилятор очень важен. Он так код сгенерит, что ты в дизасме можешь даже логику не понять своей же программы. Здесь все важно.
Sabre Posted November 7, 2008 Posted November 7, 2008 (edited) swu Возможно в ХП не запоминает, но в Windows Server 2003 нормально все(на ней работаю). Ну тогда CPU Control тебе в помощь, благо ЧА адекватно теперь реагирует на сворачивания. eXceed, так получается, что и в ХР на двухядерном проце (Е8600) все равно имеет смысл раскидывать ЧА на 2 ядра? Ведь Дмут сказал, что ЧА при запуске сама выставляет афинити на 1-ое ядро. Это происходит при запуске, что в ХР, что в Висте, no matter what правильно? Т.е. и в ХР можно и нужно нейтрализовать каким-то образом акулий SetProcessAffinityMask (на 1-ое ядро). Логика здесь есть? Спасибо за Ваш ответ. Вообще, вы очень так приятно и с пониманием все объясняете. А у меня вот просьба: мне б тоже хотелось хоть немного прироста и дополнительной плавности получить на ХР, а то вы вот заладили все "Виста" да "2003 Сервер". Я читал, что и на ХР люди тоже получают с CPU Contol какие-то положительные эмоции. Мне много не надо, но тем, кто с ХР, хоть что-нибудь достанется здесь в конце-концов? А то что-же, 30+ страниц прочитал и остался с кукишем получается? Больше 5ФПС в одни руки на ось не давать! :cry: Edited November 7, 2008 by Sabre
Dmut Posted November 7, 2008 Posted November 7, 2008 eXceed, так получается, что и в ХР на двухядерном проце (Е8600) все равно имеет смысл раскидывать ЧА на 2 ядра? Ведь Дмут сказал, что ЧА при запуске сама выставляет афинити на 1-ое ядро. Это происходит при запуске, что в ХР, что в Висте, no matter what правильно? Т.е. и в ХР можно и нужно нейтрализовать каким-то образом акулий SetProcessAffinityMask (на 1-ое ядро). Логика здесь есть? Спасибо за Ваш ответ.тут нет ничего мистического, акула на старте делает примерно тоже самое, что ты делаешь ручками в task manager, то есть выставляет себя на первое ядро. если ты после старта сима (не редактора!, то есть когда "нажмите на паузу" появилось) сделаешь ей affinity на два ядра, то это будет примерно тоже самое как будто акула себе ничего не выставляла. теперь о видимом выигрыше в висте и незаметности такового в XP. не рекомендую бежать ставить висту по этому поводу, поэтому что вполне вероятно, что это не виста быстрая на двух ядрах, а XP быстрая на одном. любопытно было бы замерить на одной конфигурации в висте и XP работу на одном ядре с минимумом установленного ПО. ожидаю, что в висте на одном ядре будет медленнее ровно на тот выигрыш, который получается при использовании двух ядер. "There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu [sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]
Recommended Posts