Как понизить фрейм тайм

На просторах интернета можно найти бессчетное множество статей про видеокарты, но большинство их созданы по одному и тому же принципу: все авторы меряют минимальный и средний FPS, а кто-то еще и максимальный. Насколько ценны эти замеры, насколько объективно они отражают уровень комфорта во время игры? Я пришел к выводу, что не очень, а всё потому, что такая методика совершенно не учитывает микрозадержки, они же микролаги или фризы.

Проблема микролагов известна давно, особенно остро она стояла лет пять назад у владельцев карт ATI. Суть в том, что на долю секунды FPS падает до неприлично низкого уровня, причем делает это с раздражающей регулярностью. В такой ситуации средний FPS будет в полном порядке, поскольку на пару «медленных» кадров приходится тысяча нормальных, а минимальный FPS покажет только худший лаг, он может быть не очень сильным, но проблема в том, что лаги частые!

реклама

Стоит упомянуть и лаги, возникающие при резком усложнении сцены, а именно при красочных взрывах и разрушениях с реалистичной физикой. С ними такая же проблема: минимальный FPS выявит последствия только самого большого взрыва, а средний FPS практически не будет зависеть от числа этих взрывов.

В такой ситуации не остается ничего другого, кроме как записывать время отрисовки каждого кадра. Тут может помочь популярнейшая программа FRAPS, а точнее ее способность записывать лог frametimes, хотя это еще полдела. Результаты нужно переработать так, чтобы их было удобно воспринимать, и чтобы получить возможность объективно сравнивать разные системы между собой. В данной статье описан мой способ это сделать.

Демонстрационные примеры снимались на следующем тестовом стенде:

  • Процессор: Intel Core i7 930, 4 ГГц (200 х 20, 1,35 В);
  • Система охлаждения: GlacialTech Siberia;
  • Термоинтерфейс: КПТ-8;
  • Материнская плата: Asus P6T SE (BIOS 0805);
  • Оперативная память: Corsair Dominator TR3X6G1600C8D DDR3 1600 МГц, 8-8-8-20, 3×2 Гбайт;
  • Жесткий диск: WD Velociraptor, WD6500HLHX-01JJPV0, 450 Гбайт;
  • Видеокарта: Sapphire Radeon HD 5670, 1 Гбайт GDDR5;
  • Блок питания: Enermax Modu 87+, 700 Вт.

реклама

Надеюсь, вы решили оценить предлагаемый метод, уже неоднократно испытав классический вариант, поэтому не стану объяснять, где скачать FRAPS, как его установить и как запускать, а перейду сразу к делу. Чтобы получать лог frametimes, достаточно поставить нужную галочку в настройках:

Если вы не меняли пути, то после замеров в каталоге C:FrapsBenchmarks будет появляться файл ***frametimes.csv. Это текстовый файл с запятыми-разделителями, в который еще зачем-то добавлены пробелы, с такими файлами проще всего работать в MS Excel. Открывать файл следует не как обычно, а через импорт данных. В Excel 2007 это вкладка «Данные», группа «Получить внешние данные», кнопка «Из текста».

После указания файла в появившемся мастере текстов на первом шаге оставляйте всё по умолчанию (формат данных: с разделителями), на втором выставите символом-разделителем запятую, третий шаг можете пропустить и сразу нажать «Готово». Импорт следует начать с ячейки A1 (настройка по умолчанию). В итоге должны получиться два столбца данных:

Теперь из этих данных нужно получить время отрисовки каждого кадра и мгновенный FPS. Время отрисовки это не что иное, как разница между временны́ми отметками соседних кадров, а мгновенный FPS – обратная величина времени отрисовки, умноженная на 1000 (поскольку время указано в миллисекундах).

На основе столбца с мгновенными FPS можно построить интересный график. Для примера я взял результаты из бенчмарка «S.T.A.L.K.E.R.: Зов Припяти» со следующими настройками:

  • Разрешение 1680×1050;
  • Установки: средние;
  • Рендер: Улучшенное полное освещение (DX10).

Вот так выглядят мгновенные FPS в первом тесте днем:

Замер по классической схеме выдал minFPS=26 и avgFPS=38,57. Со средним всё понятно (это общее количество кадров, деленное на длину демо сцены в секундах), а про минимальный есть большой вопрос. Какие 26, если кадр №3347 рисовался аж 110 мс, что дает менее 10 FPS. Это явный лаг, заметный на глаз, но значение minFPS говорит, что всё хорошо. И ведь есть полно кадров, с мгновенным FPS меньше 27!

Для наглядности стоит создать еще один столбец и еще один график, в котором посчитано число вхождений кадров в определенный диапазон. Для простоты расчетов я просто отбрасывал дробную часть значения FPS и считал, как часто встречается то или иное целое число. Получилась группировка по диапазонам шириной в 1 FPS.

реклама

График на основе этих столбцов выглядит так:

Самые быстрые кадры в этом замере выдавали мгновенные значения более 300 FPS, но в этом графике я решил их не учитывать и ограничиться значением 100 FPS. Кстати, FRAPS намерял maxFPS=50. Проверка показала, что это число отражает максимальное количество кадров, отрисованных в течение одной секунды.

Читайте также:  Как настроить мобильный интернет мтс россия

Акцент данной статьи сделан на выявлении микролагов, так что предлагаю рассмотреть более подробно «медленные кадры», левее основного «колокола» нормального распределения, скорость которых менее 30 FPS.

реклама

Наверняка кто-то посчитает границу в 30 FPS недостаточной и захочет рассмотреть больший диапазон. Напоминаю: сейчас я описываю теоретический метод, а данная тестовая система просто пример. На компьютерах с более мощными видеокартами основная группа кадров будет располагаться гораздо правее, тогда в «медленную» группу можно включить и 40 FPS, и 50, хотя падение скорости до 50 FPS это вовсе не лаги.

Вернемся к графику. Теперь видно, сколько кадров было медленными и насколько медленными. Но картина всё еще не оптимальна для восприятия.

Во-первых, нужно объяснять, что маленькая отметка в значении 9 FPS говорит о худших вещах, чем полоса, скажем, на значении 27 FPS. Один кадр с мгновенной скоростью 9 FPS это статическое изображение на протяжении 110 мс, а четыре кадра 27 FPS наверняка идут непоследовательно, плюс замирание картинки на 37 мс не настолько страшно.

Во-вторых, все привыкли, что в разных столбцах содержатся разные категории. А представьте, что будет, если на этом же графике отобразить такой же набор данных, сдвинутый на 1 FPS вбок – получится хаос из разноцветных лестниц! А если попытаться сравнить штук пять систем?

реклама

График по этому столбцу получается такой:

Теперь время, в течение которого FPS находится ниже определенного уровня, демонстрируется одной простой линией.

реклама

Нет ничего сложного, чтобы провести три замера и вычислить средние результаты.

Не могу похвастаться очень точным совпадением трех вариантов, но качественно все они одинаковы: кадров медленнее 14 FPS практически нет, кадры медленнее 21-25 FPS длятся в сумме 5 секунд.

Давайте посмотрим, как поведет себя эта система в сравнении с другой в том же бенчмарке на одинаковых настройках:

реклама

Основная платформа Платформа для сравнения
Процессор Core i7 930, 4 ГГц (200 х 20) Core i7 920, 3,6 ГГц (180 х 20)
Материнская плата Asus P6T SE Asus P6T Deluxe
Оперативная память 3×2 Гбайт, 1600 МГц, 8-8-8-20 3×2 Гбайт, 1440 МГц, 7-7-7-16
Жесткий диск WD Velociraptor, 450 ГБ 3x WD Raptor 74 ГБ, RAID-0
Видеокарта Radeon HD 5670, 1 Гбайт GDDR5 GeForce 8800 GT, 512 Мбайт DDR3
ОС Windows 7 Ultimate x64 rus Windows 7 Ultimate x64 rus
Особенность «Чистая», недавно установленная система Рабочий компьютер с множеством установленных программ

Если кратко, процессор на основной тестовой платформе разогнан сильнее, но Radeon HD 5670 явно слабее GeForce 8800 GT.

Для начала, вот графики с усредненными по трем замерам minFPS и avgFPS: minFPS | avgFPS

Включите JavaScript, чтобы видеть графики

GeForce 8800 GT легко разгромил соперника… или не легко? Надеюсь, вы уже поняли, что minFPS не показывает скорость самого медленного кадра сцены. Давайте посмотрим на другой график.

Если сравнить два процессора i3 7300 и i5 7400, то разница показателя FPS будет отличаться незначительно, а иногда i3 отличается большим фреймрейтом чем i5. Тем не менее на практике по ощущениям, разница крайне значительная в пользу i5. Другими словами счетчик FPS не показатель плавности в играх. Это проблема, т.к. все мы привыкли судить именно по FPS.

FPS (Frames Per Second) — это число кадров полностью отрисованных за 1 секунду. FPS = кадры в секунду. Предположим что кадров было нарисовано 50. По простой формуле можно посчитать что каждый кадр рисовался 20 мс (1сек/50кадров). Это значение проще называть время кадра, т.е. время в течении которого показывается кадр. Проблема в том, что например если в течении секунды, 5 кадров будут показаны за 100 мс, а остальные 45 кадров со временем 11,1 мс, то в течении секунды будет показаны всё те же 50 кадров. Счетчик кадров покажет 50 FPS.

Естественно 50 кадров которые выводятся равномерно и 50 кадров с периодическими долгими кадрами, ощущаются кардинальным образом поразомну. По счетчику FPS этого совершенно не видно.

Что бы стабильно по 5 раз в секунду были просадки по времени кадра обычно не бывает. Но когда процессор работает на 100%, то любые сторонние задачи (антивирус, открытый браузер и т.д.) могут вызвать затыки в работе. Например общий фреймрейт составляет 50 кадров, но раз в несколько секунд происходят затыки на 100 мс. Что отжирает всего навсего 4 кадра в секунду по счетчику, но делает игру полностью не играбельной и лучше иметь хорошие 25 кадров, чем те 46 с микрофризами. В таких условиях будет очень хорошо видно как игра фризится и становится очень не комфортной.

В реальности это может выглядеть следующим образом. Например у вас 50 FPS, но половина кадров может быть ближе к 30 мс, а вторая половина ближе к 10 мс. В среднем получается 20 мс и 50 FPS, а ощущается это все не на 50 FPS. Больше всего это касается двухядерных процессоров.

Читайте также:  Как обрезать песню на компьютере без программ

FPS не показатель плавности в играх

Что бы словами описать работу процессора обеспечивающего комфортный уровень плавности, следует в меньшей степени уделять внимание цифрам, а в большей степени таким критериям как плавность, равномерность времени кадра, наличие микрофризов и общая комфортность.

Frame Time (время кадра) лучше отражает плавность в играх, чем FPS. На практике это можно увидеть в программе Afterburner. Ниже приведены три графика среднего времени кадра и FPS. Верхний, это Pentiuum G4560, средний i5 7400 и нижний i7 7700 с частотой 4,9 ГГц. На графиках показан один и тот же отрезок игры Watch Dogs 2, это съезд по центральной дороге в городе — это самое требовательное к процессору место, которое удалось найти.

Когда график времени кадра резко ползет вверх — это уменьшение плавности игры. Когда ползет вниз — это увеличение плавности.

Когда процессора не хватает игре и игре надо например подгрузить следующие кварталы в городе, то на недостаточных процессорах начинаются просадки. Это видно на графиках — i5 и i7 хватает игре, время кадра плавно падает и плавно растет в зависимости от происходящего. На четырех поточном Pentium ситуация совсем иная — постоянно что-то куда-то прыгает, тем самым заставляя обращать на это внимание. То есть проблема не в том что низкий фреймрейт (FPS), а проблема в том, что он постоянно меняется. Такое поведение в играх называется неравномерность фреймрейта.

Второй эффект, который не отражают циферки FPS — это распределение времени кадра в секунду. Назовем это неравномерность времени кадра. То есть время кадра постоянно скачет и при достижении определенных амплитуд проявляется в виде микрофризов. Такое явление встречается на всех трех процессорах, но на i5 и i7 значительно реже чем на Pentium.

Выводы

FPS не показатель плавности в играх и что бы лучше понимать насколько плавной и комфортной будет игра на том или ином процессоре, нужно меньше смотреть в сторону FPS и больше в сторону распределения времени кадра в секунде. Так как на практике может быть так, что за одни и те же деньги один процессор покажет по счетчику FPS меньше кадров чем другой процессор, но распределение времени кадра будет равномерным в отличии от второго процессора, то не смотря на более низкий FPS, первый процессор для игр будет более комфортным.

Насколько хорошо, Вы знаете, а если знаете, то понимаете, в чем заключается различие между FPS (частотой кадров в секунду), Hz (герцами) и Frame time (временем кадра)?

Лично для себя, я решил, разобраться в данных понятиях и взаимосвязи между ними. Далее, я изложу свои мысли и наблюдения, стараясь, свои рассуждения, используя понятные и простые примеры, намеренно опуская или пренебрегая определенными деталями. Все описанное далее, может содержать неточности, ошибки, не стоит воспринимать, все описанное в качестве эталона.

В первую очередь, я отдаленно, расскажу об основных терминах и понятиях, затем, последуют примеры с конкретными значениями. Подобный подход поможет лучше, с меньшей запутанностью понять основную мысль.

Представим , что имеется некий ЖК монитор и компьютер с установленными на него приложениями.

Характеристика Hz, в данном случае будет относиться к монитору, ее числовое значение, означает, максимальное количество кадров (изображений), которых, монитор будет способен показать за одну секунду времени.

Характеристика FPS, будет относиться к приложению, установленному на компьютере, ее числовое значение, будет обозначать производительность конкретного приложения на конкретном компьютере, в количестве кадров в секунду, которые могут быть «предоставлены данным приложением» для вывода на монитор.

Hz, обладают постоянным и фиксированным значением, его величина, зависит от характеристик и технологического процесса примененного, при производстве ЖК панели, установленной в мониторе. 30, 60, 75Hz, встречается в большинстве мониторов, матрицы же с поддержкой 122, 144, 166, 200, 240Hz, получили распространение в игровых мониторах.

FPS, как правило, обладает не постоянным значением, часто данный параметр, характеризуют, как среднее, минимальное и максимальное значение кадров в секунду, за определенную сцену или промежуток времени, в пределах которого рассматривается данный параметр.

Количество FPS, напрямую зависит от производительности (мощности) компьютера. Для каждого приложения, следует индивидуально рассчитывать и рассматривать данный параметр, так как, у каждого приложения имеются свои, индивидуальные требования, к технической части пк.

Для каждой программы существуют, минимальные и рекомендуемые или максимальные системные требования к «железной составляющей компьютера», или по-другому системные требования. В первом случае, минимальные системные требования, описывают параметры, необходимые для запуска и более – менее стабильной и комфортной работы по, во втором случае, для наилучшего достижения максимальной или оптимальной производительности данного по, на каком – либо пк.

Читайте также:  Как обновить драйвера через биос

Рассмотрим еще один фактор, то как человек воспринимает изображение, состоящие из последовательности, сменяющихся друг за другом кадров.

Начнем с того, что существует миф, в котором говорится, что человек, не способен воспринимать, видеть больше определенного числа кадров в секунду (FPS), часто в качестве подобного значения приводятся цифры в 24, 30, 50, 60 кадров в секунду.

Вы когда-нибудь задавались вопросом, откуда появились, настолько точные цифры, без «разброса» или допустимой погрешности, в несколько единиц?

Почему именно конкретное фиксированное значение, ведь все люди воспринимают аналогичные зрительные явления, немного или полностью по-своему. У одних людей, зрение лучше или хуже, чем у других, тогда почему именно 24 или 50 кадров в секунду?

По моему мнению, было бы правдоподобнее и логичнее, если бы, существовал диапазон чисел, например, от 24 до 50, и утверждалось бы, что человек способен воспринимать от начала и до конца, данного диапазона, в зависимости от индивидуальных способностей. В приведенный числовой диапазон содержит немалое количество значений… и самое главное, каким образом это было настолько точно определено?

На самом деле, ответ на эти вопросы, достаточно прост. Данные значения, являются частью, стандартов, используемых, при кинопроизводстве и телевещании. Появились они, достаточно давно, еще во времена пленки и 24 кадра, это минимальное значение, при котором видео материал, воспринимается более – менее целостно и не выглядит, как слайд шоу, а звук сопровождающий происходящие нормально и без особых проблем «ложится» так, чтобы присутствовало ощущение целостности, между видео и аудио, и самое главное при съемке на пленку, ее расход должен был быть разумным, особенно при немалой длительности видео.

Конечно, данный стандарт, появился далеко не сразу…

С дальнейшим развитием технологий, когда пленка, уже была не настолько востребована и появились новые носители информации, «родились» и новые стандарты, предоставляющие зрителю большую плавность картинки и, следовательно, лучшее погружение в происходящее.

Глаз человека, это не механизм или электроника, поэтому такое понятие, как количество воспринимаемых кадров или мегапикселей, не применимы, потому что глаз видит все происходящие не по кадрово, восприятие, зависит от индивидуальных способностей конкретного человека.

Добавлю, что в видео, количество кадров фиксированное, в некоторых моментах оно может изменяться, для придания эффекта, замедленной или ускоренной съемки.

В видео глаз, привыкает к одному и тому же количеству кадров и воспринимает их плавно, а в играх, такого ощущения надолго или вообще не удается сохранить, так как в разных сценах или, при порой малейших действиях, количество кадров в секунду, может изменяться и глаз неплохо замечает изменения в 10 и более единиц, при условии, если изначально FPS, был не очень большим.

В играх, в отличие от видео, количество кадров, можно ограничить, но зафиксировать, на определенном числе надолго, практически невозможно.

Так же частое мнение, что нужно больше 30 или 60fps в играх, оправданно, далее я уделю этому внимание, рассказав, про время кадра.

Пример 01.
Предположим, что имеется монитор с частотой обновления 60Hz, приложение, установленное на пк, «вырабатывает» 80FPS. Как было отмечено ранее, 60Hz означают, что монитор способен максимум отобразить 60 кадров за одну секунду, в таком случае, появляется вопрос, что будет с оставшимися 20 кадрами?

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

Если речь идет об играх или иных приложениях с нефиксированным количеством кадров, то в дело вступает такое понятие, как время кадра. Оно выражается в миллисекундах (в 1 сек = 1000мс) и показывает, сколько потребовалось времени в миллисекундах, чтобы вывести на монитор данный кадр.

Для расчета используется следующая формула: единица делится на количество кадров в секунду, производимых приложением (fps), полученный результат умножается на одну секунду (1000мс).

1 : 60fps * 1000мс = 16.6мс

Один кадр, был отображен за 16.6мс

Если кадров, больше, чем способен отобразить монитор, то время кадра становится меньше:

1: 240fps * 1000мс = 4.1мс

Чем меньше время кадра, тем более актуальную «картинку», мы можем видеть.

Из всего изложенного, можно сделать вывод, что большее количество кадров, чем способен физически отобразить монитор, мы не увидим, из – за технического ограничения, строения его матрицы. Но, смысл иметь большее количество fps, чем может отобразить монитор, имеет смысл, так как выводится более «свежее» изображение.

Имеется еще ряд, особенностей влияющий на данные переменные и время кадра, но если их не учитывать, то зависимость остается примерно такой.

Adblock
detector