Измерение FPS | Кадры в секунду: почему мир ошибался?
За годы мы накопили горы информации, используя инструменты тестирования вроде Fraps и встроенные в игры бенчмарки, призванные помочь в оценке производительности той или иной видеокарты. Исторически, данная информация позволяла получить представление о том, насколько быстрее та или иная видеокарта относительно других моделей, и какой прибавки в скорости следует ожидать в случае использования второй видеокарты в конфигурациях CrossFire/SLI.
Как правило, люди не всегда могут давать адекватные ответы, если их убеждения ставят под сомнение. Но как бы вы себя почувствовали, если бы мы сообщили, что в методике оценки производительности через количество кадров в секунду кроется фундаментальная ошибка? Не правда ли, с этим трудно согласиться? Признаемся, что именно такую реакцию вначале испытали и мы, услышав, что Скотт Воссон (Scott Wasson) из
Мы поднимали данный вопрос в беседе со Скоттом пару лет назад, но до сих пор у нас осталось больше вопросов, чем ответов, несмотря на впечатляющий объём работы, выполненной за это время. Есть несколько причин для того, чтобы привлечь более пристальное внимание к этой проблеме именно сейчас.
Во-первых, как мы уже упоминали, даже открытые для всего нового компьютерные энтузиасты с трудом готовы принять фундаментальные изменения относительно того, что ранее считалось само собой разумеющимся: в конце концов, это означало бы, что и мы, и вы, и большая часть производителей часто ошибались в своих выводах. Никто не хочет верить, что информация, на которую мы до этого полностью полагались, не обязательно точна. Таким образом, немало людей уклоняется от осознания данного факта, пока это возможно.
Вторая причина (возможно, более корректная с технической точки зрения) заключается в том, что у нас нет полноценной замены средней производительности кадров в секунду. Время обновления кадров и задержки не могут быть идеальным ответом на данную проблему: существуют другие переменные в играх, включая такие, где утилита Fraps способна вытянуть данные из графического потока. В конце концов, не существует системы оценки производительности, которую можно использовать, чтобы окончательно сравнивать плавность игровой производительности исключительно на основе объективных наблюдений.
Вот что мы ищем, это и есть наш Святой Грааль. Нам нужно что-то, способное заменить количество кадров в секунду. Плохая новость заключается в том, что мы всё ещё не имеем такого инструмента.
Но количество кадров в секунду – отнюдь не бесполезный материал. Он надёжно говорит, какой именно модели недостаёт производительности. Если, например, средняя производительность видеокарты менее 15 кадров/с, то мы точно знаем, что данная комбинация настроек не обеспечивает достаточной для достижения чувства реализма плавности в игре. Здесь нет никакого подвоха. К сожалению, усреднение количества кадров в секунду не позволяет выявить неравномерность в рендеринге отдельных кадров, и это особенно важно, когда тестируемые карты обеспечивают высокую среднюю частоту кадров и, вроде бы, сравнимую производительность.
Тем не менее, это не значит, что нас ждёт хаос и отсутствие чёткого ориентира в измерении графической производительности. Наступает захватывающее время для энтузиастов компьютерного “железа”, когда методика оценки графической производительности должна стать более сложной и многогранной. Немало умных людей работают над решением проблемы, и нет сомнений, что рано или поздно появится достойная альтернатива FPS. Со своей стороны, мы провели собственные исследования плавности графики, и вы могли видеть результаты в тестовых диаграммах, включающих среднюю частоту кадров, минимальную частоту кадров и колебания времени между кадрами. Ни один из этих параметров не решает задачу целиком, но вместе они позволяют нарисовать более полную картину, когда речь заходит о выборе видеокарты для игр.
В данном обзоре мы остановимся на другом инструменте, который поможет получить углублённое представление о производительности графических карт, в особенности конфигураций с несколькими GPU – Frame Capture Analysis Tool (FCAT) от компании Nvidia.
Измерение FPS | Nvidia FCAT
Даже сейчас в индустрии видеокарт принято измерять прошедшие рендеринг (“отработанные” движком видеокарты) кадры с помощью программных инструментов вроде Fraps и встроенных в игры счётчиков кадров, ежесекундно фиксирующих кадры в памяти видеокарты. На первый взгляд, это представляется отличным способом получения точных результатов.
Проблема в том, что может возникнуть заметный разрыв между тем, что мы имеем на выходе игрового движка, и тем, что наблюдаем на экране. Если перейти от проблем, возникающих при использовании однопроцессорных графических решений к рассмотрению более сложных конфигураций, когда несколько GPU работают одновременно, на поверхность выходят две дополнительных переменных, которые влияют на результат: пропущенные кадры и то, что Nvidia называет “короткими” (runt) кадрами.
Если говорить кратко, то даже после загрузки кадра в память остаётся ещё немало работы, выполняемой видеокартой, и она занимает какое-то время. Как результат, некоторые кадры сбрасываются до того, как они должны появиться на экране. Другие кадры отображаются, но лишь на очень небольшой части экрана. Nvidia называет “коротким” любой кадр, который занимает менее 21 линий сканирования на мониторе.
Пропущенные и “короткие” кадры не оказывают никакого положительного воздействия на то, что вы видите на экране во время игры. Тем не менее, они всё равно учитываются при тестировании. Это представляет проблему, особенно если комбинация “железа” обеспечивает максимально высокое значение FPS без учёта равномерности между кадрами. Чем больше потерянных и “коротких” кадров имеет место, тем менее точными являются данные, полученные с помощью утилит, подобных Fraps. Хорошая новость состоит в том, что описанные эффекты становятся реальной проблемой лишь в случае многопроцессорных графических конфигураций. При тестировании одиночных видеокарт, Fraps и встроенные в игры бенчмарки достаточно точны.
Итак, каким образом мы определяем частоту смены кадров на конфигурациях AMD CrossFire и Nvidia SLI без учёта “коротких” и потерянных кадров?
Мы записываем изображение, выводимое на монитор, и анализируем его, кадр за кадром. Это не лёгкая задача, которая отнимает реально много времени. Чтобы упростить задачу, Nvidia разработала собственный тестовый пакет, который делает эту работу за нас.
Часть того оборудования, что мы используем, доступно в свободной продаже. Например, тестируемая система подключена к DVI-разветвителю Gefen dual-link DVI, который, в свою очередь, подключён к карте видеозахвата Datapath Limited VisionDVI-DL, установленной на другом компьютере. Для точного анализа записанное видео должно быть безупречным, без пропущенных кадров. Поэтому мы использовали массив RAID 0 из трёх SSD-накопителей, который может “тянуть” поток несжатого видео – 650 Мбайт/с на максимальном разрешении, поддерживаемом видеокартой.
Тестируемая система последовательно накладывает на каждый кадр цветную полосу, окрашенную в один из 16 цветов. Для этого используется софт Nvidia, который служит для автоматизации анализа. Представители Nvidia утверждают, что разработчики из компании Beepa вполне могут оснастить функцией наложения свою утилиту Fraps, исключив тем самым из уравнения Nvidia для получения более непредвзятой оценки.
Геймплей, вместе с цветными полосами, захватывается с помощью утилиты VirtualDub и сохраняется на SSD-массиве. Отсюда другое приложение Nvidia считывает видео и создаёт насыщенную информацией таблицу Excel, последовательно анализируя кадры на видеозаписи и смену цветных полос. Зная, полоса какого цвета должна появиться на следующем кадре, программа легко находит пропущенный кадр (цвет отсутствует) или кадр, занимающий менее 21 линии сканирования на экране (“короткий” кадр).
Впрочем, даже файл Excel получается весьма громоздким по объёму информации. Поэтому Nvidia разработала серию Perl-скриптов, помогающих разобрать полученную информацию, провести анализ частоты кадров/времени отображения и построить графики, отражающие полученные результаты.
Nvidia называет свой набор утилит FCAT – Frame Capture Analysis Tool. FCAT позволяет получить данные по производительности с учётом пропущенных и “коротких” кадров, что должно в большей мере коррелировать с тем, что наблюдает пользователь на мониторе во время игры.
Измерение FPS | Конфигурация и тесты
Мы используем пакет утилит Nvidia FCA для сравнения производительности двух Radeon HD 7870 в связке CrossFire с парой GeForce GTX 660 Ti, работающих в конфигурации SLI, используя широкий набор современный игр. Данные карты близки по стоимости и весьма популярны, что делает их идеальным выбором для выявления отличий в используемых AMD и Nvidia технологиях рендеринга в мультикартовых конфигурациях.
Конфигурация тестового стенда | |
Процессор | Intel Core i5-3550 (Ivy Bridge) 3,3 ГГц базовая частота, 3,7 ГГц в режиме Turbo Boost |
Материнская плата | Gigabyte Z77X-UP7, LGA 1155, чипсет Intel Z77 Express |
Сеть | Встроенный сетевой контроллер |
Память | Corsair Vengeance LP PC3-16000, 4x 4 Гбайт, 1600 МТ/с, CL 8-8-8-24-2T |
Видеокарта | 2x GeForce GTX 660 Ti 2 Гбайт GDDR5 в конфигурации SLI 2x Radeon HD 7870 2 Гбайт GDDR5 в конфигурации CrossFire |
Жёсткий диск | Western Digital Caviar Black 1 Тбайт, 7,200 об/мин, кэш 32 Мбайт, SATA 3 Гбит/с |
Блок питания | ePower EP-1200E10-T2 1,200 Вт, ATX12V, EPS12V |
ПО и драйверы | |
Операционная система | Microsoft Windows 8 |
Версия DirectX | DirectX 11.1 |
Видеодрайверы | AMD Catalyst 13.3 Beta 3 Nvidia GeForce 314.22 Beta |
Тестовое ПО | |
Borderlands 2 | v.1.0.28.697606, собственный бенчмарк, 60-секундная запись Fraps |
Crysis 3 | v.1.0.0.1, собственный бенчмарк, 60-секундная запись Fraps |
F1 2012 | v.1.3.3.0, встроенный бенчмарк, 60-секундная запись Fraps |
Far Cry 3 | v.1.0.0.1, собственный бенчмарк, 50-секундная запись Fraps |
Tomb Raider | v.1.0.722.3, собственный бенчмарк, 45-секундная запись Fraps |
Измерение FPS | Результаты тестов
Batman Arkham City
Мы проводили тестирование в девяти играх и выложим результаты в алфавитном порядке. Batman Arkham Asylum – первая в списке.
Прежде всего, взглянем на минимальную и среднюю частоту кадров. Когда вы видите на наших диаграммах аппаратную производительность (“Hardware FPS”), речь идёт о количестве кадров в секунду, которые рендерит видеокарта. Практическая производительность (“Practical FPS”) – более точное представление того, что вы реально увидите на мониторе за вычетом пропущенных и “коротких” кадров.
Помимо четырёх перечисленных точек измерения (Hardware/Practical FPS для CrossFire/SLI), у нас есть ещё одна – данные Fraps на CrossFire-системе, которые мы использовали с целью сравнения результатов.
Разница между аппаратной и практической производительностью на конфигурации SLI из пары GeForce GTX 660 Ti – всего около кадра в секунду. Для сравнения, мы видим отрыв более чем на 5 кадров/с на CrossFire-системе из двух Radeon HD 7870.
Fraps мог бы заставить нас поверить, что значения аппаратной производительности верны, но практическая производительность ниже.
График производительности с течением времени показывает, что аппаратная производительность на конфигурации Radeon (тонкая красная линия) и результат Fraps (тонкая красная линия с точками) иногда поднимаются выше практической производительности (жирная красная линия). Когда дело доходит до карт GeForce, обе линии на графике проходят близко друг от друга.
Для сравнения, мы также приводим диаграмму колебаний времени между кадрами, построенную на основе данных, зафиксированных FCAT. Результаты конфигураций GeForce и Radeon находятся ниже порога 10 мс при рассмотрении 95-го процентиля.
Borderlands 2
В Borderlands 2 разница между отработанным количеством кадров и практическими результатами для Nvidia составляет 0,1 кадр/с, тогда как результаты Radeon разделяют 2,4 кадра/с. Fraps выдаёт даже более оптимистичный результат, чем любой из замеров на основе FCAT.
Если взглянуть на производительность с течением времени, становится очевидным, что эти конфигурации работают сходным образом. Тем не менее, мы видим, что некоторые пики на графике аппаратной производительности AMD не подкреплены практическим результатом, когда учитываются попущенные и “короткие” кадры.
Колебания между кадрами при столь высоких значениях производительности минимальны.
Crysis 3
Связка карт GeForce показала отсутствие различий между аппаратной и практической производительностью, результаты Radeon различаются на 1,3 кадра/с. В данном случае, Fraps реально приближается к практическому результату. Просто имейте в виду, что Fraps следует запускать отдельно, а не одновременно с инструментами FCAT.
Хотя в данном случае разница между отработанными видеокартой кадрами и практическим результатом для конфигурации AMD невелика, можно явно выявить пропущенные и “короткие” кадры, если взглянуть на график производительности с течением времени.
Колебания между кадрами относительно высоки для обеих конфигураций. Конфигурация GeForce проигрывает данное сражение, но, вероятно, разницу заметит лишь малая часть геймеров: значительную роль здесь играют субъективные ощущения.
F1 2012
Посмотрим, как поведут себя тестируемые конфигурации в F1 2012 – игре, которая, как считается, зависит от производительности платформы.
Интересно, что несмотря на зависимость данной игры от производительности процессора и памяти, мы видим здесь наибольшее расхождение между количеством отработанных кадров (включая пропущенные и “короткие”) и практическим выводом, с которым мы реально имеем дело во время игры: дельта составила 13,1 кадров/с. Также интересно, что результат Fraps ближе к практической производительности AMD (в теории можно было предполагать, что все будет ровно наоборот).
Между тем, карты GeForce не дают столь большого разрыва между результатами, и мы в первый раз видим весомое преимущество Nvidia, стремившейся обеспечить равномерность кадров, а не выжать их максимально возможное количество, которое способен выдать движок видеокарты.
На графике производительности с течением времени мы видим драматическую визуализацию “коротких” и пропущенных кадров, создающих пики на протяжении всего теста.
Несмотря на эти сложности, колебания времени между кадрами представляются весьма скромными, даже при рассмотрении 95-го процентиля.
Far Cry 3
Данная игра отдаёт предпочтение картам Nvidia, обеспечивающим равное количество отработанных графическим движком и “практических” кадров. На конфигурации Radeon разница между двумя замерами составляет 3,4 кадра/с. Fraps выдает результат, который ближе к “аппаратной” производительности Radeon.
Как и ранее, мы видим пики на графике аппаратной производительности AMD, включающем пропущенные и “короткие” кадры.
Склонность карт Radeon к пикам на графике выявляется и при анализе колебаний времени между кадрами. Если посмотреть на результат для 95-го процентиля, можно убедиться, что кадры распределены неравномерно. Наличие небольших “лагов” обнаруживается и в ходе самой игры.
Hitman Absolution
Наряду с Far Cry 3, данная игра входит в бонусный комплект поставки Never Settle (“Никогда не останавливайся”) от AMD, а также некоторых моделей 7000-й серии. Мы были удивлены, обнаружив, что игра занимает 25 Гбайт дискового пространства.
Итак, вот что стоит принять во внимание: пара Radeon HD 7870 в связке CrossFire обеспечивает лучшую аппаратную производительность, но скорректированный “практический” результат переносит их вниз тестового рейтинга. По средним значениям разница составляет всего 5 кадров/с. Тем не менее, минимальная производительность падает до 9 кадров/с.
Мы уже знакомы с графиком производительности с течением времени, где иногда наблюдаются пики аппаратной производительности.
Это ещё одна игра, в которой карты Radeon пострадали от относительно высоких колебаний времени между кадрами. Мы не заметили, чтобы это негативно повлияло на игровые ощущения от Hitman (и неоднократно отмечали, что нерегулярность смены кадров, судя по всему, затрагивает одни игры в большей степени, чем другие). Тем не менее, данный результат помогает объяснить некоторые ранее выявленные закономерности.
Metro 2033
Перед нами весьма тяжёлая, требовательная к графическим ресурсам игра, а это значит, что в ней мы можем увидеть более согласованные результаты. Аппаратная и практическая производительность весьма близки и на картах Radeon, и на GeForce.
Если взглянуть на график производительности с течением времени, то можно обнаружить несколько пиков, но мы не находим ничего достаточно серьёзного, чтобы коренным образом повлияло на средние показатели.
Низкие колебания между кадрами, зафиксированные с помощью FCAT, указывают на то, что Metro 2033 идёт весьма плавно.
Elder Scrolls V: Skyrim
Карты Nvidia обеспечивают согласованные результаты аппаратной и практической производительности, в случае Radeon наблюдается разница в 3,1 кадров/с между обсчитанными кадрами и тем, что реально будет выведено на монитор с учётом потерянных и “коротких” кадров.
Tomb Raider
Пожалуй, перед нами самый драматичный финиш в нашем наборе из девяти игр: карты Radeon переживают в этой игре наибольшее падение практической производительности, теряя по среднему значению 16,5 кадров/с.
Для сравнения, пара GeForce GTX 660 Ti обеспечивает одинаковую “аппаратную” и “практическую” частоту смены кадров.
График зависимости производительности от времени наглядно иллюстрирует, насколько много потерянных и “коротких” кадров следует отбросить из анализа, чтобы получить производительность, соответствующую игровому опыту.
Колебания между кадрами низки для GeForce, тогда как карты Radeon сталкиваются с заметно большим разбросом. Стоит отметить, что это немного заметно и во время игры.
Измерение FPS | Когда частота кадров является не тем, чем кажется…
Мы знали о существовании этой технологии измерения количества кадров не первый год, и не первый месяц знаем о попытках Nvidia извлечь преимущества из равномерного распределения кадров, минимизируя количество пропущенных и “коротких” кадров. Тем не менее, лишь недавно компания захотела или смогла показать плоды своих усилий. Поскольку даже сейчас рассмотренные инструменты и утилиты кажутся несколько капризными. У нас было бы больше данных о производительности, но тестовая платформа на основе чипсета X79 Express в сочетании с FCAT выдавала явно ошибочный результат. В конце концов, мы сменили платформу на Z77 Express, что и позволило получить результаты, отраженные в данном материале.
Как мы и ожидали, учитывая результаты от The Tech Report, обнаружилось, что связка CrossFire из двух Radeon HD 7870, как правило, больше страдает от пропущенных и “коротких” кадров, чем пара GeForce GTX 660 Ti в конфигурации SLI. Это решает многочисленные сомнения о выборе оптимальной конфигурации из двух карт, которые периодически появляются в колонке
Карта Datapath, используемая нами для видеозахвата
В любом случае, мы видим, что Nvidia приложила все усилия, чтобы добиться реального повышения графической производительности, используя научный подход. Заслуживает уважения тот факт, что Nvidia направляет свои ресурсы на что-то такое, над чем работает лишь она одна, даже если мотивация при этом не сводится к чистому альтруизму. FCAT даёт нам инструмент для оценки того, что мы не могли точно измерять до этого момента, и этот факт говорит сам за себя. Теперь в двух лабораториях
Но у нас, тем не менее, остаётся несколько вопросов, оставленных без ответа. Представляется очевидным, что “короткие” кадры, занимающие меньше 21 сканируемой линии, весьма незначительно (либо вообще никак) отражаются на плавности игры. Но сможет ли хардкорный геймер увидеть различие в качестве, если в отдельные моменты времени картинка на экране будут состоять из нескольких недорендеренных кадров (более чем 21 полоса)? Инструменты FCAT позволяют установить свои пределы того, насколько большим может быть “короткий” кадр, и нам придётся поиграть с настройками скриптов для анализа данных, чтобы выработать собственный рецепт оценки производительности. Результаты, о которых идёт речь в данном обзоре, получены с настройками FCAT по умолчанию.
Но вопросы, поставленные в данном обзоре, требуют от нас большого объёма работы. Будем надеяться, что инновационные инструменты, вроде Nvidia FCAT, помогут нам ответить на них. Ждите продолжения.