Эмуляция > Эмуляторы компьютеров
PCem - эмулятор старого PC-железа
<< < (14/45) > >>
blackoff:
пара камрипов =)  ,HL и T2 p233mmx\128mb  ,s3\2mb +v2
Softer:

--- Цитата: xttx от 20 Сентябрь 2016, 21:54:27 --- А вот профильная оптимизацию, если кому то будет не лень попробовать - конкретно для pcem даёт 15-20% скорости. У меня, к сожалению руки пока не дошли разобраться, но в теории порядок действий такой:
1). Нужно открыть файл src/Makefile.mingw и добавить в строчку, начинающуюся на "CFLAGS = " ключи "-fprofile-arcs -ftest-coverage -fprofile-generate"
2). В том же файле, добавить в строчку, начинающуюся на "LIBS = " библиотеку "-lgcov"
3). Скомпилировать. Это сгенерирует екзешник, как обычно. Его нужно запустить, и активно поюзать на нём что-то трёхмерное. (Вот тут я не очень знаю как оно работает, но по моим представлениям, достаточно по 5 секунд позапускать несколько игрушек максимально по разному использующих проц и 3д ускоритель, и до кучи ещё запустить что-то использующее кэш и самомодифицирующий код (Star Wars Racer, Duke Nukem), поправьте меня если это не так работает). Важно: полученый ехе должен запускатся только из директории /src, если он будет перенесён, то профайлы не сгенеряться. По этому просто копируем в директорию /src папку roms и pcem.cfg из рабочей версии pcem, и убеждаемся что в pcem.cfg нет относительных путей к дискам. Эмулятор на данном этапе будет довольно сильно тормозить, это нормально.
4). После выхода из эмулятора сгенерятся файлы *.gcda
5). Убрать из src/Makefile.mingw "-fprofile-arcs -ftest-coverage -fprofile-generate" и добавить вместо них "-fprofile-use -fprofile-correction -flto"
6). Стереть из /src все файлы *.o, *.res и екзешник и перекомпилировать.
7). Всё это должно дать значительный прирост производительности.
Как-то так... Может кто попробует...
--- Конец цитаты ---

--- Цитата: xttx от 21 Сентябрь 2016, 11:25:48 ---В общем сделал я так, как писал постом выше. То что собралось, дало мне +5 фпс в турке 2, но эмуляция проца теперь падает ниже ста процентов иногда. Не знаю где я намудрил...

--- Конец цитаты ---
Попробовал и я сделать PGO по твоей инструкции. Делал это с изрядной долей скепсиса, так как когда-то этот вопрос поднимался по отношению к PCSX2 и на практике приносил прирост там, где было условно 200fps, делая из них 210fps. Там же где были проблемы с производительностью всё это профилирование было как мёртвому припарка.
В общем с PCem тоже не получил никаких положительных результатов. Как было в "Turok 2" 6-14fps при "lot" кэше  и 100% - так и осталось. Как было в нём же ~16-30fps при "infinite" кэше и болтающемся проценте скорости эмуляции - так и осталось. Ты написал, что у тебя эмуляция проца после PGO стала падать ниже 100% - имеется в виду процент из заголовка основного окна или "CPU time" из окна статуса? В любом случае у меня оба счётчика ведут себя одинаково и с PGO и без него. Даже не знаю как у тебя получилось +5fps получить, я вроде все условия соблюдал. Единственная разница может быть в наборе игр используемом для создания PGO и разницы во времени их прогонки после запуска. У меня запускались Half-Life, Quake 2, Prince of Persia 3D, Turok 2, Star Wars Racer, Sub Culture и гонял я их существенно дольше 5 секунд.


--- Цитата: blackoff от 21 Сентябрь 2016, 16:36:41 ---пара камрипов   ,HL и T2 p233mmx\128mb  ,s3\2mb +v2
--- Конец цитаты ---
Спасибо. Хоть и сложно понять fps по такому камрипу, но примерно производительность понять можно. В PCem Half-Life при 800x600 идёт медленнее и это соответствует тому факту, что в PCem эмулируется Voodoo 1, а не Voodoo 2. В Turok 2 с Voodoo 2 производительность на глаз такая-же, как в PCem с Voodoo 1 при "infinite" кэше, c поправкой на вызываемые этим кэшем просадки скорости эмуляции и следовательно слоумо.
blackoff:

--- Цитата: Softer от 22 Сентябрь 2016, 16:59:55 ---Спасибо. Хоть и сложно понять fps по такому камрипу

--- Конец цитаты ---
другого варианта как\чем записать не нашел. халфа ща шла веселее чем в "смутные времена" ,есть варианты что прицепить на счетчик кадров?
Ogr:

--- Цитата: blackoff от 22 Сентябрь 2016, 17:10:10 ---есть варианты что прицепить на счетчик кадров?
--- Конец цитаты ---
старую версию фрапс под 98?
Softer:

--- Цитата: blackoff от 22 Сентябрь 2016, 17:10:10 ---другого варианта как\чем записать не нашел. халфа ща шла веселее чем в "смутные времена" ,есть варианты что прицепить на счетчик кадров?

--- Конец цитаты ---
У халфы есть встроенный счётчик в пропатченной версии, а у тебя судя по видео - пропатченная. Впиши в её ярлык запускающий hl.exe после адреса к нему -dev. Это даст доступ к консоли. Консоль вызывается тильдой. В игре вбей в неё "cl_showfps 1" без кавычек. Это даст тебе счётчик в углу.
Можно ещё Quake 2 для тестов использовать, там есть процедура бенчмарка, запускаемая через консоль с выводом в конце среднего FPS.
"timedemo 1"
"demomap demo1.dm2" и/или "demomap demo1.dm2" если что.

--- Цитата: Ogr от 22 Сентябрь 2016, 17:19:05 ---старую версию фрапс под 98?

--- Конец цитаты ---
Сомневаюсь что Fraps вообще когда-нибудь поддерживал 3Dfx Glide. А вот OGL/D3D это да, всегда пожалуйста.


--- Цитата: xttx от 21 Сентябрь 2016, 11:25:48 ---Also when trying to do some profile generation I set the Voodoo threads to 1 and crank the CPU to PMMX 300 with Infinite cache and then run Battlezone 2 demo (which has no menu system, DX6 zealousy check or movies to fail on) and watch that crawl through the mission intro for awhile, since BZ2 is a particularly Intel-favoring MMX-abusing game.

--- Конец цитаты ---
На повторную компиляцию с использованием этого совета меня уже не хватило. У тебя +5fps были с его использованием получены или нет?
Ogr:

--- Цитата: Softer от 22 Сентябрь 2016, 17:25:23 ---Можно ещё Quake 2 для тестов использовать, там есть процедура бенчмарка, запускаемая через консоль с выводом в конце среднего FPS.
--- Конец цитаты ---
как и UT99.
blackoff:
чисто фпс , в приемной ~25 .
xttx:

--- Цитата: Softer от 22 Сентябрь 2016, 17:25:23 ---На повторную компиляцию с использованием этого совета меня уже не хватило. У тебя +5fps были с его использованием получены или нет?
--- Конец цитаты ---
Я использовал Battle zone 2, Turok 2 и Star Wars Racer. Гонял где-то по минуте. То что собралось - во вложении, можешь попробовать, если есть желание.
У меня оно ведёт себя так, как будто в кэше появилось промежуточное значение между lot и infinite - т.е. фпс немножко подрос, но эмуляция прыгает 90% - 100% (я имею в виду циферку в тайтл-баре, не "CPU time").

PS. Есть у меня подозрение, что что-то у меня не так с конфигурацией железа на хосте, т.к. даже с этой оптимизированной сборкой мне далеко до твоих 6-14 и 16-30фпс в турке (с версией что во вложении, имею 5-7 и 15-24 соответственно). Возможно слишком агрессивная регулировка частоты у проца (вроде при нагрузке он должен держать максимальную частоту, даже разгоняться немного, но у меня, даже при активном pcem сильно прыгает).
Даже и не знаю почему так...
Softer:

--- Цитата: xttx от 23 Сентябрь 2016, 11:18:58 ---Есть у меня подозрение, что что-то у меня не так с конфигурацией железа на хосте, т.к. даже с этой оптимизированной сборкой мне далеко до твоих 6-14 и 16-30фпс в турке (с версией что во вложении, имею 5-7 и 15-24 соответственно). Возможно слишком агрессивная регулировка частоты у проца (вроде при нагрузке он должен держать максимальную частоту, даже разгоняться немного, но у меня, даже при активном pcem сильно прыгает).
--- Конец цитаты ---
Сброс частоты процессора абсолютно точно не является причиной, так как это следствие. Следствие чего - ниже.
Набросал на скриншот значения выводимые PCem в своё окно статистики:
Скриншот сделан на версии скомпилированной без PGO. Кэш выставлен Infinite. Из чего следует, что с неограниченным кэшем - эмуляция упёрлась в потолок одного ядра CPU при эмуляции виртуального CPU. Чего не достаточно для полной скорости эмуляции, которая просела до 90%. В то время как Voodoo двумя своими потоками суммарно даже эквивалент производительности одного ядра не выбирает. Никакого сброса частот при неограниченном кэше происходить у тебя не должно и я думаю не происходит.
Если же кэш ограничить любым значением, то эмуляция CPU уже не будет потреблять столько ресурсов реального ядра, сколько сможет "унести", а лишь до определённого предела, как-то обусловленного этим самым кэшем. При этом беря за 100% скорости эмуляции этот самый предел. Это и является причиной сбрасывания системой частот твоего CPU, так как он простаивает. Причём вовсе не обязательно, что ограниченного кэша хватит на полноценную эмуляцию с сохранением оригинальных характеристик производительности всех поддерживаемых PCem CPU. Как показывает практика, самые быстрые CPU с ограниченным кэшем эмулируются с ограниченным относительно их оригинала КПД и это в PCem считается 100% скоростью их эмуляции. Совершенно очевидно, что на любом значении ограничивающем кэш, тот же P233MMX со своим оригинальным КПД не вытягивается. А с неограниченным у меня например упирается в потолок производительности ядра моего не разогнанного i5-4690K(3.5Ghz).

Если сомневаешься, что сброс частоты CPU обусловлен слабой нагрузкой на него из за ограниченного кэша, и думаешь что причинно-следственный вектор всё же направлен с другой стороны, то можно проверить на практике. Сброс частоты отключается в винде следующим путём - электропитание / настройка плана электропитания / изменить дополнительные параметры питания / управление питанием процессора / минимальное состояние процессора = 100%.

P.S. Так что причиной твоих 24fps при неограниченном кэше в Turok 2, против моих 30fps, является разница в производительность на ядро наших CPU. Ну и PGO конечно как был мёртвому припакрой, так и остался. Сейчас скачаю твою PGO сборку и сделаю скриншот с неё, чтоб ещё раз убедиться самому и тебя попробовать убедить  :).
Softer:
Как и обещал, вот скриншот из твоей сборки с неограниченным кэшем:
И несмотря на то, что в моём случае fps не изменился, изменилась зато скорость эмуляции, она выросла. Проверил это на своей сборке с PGO и в ней то же самое изменение в лучшую сторону. Из за того, что искал озвученные тобой +5fps, ранее даже не обратил внимание на скорость эмуляции  :).
blackoff:
Ребята ,а есть возможность изменить машину с чипсетом  430vх на тх
Softer:

--- Цитата: blackoff от 23 Сентябрь 2016, 14:32:32 ---Ребята ,а есть возможность изменить машину с чипсетом  430vх на тх

--- Конец цитаты ---
Есть в форке PCem-X но нет в основной версии. А зачем, если не секрет?

Добавлено позже:
xttx

--- Цитата: Softer от 23 Сентябрь 2016, 13:57:18 ---P.S. Так что причиной твоих 24fps при неограниченном кэше в Turok 2, против моих 30fps, является разница в производительность на ядро наших CPU.
--- Конец цитаты ---
Я тут не правильно выразился. Разница на скриншотах 24vs30 обусловлена просто другим ракурсом камеры.
blackoff:

--- Цитата: Softer от 23 Сентябрь 2016, 14:37:38 ---Есть в форке PCem-X но нет в основной версии. А зачем, если не секрет?

--- Конец цитаты ---
ну по идее более продвинутый чипсет ,я вот на нем запускал ,то что снимал .до этого ibm на vx угрохал ,но тот вроде попроще был, с памятью ограничен.
Ogr:

--- Цитата: Softer от 23 Сентябрь 2016, 13:57:18 ---Набросал на скриншот значения выводимые PCem в своё окно статистики:
--- Конец цитаты ---
пункт с цпу не сходится:



Softer:

--- Цитата: Ogr от 23 Сентябрь 2016, 15:48:00 ---пункт с цпу не сходится:

--- Конец цитаты ---
Пункт CPU - это однопоточная нагрузка. То есть для твоего 4-ядерного CPU - это 38% из 400%. То есть 9,5% нагрузки на CPU. Что касается всех этих общих счётчиков, то они все живут своей жизнью с разной скоростью обновления показателей и опросом датчиков. Чтоб картина была более ясной, возьми Process Explorer , открой в нём процесс PCem и на закладке Threads проверь соответствует ли нагрузка потоков на CPU от эмуля, показаниям CPU time в статистике PCem или нет.
Ogr:

--- Цитата: Softer от 23 Сентябрь 2016, 16:13:10 ---Чтоб картина была более ясной, возьми Process Explorer .
--- Конец цитаты ---
да, в нём 10%, против 1% в системном диспетчере. не думал что он врёт.
Softer:

--- Цитата: Ogr от 23 Сентябрь 2016, 16:22:24 ---да, в нём 10%, против 1% в системном диспетчере. не думал что он врёт.

--- Конец цитаты ---
Ну я бы не назвал это враньём. Это просто разница в алгоритмах мониторинга. С этим связано интересное наблюдение. Счётчик диспетчера задач каким-то образом, при ограниченном кэше в PCem, вычленяет полезную нагрузку и отображает только её. То есть есть в эмуле тупо висит какой-нибудь рабочий стол, то и диспетчер задач хостовой машины будет писать, что нагрузки практически нет. Но стоит запустить приложение нагружающее виртуальную машину на 100%, как и диспетчер задач хоста так же отобразит цифру соответствующую CPU time, чего в простое виртуалки не делал. Интересно, что для неограниченного кэша такое поведение отсутствует. Если при нём CPU time в простое стремиться к 100%, то и в диспетчере хостовой машины с 4-ядерным CPU будет 25% на процессе PCem.
Ogr:

--- Цитата: Softer от 23 Сентябрь 2016, 16:50:46 ---Ну я бы не назвал это враньём. Это просто разница в алгоритмах мониторинга.
--- Конец цитаты ---
алгоритм который не учитывает до 40% загрузки ядра - врёт. а с неограниченным кешом эмуляция ЦП просто нагружает на порядок выше.
Softer:

--- Цитата: Ogr от 23 Сентябрь 2016, 17:20:03 ---а с неограниченным кешом эмуляция ЦП просто нагружает на порядок выше.
--- Конец цитаты ---
Ну не знаю... я не вижу при неограниченном кэше той 40% разницы, как при ограниченном. Та же разница, что я вижу, может легко сойти за погрешность и рассинхронизацию вывода показаний.
Ogr:
Softer, так у тебя и загрузка ядра в данный момент не 30-40% и ниже, а 99%.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии