В последнее время в форумах хардверных
сайтов часто обсуждается вопрос: "А стоит ли использовать
двухпроцессорную систему в качестве ПК (WorkStation)? Что
лучше - купить процессор на 1 ГГц или два на 600 МГц?" Вопрос
действительно интересный, ведь и двухпроцессорные материнские
платы вполне доступны по цене, да и софт постепенно учится
работать на нескольких процессорах. Мы попытались разобраться,
в каких же случаях двухпроцессорная система будет давать
прирост в производительности, проведя небольшое тестирование.
Но для начала попробуем чисто теоретически
рассмотреть ситуацию. Прежде всего необходимо, чтобы SMP
(Symmetric Multi-Processing - Симметрическая
Мультипроцессорность) поддерживалась операционной системой.
Например, при работе в Windows 98 никакого толка от двух
процессоров не будет - система сможет использовать только один
из них. Среди систем, поддерживающих SMP, наиболее популярны
Windows NT/2000, Linux, FreeBSD, BeOS.
Далее, наивно было бы ожидать, что
использование SMP будет давать ощутимый прирост
производительности абсолютно во всех приложениях. Для
достижения выигрыша (по сравнению с одним процессором)
необходимо, чтобы запущенная программа умела использовать
несколько процессоров, т.е. была многопоточной. Впрочем,
наибольший выигрыш будет достигаться в случае одновременной
работы нескольких программ (даже если эти программы
однопоточные).
Итак, с теорией мы немного разобрались -
пора переходить к практике. Чтобы практическая часть не
показалась вам, мягко говоря, несколько странной, сразу
оговорюсь, что по различным причинам нам не удалось провести
тестирования так, как мы бы того хотели -- "благодаря"
форс-мажорным обстоятельствам (в виде безвременной и внезапной
смерти одного из разделов жесткого диска, на котором,
собственно, и хранились данные) некоторые результаты
тестирований были утеряны. Тем не менее, мы все же решили
написать данный обзор, тем более, что "критическая масса"
результатов тестирования так или иначе сохранилась ;-).
Для тестирования были собраны две системы:
Система 1.
- Материнская плата: SOLTEK SL-68A на
чипсете 440BX
- Процессор(ы) Slot1 Pentium III 600 ( 6x100
Katmai)
- Память: 160MB (128+32)
- Жесткие диски: WD Spartan 7.5 GB
(основной), Quantum Fireball CX 13.1 GB
- Видео: Voodoo3 3000 PCI
- Звуковая карта: Diamond Monster MX300
Система 2.
- Материнская плата: Tyan Tiger 133 (S1834)
на чипсете Via Apollo Pro133A
- Процессор(ы): Slot1 Pentium 800EB (6x133
Coppermine)
- Память: 224MB (128+64+32) - работала на
частоте 133МГц
- Жесткий диск: Seagate Barracuda ATA II
- Видео: Voodoo3 3000 PCI
- Звуковая карта: Diamond Monster MX300
Несколько слов о материнских платах: SOLTEK
SL-68A содержит два разъема Slot1, 4 разъема DIMM, 5
слотов PCI, 2 ISA, 1 AGP. Из возможностей выделю аппаратный
мониторинг и изменение частоты шины из BIOS Setup. Да, если
это кому-нибудь интересно, плата сертифицирована 3D Labs.
Tyan традиционно выпускает "тяжелые" платы
для серьезных задач - в ассортименте этой компании
многопроцессорные материнки, модели с интегрированными
SCSI-контроллерами и т.п.
Tyan Tiger 133 - двухпроцессорная
плата - построена на несколько нетрадиционном для
двухпроцессорных систем чипсете Via Apollo Pro133A. Тем
интереснее было посмотреть ее в деле. В качестве Южного Моста
на этой плате используется микросхема VT82C596B, которая не
поддерживает ни встроенный AC-97 звук ни разъемы AMR/CNR (а
кому нужны эти возможности на плате такого класса?J). На
плате: разъема Slot1, 4 разъема DIMM, 5 слотов PCI, 1 ISA, 1
AGP. Плата также поддерживает аппаратный мониторинг, но вот
возможностей для разгона не предоставляет никаких (впрочем,
будет ли пользователь двухпроцессорной системы разгонять ее?).
Стоить так же отметить очень широкие возможности настройки
BIOS Setup.
Обе системы работали под управлением
Windows 2000 (на основном диске создавался раздел NTFS
размером 5МВ, после установки ОС и всех приложений диск
дефрагментировался).
SiSoft Sandra2000
Итак, для начала мы провели синтетические
тесты в SiSoft Sandra2000.
Как видим, быстродействие по целочисельным
операциям увеличилось примерно на 60%, а по операциям с
плавающей точкой - почти в два раза. А при работе с набором
команд SSE, и с целочисленными инструкциями MMX ситуация еще
лучше - производительность увеличивается почти в два раза!
Теперь посмотрим, как же обстоят дела в
Memory Benchmark.
Да, вот оно узкое горлышко чипсета BX - при
работе с памятью производительность двухпроцессорной системы
лишь немного превышает показатели однопроцессорной, да и то?
лишь для целочисленных операций. Это и неудивительно, ведь в
этом чипсете шина памяти просто делится между процессорами.
Нужно сказать, что на Via Apollo Pro133A горлышко становится
еще уже - этот чипсет работает с памятью медленнее, чем BX, а
шина также делится пополам между процессорами.
Ziff Davis Winstone 99
От синтетических тестов перейдем к Ziff
Davis Winstone 99. Этот тест, как известно, проверяет
производительность системы на реальных приложениях. Из
возможных наборов приложений для тестирования мы выбрали
Dual-Processor Inspection Tests, который состоит из программ,
поддерживающих многопроцессорность: MicroStation SE, Photoshop
4.0 и Visual C++ 5.0.
Как видим, средний прирост
производительности по этим приложениям составляет около 20%.
Основным "тормозом" стала MicroStation SE (около 15%
прироста), а вот при компиляции проекта в Visual C++ 5.0
выигрыш в скорости составил более 35%. Вообще говоря, не
очень-то впечатляет. Нужно правда заметить, что в тесте
использовались далеко не самые новые версии приложений.
Возможно в более поздних лучше реализована многопоточность?
WinRAR+MPEG4
Как известно, современные архиваторы
производят очень интенсивные математические операции и очень
часто используются для тестирования процессоров. Правда
многопоточных архиваторов я пока не встречал. Однако, как уже
упоминалось раньше, наибольший выигрыш двухпроцессорная
система дает тогда, когда запущенно несколько ресурсоемких
приложений, пусть даже однопоточных. Поэтому, мы решили
провести архивацию одновременно с просмотром фильма в формате
MPEG4. Ведь декодирование MPEG4 также очень сильно нагружает
процессор (на процессоре слабее Pentium II 400 полноценно
насладиться просмотром фильма в формате MPEG4 вам не удастся).
Немного о программах и настройках. Для архивирования был
использован WinRAR 2.70 (Dictionary size - 1024KB, Compression
Method - Best, Create solid archive, Use multimedia
compression). Архивировалась директория WINNT от Windows
2000(5866 файлов, 623 MB), которая была расположена на
дополнительном жестком диске (Quantum Fireball CX). Архивный
файл писался на основной жесткий диск (WD Spartan). Два
жестких диска было использовано для того, чтобы уменьшить
влияние производительности дисковой подсистемы на время
архивирования. Для просмотра фильма в MPEG4 ("Мумия", если
кому интересно :-)) был использован кодек DivX, ползунок
качества - на максимуме. Было проведено три тестирования,
результаты усреднены (отклонения не превышали 5%).
Для начала, ради спортивного интереса, был
запущен один только WinRAR. Так как это однопоточное
приложение, то в любом случае используется только один
процессор. Результаты приведены на нижней диаграмме. Небольшой
выигрыш на двухпроцессорной системы обусловлен тем, что
небольшая часть ресурсов отъедается операционной системой
(запущенные сервисы и т.п.), а она, в отличие от WinRAR, может
использовать для своих нужд второй процессор.
Посмотрим, что же будет при одновременной
работе WinRAR и DivX? Вот это да! Почти в два раза быстрее!
Кроме того отмечу, что при использовании одного процессора
фильм иногда начинал "дергаться" (в двухпроцессорной
конфигурации смотрелся идеально, также как и на одном
процессоре, но без WinRAR).
Честно говоря я даже не знаю, чем объяснить
такое уменьшение времени, затраченного на работу, ведь оно
зависит не только от процессора но еще и от скорости дисковой
подсистемы. Но тем не менее факт остается фактом -
двухпроцессорная система в этом тесте проявила себя наилучшим
образом. Для того, чтобы система с одним процессором могла
показать такой же результат скорее всего понадобится PIII с
частотой свыше 1.1 ГГц.
3DStudio MAX
Довольно-таки распространенной задачей для
рабочей станции является реэндеринг трехмерных сцен. Поэтому,
мы решили включить в тестирование 3D Studio MAX 3.11 (это
приложение поддерживает многопоточность). Осуществлялся
реэндеринг ста кадров с большим количеством полигонов.
Тестирование проводилось два раза, результаты усреднялись.
Как видно из приведенной выше диаграммы,
прирост производительности составил около 30%. Что ж, в
общем-то неплохо, но после результатов предыдущего теста я
почему-то надеялся на большее…
Игры
Одной из немногих игр, официально
поддерживающих SMP, является Quake III (режим многопоточности
можно включить, введя консольные команды r_smp 1 и
vid_restart). И именно в нем мы планировали провести
тестирование. Однако результаты оказались довольно-таки
странными. Во-первых, выигрыш по demo1 даже на 640х480
составлял всего лишь несколько fps, причем он практически не
зависел от того, включена поддержка SMP или нет. На более
высоких разрешениях, после включения поддержки SMP скорость
даже начинала падать! Я перепробовал все, что можно,
устанавливал последний патч к Quake III, менял драйверы
видеокарты, но картина кардинально не менялась.
Однако, в перерывах между тестированиями, я
не мог отказать себе в удовольствии поиграть немного в любимую
Unreal Tournament. Нигде я не встречал сведений о том, что эта
игра поддерживает SMP, однако разницу между одним и двумя
процессорами было видно невооруженным глазом! Поэтому, я решил
в процессе игры измерять количество кадров в секунду. Понятное
дело, что средний fps сильно менялся от игры к игре. Однако
минимальный fps оставался практически постоянным (±2 fps) и
зависел только от карты, количества ботов и их уровня (base
skill). А ведь именно минимальный fps в основном и определяет
играбельность. Теперь несколько слов о том, почему я не
захотел воспользоваться каким-нибудь демо для тестирования.
Насколько я понимаю, при воспроизведении записанного заранее
демо процессор занимается, грубо говоря, только расчетом
графики (поправьте, если я не прав). А реальной игре ему
приходится рассчитывать поведение ботов, физику и многое
другое. Поэтому в обычной игре, в отличие от demo, можно
считать, что минимальный fps практически полностью определялся
процессором (этот вывод подтвердился, когда я пробовал
уменьшать разрешение и детализацию текстур). Играл я на
Системе 1 (PIII 600, BX) при разрешении 800х600, все настройки
- на максимальное качество, 3D звук - A3D 2.0, карта
DM-Grinder, 3 бота base skill - Inhuman. Да, чуть не забыл,
Voodoo3 была разогнана до 185МГц. Было сыграно пять игр,
результаты усреднялись.
Как же объяснить такой прирост, ведь Unreal
Tournament вроде бы не поддерживает многопоточность? Тяжело
сказать. Попробую привести один из факторов, который повлиял
на этот прирост. Известно, что расчет 3D звука при помощи API
A3D 2.0 довольно-таки сильно нагружает процессор. При этом
вычислениями занимается не Unreal Tournament (он только
передает данные движку A3D), а драйвер звуковой карты,
следовательно Windows может возложить эту задачу на второй
процессор.
Возможно в Quake III, который поддерживает
многопоточнотсть, дело обстоит так: один поток отвечает за
расчет графики, а другой за интеллект ботов и т.п. Если это
правда, то тогда неудивительно, что второй процессор не
проявил себя в demo1.
В любом случае, вопрос о полезности
двухпроцессорных систем в играх остается для меня открытым и я
буду рад выслушать любые мнения по этому поводу.
Выводы
Итак, в первую очередь двухпроцессорные
системы могут быть полезны в случаях, которые проще всего
описать фразой: "Запустил... пошел пить кофе". Где вместо
троеточия может стоять компиляция большого программного
проекта, кодирование/декодирование аудио или видео, серьезные
математические расчеты и т.п. То есть задачи, которые
настолько сильно нагружают процессор, что делать одновременно
с ними что-то еще практически невозможно на однопроцессорной
системе. В случае же использования двух процессоров вы можете
не "идти пить кофе", а продолжать заниматься другими полезными
делами за компьютером. Хотя отдохнуть и попить кофе тоже
можно, однако при этом вы сможете, скажем, смотреть DVD (в
software decoding), забыв о том, что в это время как у вас
что-то компилируется, реэндерится и т.п.
Далее, двухпроцессорная система может быть
весьма полезна при применении приложений с поддержкой
многопоточности (Photoshop, 3DStudio MAX, различные CAD).
Однако в этом случае выигрыш в производительности будет не
столь велик, и нужно хорошенько подумать, а не лучше ли просто
поставить более мощный процессор? Правда, если у вас и так
стоит какой-нибудь 1ГГц Pentium III - то тут для существенного
увеличения производительности нужен второй процессор.
Теперь несколько слов о выборе материнской
платы. Собственно на данный момент, выбор ограничивается
платами на чипсетах Intel 440BX и Via Apollo Pro133A
(остальные решения мы не рассматриваем ввиду их стоимости). У
каждого из вариантов есть свои преимущества и недостатки.
Основные недостатки BX - отсутствие поддержки AGP 4х,
UltraATA66/100 (легко устраняется путем установки внешнего
контроллера), также официально не поддерживается частота шины
133МГц.
Via Apollo Pro133A лишен всех этих
недостатков и платы на его основе стоят дешевле, чем на BX.
Однако по сравнению с BX этот чипсет хуже работает с памятью.
На некоторых приложениях системы на основе BX в режиме 100/100
(memory/FSB) работают быстрее чем на Apollo Pro133A в режиме
133/133 (при одинаковой частоте процессора).
Нужно сказать что очень скоро доступных
двухпроцессорных чипсетов станет больше - выйдут AMD 760MP,
Apollo Pro266, которые будут лишены многих недостатков
нынешних чипсетов.
Так что думайте сами, решайте сами…
Выражаем благодарность компаниям K-Trade и
Entry,
предоставившим для тестирования материнские платы Soltek
SL-68A и Tyan Tiger 133 (S1834). Также благодарим компании Asbis
Украина и Астат за дополнительное оборудование,
предоставленное для проведения испытаний.