«есть 3D игры в Linux…
нет 3D игр в Linux….
науке это неизвестно»
В последнее время со страниц новостных интернет сайтов и бумажных изданий часто звучит слово «Linux». Конечно большинство читателей знают, что это альтернативная продуктам Microsoft операционная система для современных ПК. При этом все чаще она упоминается в аспекте наступления на рынок настольных машин и применении не как сетевой ОС, а офисной и даже домашней. Ну а поскольку домашние ПК просто невозможно представить себе без игр, то и этот аспект вызывает интерес у потребителей. Следующим звеном в этой логической цепочке конечно будут трехмерные видеоускорители. Исследование их производительности под ОС семейства Windows занимает одно из ведущих мест на нашем сайте. Однако про их работу в Linux практически ничего не известно. Попробуем восполнить этот пробел.
Данная статья не претендует на полное, окончательное, безоговорочное и т.п. освещение вопроса, однако, я надеюсь, позволит начать конструктивную дискуссию о тестировании видеокарт (и не только) в ОС отличных от Microsoft Windows.
Конфигурация ПК
Тесты проводились на ПК следующей конфигурации:
- Процессор: Intel Pentium 4 2,53 ГГц (FSB 533 МГц, L2 512 КБ)
- Материнская плата: Gigabyte 8PE667 Ultra (чипсет i845PE)
- Память: 256 МБ PC2700 DDR SDRAM
- Видеокарты: NVIDIA GeForce4 Ti 4200 64 МБ и ATI RADEON 9500 128 МБ
- Жесткий диск: Quantum Fireball Plus AS 30 ГБ
В целом такая конфигурация не является «топовой» на сегодня, однако отнести ее к среднему классу пожалуй можно.
Конечно видеокарты принадлежат разным классам, однако поскольку мы первый раз тестируем ускорители под отличной от семейства Windows операционной системой, то прямого сравнения в стиле ATI vs NVIDIA проводить не будем, а больше обратим внимание на сравнение работы карт в разных ОС.
Программное обеспечение
Что касается ПО, то с Windows все достаточно просто:
- Windows XP Pro SP1
- Intel Inf 5.00.1012
- IAA 2.3
С Linux немного сложнее :) Хотя по сути он один, но есть огромное количество так называемых дистрибутивов. Реально они отличаются между собой в основном версиями ПО, инсталляторами, набором поставляемых программ, локализацией.
Кроме того, выбор определенного дистрибутива (и его версии) также может повлиять на результаты, однако если с Windows все легко его версию однозначно можно описать словами «Windows XP Pro Eng SP1», то для такой динамично развивающейся ОС как Linux, любой опубликованный на дисках дистрибутив к моменту выхода уже устаревает :)
Поскольку у меня ранее был опыт общения с RedHat 7.3, и я нашел эту ОС достаточно удобной, то в этот раз я остановился на недавно вышедшем RedHat 9. Никаких дополнительных пакетов и апгрейдов ОС не использовалось. Отмечу, что при инсталляции был выбран полный вариант установки.
Драйвера видеокарт
Как и с ОС в случае Windows, никаких сложностей в выборе, установке и настройке драйверов не было. Использовались NVIDIA Detonator 40.72 и ATI 7-84-030228a1-008040c.
Единственная использованная настройка отключение вертикальной синхронизации в драйверах (установка в положение «всегда выключено»). При этом для ATI пришлось поставить дополнительно панель управления драйвером.
В отличие от Windows, драйвера для Linux чуть более сложны в установке (хотя это скорее дело опыта). Для видеоадаптера NVIDIA использовался драйвер версии 1.0-4363, скачанный непосредственно с сайта компании. Его инсталляция совершенно прозрачна нужно просто запустить полученный файл. Единственное что немного напрягает объем файла README.txt более 120 КБ (это почти 3000 строк)! Однако проглядеть его перед установкой драйвера настоятельно рекомендуется.
С ATI вышло немного сложнее. Дело в том, что на сайте предлагаются драйвера для версий XFree86 (ядро графической оболочки в Linux) 4.1 и 4.2, в то время как с используемым RH9 поставляется версия 4.3. Поэтому мы обратились в вездесущему интернету и после некоторых поисков в сети нашли драйвер версии 2.9.12 и именно для XFree86 4.3. Для корректной установки этого драйвера пришлось удалить входящий в состав RH9 пакет libGL, так что драйвер смог установить свою версию этой библиотеки.
Хочется сказать и пару слов о настройке драйверов в Linux. Драйвера NVIDIA используют переменные среды для своих настроек. Можно выбрать режим FSAA, режим анизотропии и включить вертикальную синхронизацию (по умолчанию она выключена).
У ATI, несмотря на наличие графической программы-конфигуратора, с настройками хуже можно только настроить гамму и двухголовость. А параметр вертикальная синхронизации устанавливается во время инсталляции драйвера. Кроме того, поскольку использованный драйвер первоначально предназначался для профессиональных карт, то есть возможность выбора профилей под разные приложения (но какие точно настройки там используются неизвестно).
Возможно, что графические программы смогут сами как-то управлять режимами вывода изображения, однако выяснить это достаточно сложно и поэтому отложим до следующего раза.
Тесты
Постепенно приближаемся к самому интересному :) Итак, у нас есть ПК, ОС и даже драйвера. Дело осталось за малым найти приложения, которые работают под выбранными ОС и с данными драйверами.
Поскольку мы решили в этот раз сравнить работу видеоускорителей в разных ОС (а не между собой), то приложения нужно подобрать по возможности одинаковые. И, к счастью, у нас есть такая возможность. Ими стали:
- Quake III Arena, версия 1.32
- Unreal Tournament 2003 DEMO 2206
- SPECViewperf 7.1
Эти программы существуют как в версии для Windows, так и для Linux, что как раз отвечает нашей идее сравнить именно работу видеокарты в двух разных ОС. Отметим, что в также существуют и другие трехмерные игры для Linux (например RtCW, Serious Sam), но сегодня мы ограничимся только тремя.
Игры Quake III Arena и Unreal Tournament 2003 были портированы под Linux самими издателями, так что сомневаться в качестве программ пожалуй не стоит. Что касается SPECViewperf, то он поставляется с исходными текстами, которые можно скомпилировать под необходимую ОС. Конечно этот процесс вносит некоторую неоднозначность (например зависимость от компилятора). Однако будем надеяться (и проверим при случае), что эта программа, по сути только передающая вызовы в OpenGL драйвер, не сильно зависит от оптимизации компилятором.
Стоит заметить, что никакого Direct3D под Linux нет. Основной используемых здесь API это OpenGL. Упомянем здесь и проект WineX, который позволяет запускать под Linux игры из Windows, работающие с DirectX. Его мы постараемся рассмотреть его в следующий раз.
Тестирование
Конечно многие приложения могут использовать специальные оптимизации и настройки для достижения большего быстродействия, однако здесь мы будем по максимально использовать стандартные настройки.
Начнем с Quake III. К сожалению от версии к версии меняется формат записанных demo файлов, так что тестирование пришлось проводить на относительно простом демо «four.dm_68» входящем в поставку этого билда программы. Игра достаточно старая, и поэтому я использовал два варианта настройки сложности видео: стандартную «High Quality» и «тяжелые» конфигурационные файлы (на графиках с индексом «H»), широко используемые в разделе «Видеосистема» нашего сайта.
Первые результаты и первая интрига: система под управлением Linux обходит Windows XP во всех разрешениях и с обоими вариантами настроек! Причем преимущество не в паре fps, а достигает 25% со стандартными настройками и 80%(!) в тяжелом режиме (при разрешении 800x600).
Интересно отметить, что наклон кривых в Windows XP и Linux отличается. Кроме того вызывает вопрос неожиданное увеличение скорости при переходе от разрешения 1280x1024 к 1600x1200 в Linux с тяжелыми конфигами. Но поскольку все измерения для надежности проводились по 5 раз, сомневаться в полученных цифрах странно. Так что запишем эту ситуацию в область чудес :)
Отмечу, что внешних отличий в самой игре под Windows XP и Linux нет никаких. Так что если ваша цель как можно больше fps и используется видеокарта от NVIDIA, то апгрейд ОС :) может принести приличные дивиденды в этой игре.
Посмотрим теперь как обстоят дела у ATI.
Забавно, но мы видим совершенно противоположную картину Linux отстает на 10-30% в зависимости от разрешения. Обратите внимание, что в этот раз наклон кривых практически совпадает.
Здесь напомним, что не стоит забывать и о драйверах! От них зависит очень многое. Так что ситуация может легко измениться с выходом новый драйверов как для Linux, так и для Windows.
Переходим к Unreal Tournament 2003 DEMO. Эта игра может использовать при работе под Windows как Direct3D, так и OpenGL. Ну а под Linux остается только второй API. Все настройки оставались по умолчанию. Изменялось только разрешение. Поскольку в поставку игры входит собственные бенчмарки, то, конечно, мы использовали один из них flyby-antalus. Отметим, что на сайте в тестах видеокарт используется тот-же бенчмарк, но версия самой программы другая, так что результаты стоит сравнивать осторожно.
Начнем снова с NVIDIA.
Как видно по из графика, в этом приложении Linux отстает (от OpenGL версии под Windows XP) в разрешении 800x600 почти в два раза. И несмотря на снижение отрыва до 21% в 1600x1200, придется признать его побежденным.
А вот у ATI дела идут лучше от 38% в 800x600 разрыв сокращается до двух fps в 1280x1024 и 1600x1200.
В целом по игре немного странно выглядит ограничение на fps в районе 70-75 для двух младших разрешений при работе в Linux. Однако, даже после проведения дополнительных тестов, объяснить это я не могу. В дальнейшем мы попробуем изучить этот момент, а сейчас примем как есть.
И последнее приложение SPECViewperf. Конечно используемые карты относятся к классу игровых, и применение этого профессионального теста может выглядеть странно, но все равно попробуем.
Первые запуски теста с видеокартой NVIDIA стабильно приводили к системной ошибке в подтесте light-06. Изучение проблемы показало, что скорее всего дело в драйверах видеокарты, поскольку другая система с предшествующей версией драйверов была вполне работоспособна в этом тесте. Так как это была единственная проблема, то чтобы все не переделывать, я решил оставить последнюю версию драйверов, и результат light-06 у NVIDIA получен усреднением по двум тестам из четырех.
В большинстве тестов видеокарта работает под разными ОС практически одинаково, что может свидетельствовать о том, что используемые драйвера основываются на общем исходном коде.
И снова ATI показывает противоположный результат :) лидеры в dx-08 и drv-09 поменялись местами. Кроме того настораживает двукратное превосходство Linux в ugs-03. А в остальных подтестах Windows XP впереди на 17-32%.
Выводы
Мы рассмотрели работу двух популярных моделей видеокарт от двух ведущих производителей под операционными системами Windows XP и Linux. В целом никаких сложных проблем в проведении тестирования встречено не было. Таким образом можно признать, что 3D игры есть не только в Windows, но и Linux (при поддержке издателей софта) не сильно отстает. Конечно ориентация на API Direct3D может затруднить портирование на платформу Linux, где используется OpenGL, однако пример id Software и Digital Extreme/Epic Games надеемся станет заразительным.
Что касается сравнения скорости работы под разными ОС, абсолютного победителя здесь нет. В целом ведет Windows, но на некоторых конфигурациях впереди Linux.