Разбор «полетов»
Во-первых, давайте сначала зададимся вопросом – откуда
берется теоретический предел объединения производительности
двух идентичных систем? Понятно, что просто так ничего не
бывает, и какое-то ограничение быть должно. Но почему общая
производительность если и вырастет, то не более чем в два
раза, а не в три раза, скажем? Есть же примеры синергии.
Синергизм - комбинированное воздействие двух или
более факторов, характеризующееся тем, что их совместное
биологическое действие значительно превышает эффект каждого
компонента и их суммы.
греч.Synergos - вместе
действующий.
Дело в том, что синергия возникает, как правило, при
взаимодействии отличных друг от друга факторов, которые
дополняют и усиливают действия друг друга. Если же действующие
факторы идентичны, то в дело вступает арифметика, поэтому два
фактора могут дать максимум удвоенный эффект (за вычетом
«накладных расходов» на объединение).
Если позволите, приведем пример, весьма упрощенный, но
передающий суть дела. Допустим, у нас имеется самосвал,
который может перевезти за раз 10 тонн груза. Сколько груза
смогут перевезти два таких самосвала одновременно? По идее –
20 тонн. В принципе, можно самосвалы поставить рядом и
нагрузить «с горкой», но в таком виде груз в целости доедет
лишь до ближайшего поворота, а дальше возникнут трудности с
«синхронизацией» усилий и конструкция рассыплется. Теперь один
из самосвалов заменим экскаватором. И вот такая связка
обретает совершенно новое качество, с ее помощью можно менять
ландшафты! «Синергия» возникает в результате объединения
усилий. С помощью только самосвала изменить ландшафт
невозможно. С помощью только экскаватора - можно, но долго и
муторно. А вместе они могут творить чудеса.
Почему бы такому замечательному явлению, как синергия,
вдруг не проявиться при тестировании видеокарт? Если
отвлеченно пофилософствовать, такая точка зрения имеет право
на жизнь. Синергия может проявиться, когда при объединении
систем высвобождаются «скрытые» ресурсы, вступают в силу
определенные оптимизации или существенно меняются «правила
игры», при этом результирующий эффект превосходит
«производительность» одиночного компонента.
Но давайте все же будем материалистами, и поищем более
весомое оправдание увиденным результатам, чем философские
изыски. Наше дальнейшее повествование будет базироваться на
принципах, изложенных в статье «Методика тестирования видеокарт 2007.
Использование FRAPS.». Собственно, логика такого подхода
состоит в том, что тестирование в Need for Speed Carbon
проводилось с помощью утилиты FRAPS, а мы в своем распоряжении
имеем определенные методы анализа результатов, полученных
таким образом. Поскольку имеется недопустимое расхождение на
уровне среднего FPS, давайте проанализируем исходные данные.
Сначала мы обратимся к результатам, полученным с помощью
FRAPS, для одиночной видеокарты X1950Pro. Ниже показана
диаграмма распределения FPS по диапазонам значений.
Как видно из диаграммы, колокол распределения очень «узкий»
и вертикальная красная линия, отмечающая среднее значение 24,2
FPS, проходит практически по его середине. Впрочем, так оно и
должно быть.
Теперь построим точно такую же диаграмму, но уже для двух
видеокарт X1950Pro в режиме CrossFire.
И что же мы видим? С появлением второй видеокарты в
видеосистеме на диаграмме появляется второй колокол
распределения. Возникает странная ситуация. Примерно половина
мгновенных значений FPS находится в диапазоне от 25 до 35 FPS,
но при этом в игре не чувствуется никаких «лагов» и
«притормаживаний». Среднее значение FPS находится посередине
между вершинами этих «колоколов», а уж что именно в таком
случае оно выражает, вряд ли скажет даже именитый астролог.
Диаграмма не может дать ответ на вопрос, каким образом
распределены мгновенные значения FPS во времени. Поэтому
давайте построим график FPS в зависимости от времени (строго
говоря – в зависимости от номера кадра).
Ну что же, хотя в такой мешанине толком ничего не
разобрать, один важный вывод сделать можно – мгновенные
значения FPS из обоих «колоколов» перемешаны довольно плотно.
Углубимся дальше и возьмем из середины этого графика кусок,
в котором содержится всего лишь 50 кадров. Вот что получится в
итоге.
Оказывается, что мгновенные значения FPS из двух
«колоколов» не просто перемешаны друг с другом, а
последовательно чередуются! При этом верхняя граница коридора,
в который укладываются значения, более подвержена изменениям,
чем нижняя. Кстати, именно поэтому на диаграмме распределения
колокол «высоких FPS» оказался ниже и шире, чем колокол
«низких FPS».
Ну и что из всего этого следует? По всей видимости,
проблема в способе измерения производительности видеокарт и в
условиях, к которым он применяется. Дело в том, что в версии
драйверов Catalyst 7.1 в режиме CrossFire используется метод
AFR, когда каждый видеоадаптер рендерит отдельный кадр
целиком, а затем готовые кадры объединяются с помощью
CompositeEngine, встроенного в видеопроцессор (в случае чипов
RV560/570). В свою очередь, FRAPS реагирует на окончание
рендеринга кадра и отмечает это дело в своем лог-файле. Дальше
остается только строить догадки, как же данный процесс
протекает в деталях. Рискнем предположить, что FRAPS реагирует
на какие-то сигналы, подаваемые вторым видеоадаптером
(возможно сигнал синхронизации), и ошибочно принимает их за
сигналы окончания рендеринга кадра. Такие мысли навевает
близость нижней границы коридора к уровню 30 FPS, что является
половиной частоты вертикальной развертки монитора тестового
стенда в режиме 1600х1200. Хотя вертикальная синхронизация
(V.Sync) отключалась как в драйверах, так и в настройках
графики в игре (но двум видеокартам в CrossFire как то же надо
согласовывать свою работу).
Тех, кто при использовании FRAPS предпочитает использовать
усредненные данные из файла « … minmaxavg.csv» также огорчим.
Значения Min, Avg, Max из этого файла соответственно равны 35;
44,5; 54, что опять же весьма далеко от реальности. Впрочем,
какие результаты тут являются реальностью, а какие нет – тоже
еще вопрос. По крайней мере, при тестировании одиночных
видеокарт средние значения FPS, полученные разными способами
из данных утилиты FRAPS, расходились незначительно.
Если бы мы изначально взяли данные из файла « …
minmaxavg.csv», то данного разбирательства и не было бы.
Среднее значение 44,5 FPS вполне укладывается в рамки
допустимого теоретического предела (эффективность CrossFire
равна 84% по сравнению с одиночной видеокартой).Однако, в
нашем случае, стоит ли ему верить, этому удобному среднему
FPS?
Итоговый вывод таков – использование FRAPS для оценки
производительности составных видеосистем типа CrossFire (и,
вероятно, SLI) может дать неадекватные результаты, поэтому
слепо доверять таким результатам не стоит. А стоит ли доверять
результатам внутренних бенчмарков игр на таких системах – тема
отдельного исследования. На этой оптимистической ноте мы,
пожалуй, и закончим данное исследование.