Измерение производительности видеосистемы: практика (страница 3)
реклама
FarCry3 Blood Dragon (Direct3D9/11)
Игра из разряда «поиграл и забыл», хотя некоторые моменты доставляют истинное удовольствие. Ее можно было смело «пропустить», но у нее есть одна редкая особенность – способность работать как через DirectX 9, так и через DirectX 11. Другим распространенным представителем является «S.T.A.L.K.E.R.», но о нем речь уже была. Сравним результаты.
В DirectX 9 произошло полное выталкивание нечетных кадров, в редакции DirectX 11 дефект не столь категоричен. Если бы перед этим я не видел данных по игре «Crysis 2», то мог бы сделать вполне логичный, хотя и неправильный, вывод о лучшей работоспособности DirectX 11.
реклама
Однако «Crysis 2» показывает, что не в версии DirectX счастье, любые его редакции могут вызывать неравномерный вывод кадров. Просто в DirectX 11 это происходит реже.
Еще несколько снимков из игры:
Картинка аналогична предыдущим играм DirectX 11 – не одинаковое время показа четных и нечетных кадров, каких-либо специфических особенностей не прослеживается.
Unigine Heaven Benchmark 4.0
Для проведения работ требуется производить измерения, но по «играм» это выполнить весьма затруднительно – объекты изменяются, «боты» норовят подстрелить, да и сам игрок может совершать движения в неподвижном состоянии. Нужен какой-то абстрактный тест производительности без произвольно изменяющихся параметров.
Первая мысль была о каком-нибудь 3DMark, но в нем затруднительно остановиться, да и процесс переключения между графическими устройствами DirectX 9/11 вызывает очевидные сложности. Поэтому выбор пал на Unigine Heaven Benchmark 4.0. Тест производительности устраивает почти всем, разве что в нем отсутствует поддержка DirectX 10, но … «не больно то и хотелось». В современных играх вряд ли кто будет использовать Dx10, если существует Dx11, официально поддерживаемый операционной системой Windows 7, и выше.
реклама
Программа Heaven 4.0 позволяет останавливать картинку и легко менять ее качество, что позволяет получить больше полезной информации. Как и ранее, я выбрал несколько точек и представлю разделение на три уровня качества – низкое, среднее и высокое. Рабочее разрешение то же, что и для игровых приложений – 2560х1440.
DirectX 9:
Практически на всех сценах и уровнях сложности наблюдается одинаковая картина – нечетные кадры практически отсутствуют. Съемка отражает статическое изображение, но это состояние может иначе проявляться в динамике. Для контроля можно попробовать снять «фильм», но следует сразу оговориться, что это действие будет сопровождаться рядом недостатков:
- Съемка статичных картинок позволяет открывать затвор на достаточно продолжительный интервал времени (1/5…1/15 секунды), что дает возможность захватить достаточно большое количество маркеров. В режиме «фильм» максимальное время открывания шторок затвора ограничено частотой кадров захвата. Это резко ограничит количество маркеров;
- Четкость картинки в режиме «фильм» значительно хуже, чем при покадровой съемке. К тому же, в «фильме» речь идет о довольно большом объеме данных, что дополнительно потребует перепаковки для уменьшения размера;
- Частота вывода монитора 60 Гц, частота захвата фотоаппарата в режиме «фильм» 30 к/с. Это усложняет «покадровый» анализ.
Иначе говоря, запись «фильма» сопряжена с массой недостатков, но она позволит оценить устойчивость вывода в процессе прохождения теста, хотя бы «на взгляд».
Вы можете посмотреть небольшие отрывки для среднего (5.14 Мбайт) и высокого (4.80 Мбайт) качества. Объем файлов около 5 Мб каждый, время 1 минута 50 сек. Для просмотра лучше использовать плеер с возможностью покадрового просмотра. Если таковой отсутствует, рекомендую воспользоваться Media Player Classic.
Полученное качество картинки не позволяет проводить ее последующий анализ, но некоторые закономерности прослеживаются достаточно четко – маркеры постоянно «окрашены» или в желто-красную или в сине-зеленую гамму. Вкрапления других цветов встречается «не часто». Что же, фильм подтверждает сделанные снимки – видеокарта часто выводит только половину кадров, что означает «обман» пользователя почти в два раза. Очень мило, спасибо.
А вообще, складывается довольно комичная ситуация. Переход на «сдвоенное» решение повышает производительность в 1.5-1.7 раза, но последующий фазовый сдвиг уменьшает это значение в два раза. В результате - в два раза больше затрат на аппаратуру, проблемы с стабильностью картинки и итоговая производительность ниже, чем одиночная видеокарта. К слову, у одиночного решения и задержка меньше.
Переходим к DirectX 11.
Ситуация очень напоминает «Crysis 3» - повышенная дефектность вывода кадров присутствует, хоть и не в столь категоричной форме.
Позвольте представить для контроля пару видеофрагментов, для среднего (5.19 Мбайт) и высокого (5.00 Мбайт) качества картинки. Характер поведения соответствует снятым картинкам – почти всегда длительность четного и нечетного кадра не одинакова и это отличие весьма существенно.
Думаю, пищи для размышлений достаточно, переходим к анализу.
Скорость кадров, качество картинки
Приведенные ранее картинки показывают, что довольно часто, а в некоторых играх и «всегда», вывод четных и нечетных кадров на CrossFireX выполняется не одинаковой продолжительности. Т.е. выполняется показ длительного и короткого фрагмента парами.
реклама
Для анализа качества того, что видим на экране, следует «привести» абстрактные данные с счетчика «FPS» в то, что действительно видно на экране. Зачем это надо? Давайте применим обычную элементарную логику. Что же происходит в том случае, когда видеокарта пропускает нечетные кадры? Я приводил массу примеров такой ситуации, например:
На снимке присутствуют синие и зеленые маркеры, чего нельзя сказать о желтых и красных. Если говорить формально, на экран то они выводятся, вот только видны всего лишь 1-3 строки, что весьма трудно заметить глазом, даже если специально присматриваться и точно знать место. Фактически, их нет. На данной картинке показан счетчик производительности, который показывает «124 к/с». Это значение получено подсчетом количества всех кадров, которые были выведены за последнюю секунду. Но, простите, половины из них мы никогда не увидим!
С точки зрения элементарной логики, полученное число требуется поделить на два. Противоречий и сомнений нет? У меня нет, извините. Если «показано» в два раза меньше кадров, чем «выведено», то истинным числом будет результат после деления на два – меня мало волнуют «кукурузные» FPS. Важно лишь то, что «видно», а «личные проблемы» видеокарты – это ее личное дело.
С одним определились и, надеюсь, окончательно – если видеокарта не показывает половину кадров, то «реальный» счетчик кадров СЛЕДУЕТ разделить на два. Возьмем прямо противоположный случай, длительность вывода кадров полностью одинакова, что происходит при нормальном формировании изображения. В этом случае «видимая» и «насчитанная» скорость вывода кадров совпадает. Эти рассуждения позволяют определить два крайних значения – по мере ухудшения стабильности вывода кадров «видимая» скорость кадров может меняться от 1/1 до 1/2 к данным счетчика производительности.
Остается лишь определить вид кривой пересчета между процентным соотношением длительности показа кадров к «эквивалентному» равномерному потоку кадров. Как модель пересчета можно использовать среднее значение скорости и меру нестабильности каждого кадра.
При сложении «среднего значения» с «нестабильностью каждого кадра» получится эквивалентное (простите, «реальное») значение скорости кадров. Именно то, что и происходит на экране. Проверим граничные состояния:
- Вывод кадров строго равномерный, «нестабильность кадра» = 0. Эквивалентная скорость кадров совпадает со средней величиной счетчика кадров, результат корректный;
- Длительность кадров полностью не равномерна, каждый второй отсутствует. Это означает, что один кадр имеет полную длину, другой равен нулю (или близко к нему). Счетчики производительности покажут длительность в два раза короче длинного кадра, при этом «нестабильность» составит то же значение (половину от длительности длинного кадра). При сложении получается удвоение «среднего значения», что так же совпадает с формулой пересчета.
Состояние полного выбивания каждого второго кадра «свойственно» DirectX 9, а в DirectX 11 это скорее редкость, чаще встречается небольшое расхождение. Например, возьмем длительности кадров как «3» к «4», что обеспечит среднее значение в 3.5 кадра и нестабильность 0.5 кадра. В результате эквивалентная длительность кадров составит 3.5 + 0.5 = 4. Разница между «эффективной» и «насчитанной по сигналу окончания рисования» будет 0.5 единицы, или 14%.
Нарушение равномерности небольшое, но это уже привело к снижению производительности графической системы на 14% по отношению к демонстрируемым значениям счетчиков. Восприятие картинки основано на «интегрирующем» (усредняющем) восприятии изображения на экране, поэтому длительность фрагментов и продолжительность показа следует оценивать по вероятностному принципу, что приводит к «линейной» зависимости длительности кадра к его условному весовому коэффициенту.
Иначе говоря, нестабильность должна линейно пересчитываться в эффективную скорость кадров, что описано выше. Какой либо иной вид пересчета, «квадратичный», «логарифмический» или «пороговый», окажется неверным. Впрочем, пусть этим занимается тот, кто будет изготавливать программу вычисления .
Давайте сделаем модель «неравномерного» варианта и посмотрим на результат. Положим, что видеокарта выводит кадры с соотношением длительности показа кадров как «3» к «4». Продолжительность периода кадрового синхроимпульса понимается как «3». В качестве варианта для сравнения возьмем случай вывода одинаковых кадров, но с длительностью несколько больше «трех», что обеспечит вывод кадров с частотой ниже скорости развертки монитора.
Если не придираться к мелочам, то можно было бы сказать, что в обоих случаях строится картинка одинаково качества. Попеременный вывод кадров длительности «3» и «4» эквивалентен выводу одинаковых кадров «3.5». На данном примере хорошо видно, что на семь выведенных кадров на экране монитора приходится один «пропуск». Для случая неравномерного вывода «пропуск» следует:
- Верхняя треть экрана - второй кадр (серый маркер);
- Средняя часть - четвертый кадр (красный маркер);
- Нижняя часть – шестой кадр (серый маркер).
В случае равномерного вывода кадров с длительностью, несколько большей длительности периода кадрового вывода на монитор (второй пример):
- Верхняя часть, №1 из 6 – кадр 2 (серый маркер);
- Верхняя часть, №2 из 6 – кадр 3 (зеленый маркер);
- Средняя часть, №3 из 6 – кадр 4 (красный маркер);
- Средняя часть, №4 из 6 – кадр 5 (синий маркер);
- Нижняя часть, №5 из 6 – кадр 6 (серый маркер);
- Нижняя часть, №6 из 6 – кадр 7 (зеленый маркер).
Неравномерный вывод похож на равномерный с такой же длительностью, но есть и различие – протяженность по вертикали «повтора» между кадрами, и этот «пустячок» является краеугольным камнем. Зона наложения экрана при пропуске определяет величину и характер повреждения картинки на экране. Замена неравномерных кадров «3» и «4» на равномерные «3.5» означает 'банальное' усреднение (3+4)/2=3.5 , а его 'полезность' оценена этой статьей.
Поэтому к двум вариантам представления добавлен третий - при формировании картинки равномерными кадрами, но более осмысленной длины. Как результат, итоговое значение «средней скорости кадров» снизилось с «6/7» до «3/4». Все верно, неравномерные кадры снижают реальную производительность.
Возьмем более «агрессивный» случай, «1» к «3» и соответствующие эквивалентные варианты с равномерным выводом кадров:
Для равномерного вывода кадров все просто и логично – каждая часть экрана выводится с пропуском одного кадра из четырех, что означает результирующую скорость вывода кадров как 3/4 от частоты кадровой развертки монитора. При неравномерном выводе тоже выводится «3/4», но лишь как «средняя» величина. В данном примере верхняя часть экрана будет обновляться в два раза реже, чем нижняя. Это означает очевидно ‘неодинаковую’ эквивалентную скорость вывода в различные части экрана, причем разница весьма чувствительная – в два раза и это уже серьезно.
Если не оценили нюанс, возьмем обычный случай – игра обеспечивает 45 FPS по счетчику. А что, очень даже неплохая цифра, вполне «играбельно». Положим, игра видеокарта создает кадры с соотношением «1» к «3», что является очень даже типичным случаем, смотрите данные по играм, представленные выше. В результате вы будете наблюдать на одной половине экрана 30 FPS, а на другой 60. Если к «60» претензий нет, то «30» сразу вызовет ступор. Счетчики производительности «обещали» 45, а в действительности есть только 30….. Ой. Откорректированная модель (третий вариант) представляет результат «2/3», что более соответствует действительности.
Если длительности/частота окажутся не кратны частоте развертки, то принцип разделения на 1/2 и 1/1 не изменится, эти «зоны» лишь начнут перемещаться по экрану и чем дальше окажется уход частоты от кратности к развертке, тем больше «размазывается» (усредняется) этот дефект.
Из общих рассуждений можно сделать два вывода:
- «Неравномерный» вывод кадров можно «привести» к эквивалентному «равномерному» и формула для пересчета достаточно проста;
- Результат приведения будет оценивать лишь «наилучший» вариант. При кратности вывода кадров к частоте кадровой развертки монитора может последовать дополнительное, и значительное, снижение качества картинки.
Иначе говоря, «неравномерный» вывод кадров надо пересчитывать в эквивалентный «равномерный», иначе представляемые данные окажутся лишенными всякого смысла. Формула пересчета должна учитывать неравномерность длительности самих кадров и, по мере возможностей, их меру синхронности к частоте развертки монитора.
Небольшая поправка – под длительностью вывода кадров следует понимать то время, которое они отображаются на экране монитора, а вовсе не то, что показывают логи FRAPS. Милый пустячок .
реклама
Страницы материала
Лента материалов раздела
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила