Измерение производительности видеосистемы: практика (страница 6)
реклама
Повторяемость результатов
Методика измерений и особенности запуска тестов выходят за рамки данной статьи, но, честно говоря, очень хочется сразу избавиться от вопросов вида «а почему у меня этого нет?». Конфигурация системы не менялась долгое время, последняя пересборка со сменой процессора была осуществлена около полугода назад.
Излишней любознательностью я не страдаю и «а-бы-что» на компьютер не устанавливалось, вирусов не было. Возможно, это ошибочно, но состояние системы можно охарактеризовать как «типичная». После выполнения измерений я занялся несколько неформальной деятельностью с графической системой, в результате Windows «рухнула». После установки Windows «с нуля» были выполнены те же тесты и данные результатов изменились.
Прохождение «Hard Reset» стало еще «дерганее», программа вообще отказалась считать стабильность вывода соседних кадров. Но средняя скорость возросла.
реклама
Heaven 4.0, DirectX 9, драйвер 13.6b2:
DirectX 9, драйвер 13.8b:
Драйвер комплекта 13.8b представляет жуткую нестабильность кадров и после переустановки Windows с нуля получаемые результаты стали только хуже. Эта нестабильность содержится в потоке кадров, формируемом игрой, программа Fraps-Calc сама такое придумать не способна. Как следствие, все характеристики снизились, хотя средняя скорость кадров возросла, как и в «Hard Reset». Можете сравнить, графики и анализ представлен в предыдущем разделе статьи.
NVIDIA
К сожалению, все тестирование проходило на продукции фирмы AMD, что принципиально неверно. Но, увы, ничего стоящего из аппаратуры NVIDIA у меня просто нет. Единственный доступный адаптер находится на работе, да и то очень древний. Я не собирался использовать его в тестировании, просто снял данные и забыл. Потом разбирал архивы и повторно испытал шок от увиденного.
Первый раз это произошло, когда после запуска программы генерации маркеров увидел, что драйвер внаглую украл половину кадров, это безобразие описано выше. Второй раз – после просмотра данных этой старенькой видеокарты NVIDIA.
реклама
В качестве музейного экспоната участвует:
На драйвере:
Видеокарта совсем старая и для каких-либо сравнений производительности совершенно не пригодная. Но не стоит пропускать этот раздел статьи, иначе, зачем бы я стал тратить на него время.
Вначале несколько кадров 3DMark05. Этот тест выбран потому, что он выполнен на DirectX 9, а более новые редакции DirectX не поддерживаются ускорителем.
S.T.A.L.K.E.R.
Ничего странного не наблюдаете? Давайте я распишу маркеры нескольких снимков.
Чисто эстетически, эта картинка напоминает «кашу», но таковой она и является. А если соединить окончания-начало фрагментов?
Шторка фотоаппарата начала открываться, в этот момент оканчивался показ кадра с синим маркером (слева), после чего начался показ серого маркера. Окончание синего и начало серого отмечено стрелкой с номером 1, остальные отметки выполнены аналогично. Значительная часть фрагментов выдается правильно, но есть и нарушения.
Переход номер 3, после зеленого должен идти красный, но он пропущен и начался вывод синего. Переход 4 тоже неправильный, после синего должен идти серый, но видеокарта «вернулась» к выдаче пропущенного красного. Последующие переходы 5-8 выполнены нормально, затем переход 10 «назад». Я затрудняюсь оценить численно вредоносность скачков вывода к предыдущим кадрам, но она очевидно выше, чем простой «повтор».
реклама
Еще картинка для анализа:
Видеокарта отчаянно путает кадры, постоянно скачет вперед-назад. Один «короткий» кадр (слева) на этом фоне выглядит как мелкая шалость. Последовательность в правой стороне кажется «закольцованной», но это не так. После серого (выводится полный кадр плюс маленький повтор) начинается красный, затем синий (при повторе яркость маркера повышается, учитывайте это), затем верх красного с плавным снижением яркости и шторки фотоаппарата закрылись. Если мой анализ вызывает недоверие, можете посмотреть небольшой видеофрагмент (243 Кбайт).
И еще картинка:
Начало и середина процесса «обычные» для этой видеокарты, а вот окончание – жуть. В это время закрывались шторки фотоаппарата и по постепенному снижению яркости можно точно определить последовательность вывода на экран. После вывода синего начинается зеленый (пропуск кадра!), затем красный, затем серый (возврат на два кадра!!), затем снова вывод кадра с зеленым маркером.
Видеокарта тщательно путает кадры вывода, причем сами кадры сохраняются. Это означает, что в ней одновременно(!) присутствуют данные о нескольких(!) кадрах. Зачем это нужно, глупость же полнейшая! Безумный расход памяти, причем без какой бы то ни было необходимости. Гораздо проще построить кадр, выдать его на теневую поверхность и начать обработку следующего. Зачем надо хранить еще несколько кадров? Причем к системе кэширования это действие отношения не имеет.
У меня есть только одно разумное объяснение – обработка ведется не одним потоком, а несколькими. То есть существует несколько конвейеров, которые обрабатывают каждый свой кадр и они работают параллельно. Подобным разделением можно объяснить странную деятельность видеокарты по перепутыванию кадров – соответствующий конвейер просто не успевает выдать кадр и его обгоняет другой конвейер со следующим кадром. Так и получается вместо 1-2-3 вывод типа 1-3-2.
Остается только понять, сколько конвейеров используется. К слову, чем больше величина разбиения, тем выше задержка исполнения. Видеокарта и счетчики производительности информируют о количестве кадров в секунду, но ничего не говорят о задержке исполнения. Если существует разбиение на отдельные потоки, то производительность останется прежней (скорее даже возрастет), а вот задержка повысится и весьма заметно. Вы играете в игры, «тормознутость» в управлении не беспокоит? А вина может быть в самой видеокарте и, что особо неприятно, к скорости кадров (производительности) это не имеет прямого отношения.
Мера разбиения понятие неизвестное. Судя по приведенным картинкам, она должна быть равна трем (большего не встречалось), вот только «3» несвойственна аппаратным реализациям. На выручку приходит тест 3DMark. Если вы обратили внимание на картинки, приведенные ранее, то заметили (бы) на них странную аномалию. Вначале я подумал, что каким-то образом посадил дефект съемки, но фотоаппарат таким свойством не обладает. Он может испортить снимок, но «таким» способом – никогда. Дабы не присматриваться, позвольте показать интересующий фрагмент крупнее:
Видеокарта постоянно путает соседние кадры, что проявляется столь причудливым образом. Ранее отмечались сбои на три отсчета (кадра), здесь подобное и наблюдается, чаще всего. Но существуют зоны вывода, где сбой распространяется на четыре отсчета. Это означает, что конвейеров четыре. Зависит ли величина разбиения от типа видеокарты остается загадкой, но само значение «4» как раз очень логично.
У меня нет доступа к другим, более новым, видеокартам производства NVIDIA, что затрудняет получение точного ответа на данный вопрос о распределении вычислений в графическом ускорителе. С другой стороны, существуют логи тестирования одиночной(!) видеокарты NVIDIA GeForce GTX 570. Ранее я уже приводил эти данные с некоторыми комментариями, интересующиеся могут почитать первую часть статьи. Впрочем, по нужному нам вопросу там приведено не особо много полезного.
Для сравнения, AMD Radeon HD 6970:
Видеокарта NVIDIA GeForce GTX 570 самопроизвольно меняет характер формирования кадров. На графике видны как «спокойные» зоны, так и «шумные». Интересно, что «амплитуда» шума одинакова для разных участков. Видеокарта одиночная, поэтому никакого фазового сдвига, свойственного парной обработке, возникнуть не должно. Но дефект-то есть и его вполне реалистичное объяснение – «SLI» реализовано в самой видеокарте. Собственно, нечто подобное я и предполагал чуть ранее.
Еще один аргумент в пользу теории «псевдо-SLI» в одиночном графическом ускорителе можно получить, проанализировав снимки игры S.T.A.L.K.E.R.
Мониторинг сообщает о скорости 127 к/с, но посмотрите внимательно на то, что именно происходит на картинке. Точные подсчеты проводить не хочется, поэтому ограничусь обращением вашего внимания на наличие повторов(!), смотрите на «зеленые» и «красные» маркеры в средней и нижней части картинки. О каких еще повторах может идти речь, если средняя скорость 127 к/с? В самом худшем случае CF/SLI на двух видеокартах может «испортить» скорость вывода лишь в два раза. Здесь же следует нарушение больше, чем в два раза. Если «больше», значит разбиение выше, чем два независимых потока.
Сама нестабильность, когда самым причудливым образом смешаны сверхкороткие и чрезмерно длинные кадры – это тоже свидетельство в защиту моего предположения. В первой части статьи я приводил доводы в пользу увеличения дефектности картинки из-за параллельной работы нескольких видеокарт.
Фактически мера увеличения неустойчивости длин кадров пропорциональна количеству видеокарт (потоков обработки). Игра S.T.A.L.K.E.R. создает не особо равномерный поток кадров в видеокарту, процессор вынужден отвлекаться на неграфические расчеты. Но посудите сами, не может же ЦП быть загружен настолько хаотично? Да, небольшая девиация присутствовать будет, но откуда взяться столь резким скачкам?? Если вспомнить о «способности» CF/SLI решений усиливать нестабильность в несколько раз, то все встает на свои места.
К слову, на снимках CrossFireX по игре S.T.A.L.K.E.R. ничего экзотического не наблюдается. Да, есть «спаривание» соседних кадров, но какая-либо «пляска» между соседними кадрами даже в виде намека не просматривается. Хотя это не особо серьезный аргумент, все же между GeForce 9600 GT и Radeon HD 6970 большая разница в «возрасте». Однако аргументы представлены, решать вам .
FCAT (Frame Capture Analysis Tool)
Использованный мною метод маркеров с последующей съемкой позволяет оценить формирование отдельных композиций, но откровенно глупо пытаться использовать его для меняющихся сцен или оценки реальной производительности видеокарты. Для этого надо осуществлять покадровый захват и анализ. Примерно таким образом работает комплекс FCAT, который продвигает фирма NVIDIA. Наверно, описание его работы приводить не стоит, это уже сделано, позволю себе вольность остановиться на двух моментах, фигурирующих в описании комплекса:
Во-первых, в качестве элемента формирования маркеров используется оверлей. Во-вторых, методика расчета с критерием учета кадров по «пороговому» методу.
Оверлей очень удобная вещь, его простейший пример – курсор мышки. При обычном режиме построения картинки, чтобы перенести изображение курсора, требуется стереть его в старом месте, восстановив изображение, которое было под ним, затем нарисовать в новом месте. Действия по постоянному перерисовыванию являются откровенной несуразностью, поэтому используется специально выделенный фрагмент (видео)памяти, где сформировано изображение курсора, а при выводе на экран монитора сама видеокарта подменяет вывод на ‘это’ изображение в нужном месте экрана. При этом не происходит какого-либо изменения в изображении того, над чем пробегает мышка.
Данный прием позволяет избежать постоянного рисования/восстановления. Идея хорошая, вот только теряется гарантия того, что оверлей применится именно в тот момент, когда выводится «его» кадр. Уж простите меня за этот скепсис. Моя программа врисовывает маркеры в картинку перед выдачей сигнала о конце построения кадра, что исключает возможность рассинхронизации. Оверлей может добавляться после обработки графическим процессором, а это самый конец цепочки. Если такая рассинхронизация возможна (если), то этим как раз и объясняется, почему FCAT не видит перестановку кадров, иногда (возможно) возникающую на некоторых видеокартах NVIDIA. Если вы прочитали предыдущий раздел, то понимаете, что я подразумеваю.
По методике расчетов – примененный анализ FCAT не учитывает длительность кадров. Просто говорится, если время показа кадра слишком мало, то не засчитывать. Простите, а если его длина чуть больше этого граничного значения, то его засчитывать за полноценный кадр (фрагмент)? Вообще-то, даже соотношение соседних фрагментов как «3» к «4» приводит к эквивалентному снижению скорости кадров на 14%. Ранее рассматривался пример, поэтому я ссылаюсь именно на эти значения. Посмотрите снимки, приведенные выше, шанс получить в игре неравномерные кадры, даже с небольшой степенью неодинаковости, весьма велик. FCAT это игнорирует и возвращает стопроцентное качество. Впрочем, я могу и ошибаться, лично у меня нет комплекса FCAT.
Хм. Кстати, попробуйте найти в свободном доступе так называемый «свободно распространяемый» комплект программ FCAT. Это уже странно. Впрочем, в недостатки это записывать не стану.
Заключение
Любая нестабильность вывода кадров приводит к ухудшению качества картинки. Для борьбы с этим злом можно использовать либо какую-нибудь разновидность синхронизации, либо включить соответствующий режим балансировки в настройках панели управления драйвером. Конечно, если такая возможность есть. По продукции NVIDIA мне сказать нечего, увы, а вот ATI/AMD…
А знаете, эту компанию надо бы похвалить – занялись драйвером, решают проблемы, результат есть (что редкость, а потому ценно). Вот только… технология объединения нескольких видеокарт для работы с одним видеопотоком была анонсирована на международной выставке Computex 2005, проходившей в начале июня 2005 года. Сейчас, дайте взглянуть, середина 2013 года. Все это время выпускалась продукция и кто-то ею пользовался…
Извините, благодарить не за что.
реклама
Страницы материала
Лента материалов раздела
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила