В тестовой лаборатории «КомпьютерПресс» проведено тестирование четырех серверов начального уровня для рабочих групп: HP NetServer LC2000; IBM Netfinity 3500 M10; Dell PowerEdge 2450; NORD LA и одного сервера среднего уровня NORD CC на предмет выяснения производительности при использовании их в качестве файловых серверов и серверов приложений.
Серверы для рабочих групп
Методика проведения тестирования
Критерии отбора
Для тестирования были выбраны серверы производства ведущих фирм: Hewllet-Packard (NetServer LC2000), IBM (Netfinity 3500 M10), Dell Computer (Dell PowerEdge 2450). Кроме того, один из протестированных нами серверов, а именно Nord LA производства «Норд Компьютерз», был построен на серверной платформе Intel. Отметим, что фирма «Норд Компьютерз» является авторизованным поставщиком решений Intel (Intel Autorized Solution Provider, IASP).
Кроме серверов начального уровня для сравнения был протестирован сервер среднего уровня NORD CC производства «Норд Компьютерз».
Введение
Тестирование серверов является очень непростой задачей, поскольку, в отличие от других сетевых устройств, они выполняют не какую-то одну конкретную функцию, а решают множество задач, порой взаимоисключающих. Если сервер используется в качестве файл-сервера, то максимальная производительность требуется от системы ввода-вывода, на нее же ложится и основная нагрузка. Требованиям, предъявляемым при этом к вычислительной подсистеме (процессор и память), способен удовлетворять даже i486, что подтверждается успешной эксплуатацией серверов под управлением ОС NetWare. В случае же использования сервера в качестве платформы для приложений типа «клиент-сервер» основная нагрузка падает на вычислительную подсистему, при этом требования к подсистеме ввода-вывода невысоки, так как по сети передаются сравнительно короткие запросы и обычно столь же короткие ответы, а основная работа проделывается вычислительной подсистемой самого сервера. Кроме того, такой подход позволяет сэкономить при покупке сервера, то есть приобрести, например, для выполнения функций файл-сервера недорогой сервер начального уровня и внешний RAID-массив.
Наиболее распространенными ПО для тестирования серверов являются пакеты ServerBench, NetBench и WebBench разработки фирмы Ziff-Davis.
Пакет ServerBench предназначен для тестирования серверов в режиме имитации работы приложений типа «клиент-сервер», например SQL-сервер, MS Access или MS Exchange. Этот пакет предназначен для тестирования в режиме приложений типа «клиент-сервер» и на практике проявил себя более чем удовлетворительно. Для снижения стоимости тестирования на каждом из физических компьютеров-клиентов может быть установлено несколько имитаторов клиентов (логических клиентов), каждый из которых генерирует свой собственный трафик и представляется серверу как отдельный клиент.
На каждом из компьютеров, подключенных к локальной сети, устанавливается клиентское ПО, позволяющее имитировать работу одного или нескольких логических клиентов. Один компьютер используется в качестве контроллера, управляющего работой всей системы и собирающего статистику. На сервере устанавливается серверная часть тестового пакета, обслуживающая клиентов и передающая статистику на компьютер-контроллер. Тестирование сервера происходит в стрессовом режиме, то есть каждый логический клиент имитирует деятельность нескольких десятков клиентов, подавая запросы в темпе, недоступном нормальному человеку.
Пакет NetBench, к сожалению, не проявил «готовности к сотрудничеству», что выразилось в зависании при попытке установить более одного клиента на компьютер. Легко сказать: «А вы заведите компьютер для каждого клиента», (но именно это мы и намереваемся сделать к следующему тестированию серверов). Поэтому в тестовой лаборатории «КомпьютерПресс» был разработан специальный пакет для сетевого тестирования серверов, работающих в режиме файл-сервера.
Пакет предназначен для генерирования максимального трафика, на который способны компьютер и его операционная система.
Методика проведения тестирования
В качестве локальной сети для проведения тестирования была выбрана наиболее популярная на сегодняшний день сеть Fast Ethernet, состоящая из девяти рабочих станций с операционной системой Microsoft Windows 98 SE, сервера с операционной системой Microsoft Windows NT Server 4.0 (SP 6) и коммутатора Intel Express 510T. На всех рабочих станциях были установлены одинаковые сетевые адаптеры IntelPRO/100+ Management Adapter на базе чипа 82559, а использование кабеля категории CAT5 позволило создать сеть 100Base-TX c полнодуплексным режимом работы. Характеристики рабочих станций приведены в табл. 1.
Диаметр сети, то есть максимальное расстояние между рабочими станциями и сервером, не превышало 5-6 м, поэтому задержка в распространении сигнала определялась лишь коммутатором. Преимущество использования коммутатора вместо концентратора при проведении тестирования далеко не очевидно, поскольку при проведении тестов все клиентские компьютеры устанавливают логические соединения только с сервером и образование виртуальных каналов в сети невозможно. Использование концентратора вместо коммутатора сохраняет классический подход к рассмотрению множественного доступа, определяя в качестве домена коллизий всю локальную сеть. В ходе тестирования было установлено, что использование и коммутатора, и концентратора приводит к одним и тем же результатам. Это связано с малым диаметром сети, в результате чего задержки распространения сигнала минимальны, и поэтому вероятность возникновения коллизии в сети, построенной на основе концентратора, очень мала. Однако использование механизма саморегулирования потока за счет перехода клиентов в режим ожидания в сети, построенной на концентраторе, и механизм сдерживания потока, основанный на технологии Advanced Flow Control, в принципе приводят к одинаковому результату: если линия (порт) занята, то передача кадра откладывается.
Выбор в пользу коммутатора был сделан потому, что он позволяет отслеживать статистику на каждый порт и контролировать входящие и исходящие потоки кадров (packets per second, PPS), что крайне удобно при проведении теста, а также выяснить, насколько сетевой трафик отличается от скорости копирования.
Тестирование серверов на предмет выяснения их производительности при использовании в качестве серверов приложений проводилось с использованием пакета ServerBench version 4.1 компании Ziff- Davis, позволяющего измерять производительность серверов приложений, работающих в режиме «клиент-сервер». Пакет измеряет производительность сервера, используя ОС Windows клиентов, которые посылают серверу различные запросы, называемые транзакциями. Каждый клиент записывает время ожидания отклика на свой запрос, а также сколько всего транзакций выполнил сервер в ходе тестирования. По этим данным вычисляется производительность сервера, измеряемая в количестве транзакций в секунду (transactions per second, TPS). Программа теоретически поддерживает до 1000 клиентов, но для тестирования достаточно использовать 60. Столь малое количество клиентов объясняется тем, что каждый из них в стрессовом режиме позволяет нагрузить сервер. Поэтому каждый клиент, работая в таком режиме, эмулирует работу нескольких десятков реальных клиентов.
ServerBench позволяет измерять производительность сервера в целом, а также отдельно дисковой, сетевой и процессорной подсистем сервера. Сама подсистема состоит из двух частей. Первая часть подсистемы является программной (soft), а вторая определяется типом оборудования (hard). Вот почему скорость жесткого диска сама по себе ничего не говорит о производительности дисковой подсистемы.
Под дисковой подсистемой понимается: сам жесткий диск, контроллер диска, дисковый кэш и программное обеспечение (драйвер диска и файловая структура операционной системы). Тестирование дисковой подсистемы заключается в измерении производительности сервера при операциях последовательного чтения и записи, а также выборочного чтения и записи. ServerBench создает файлы данных на сервере. При тесте на чтение сервер читает данные из файла данных порциями последовательно, пока весь файл не будет прочитан. При тесте на выборочное чтение сервер читает данные порциями в произвольном порядке. При тесте на последовательную и выборочную запись сервер читает данные порциями, после чего перезаписывает их на прежнее место. В стандартном дисковом тесте d_60.tst используются операции чтения и записи в соотношении 3:1. Каждый дисковый тест читает и записывает 8 Кбайт данных фрагментами по 512 байт, 1, 2 или 4 Кбайт.
Процессорная подсистема состоит: из процессора (или процессоров), основной памяти RAM, внутреннего и внешнего кэша, кэш-контроллера и системной шины. При тестировании процессорной подсистемы сервера измеряется производительность сервера без операций ввода-вывода. Тест заключается в выполнении определенных общих инструкций: поиск данных, строковые операции, целочисленные арифметические операции, операции копирования и пр. Тест использует общие программные конструкции, такие как «If…Else», «Loop», вызов процедуры и т.д. При тестировании процессорной подсистемы использовался стандартный тест p_60.tst.
Сетевая подсистема включает в себя: оборудование сети (Ethernet, Token Ring), сетевой адаптер и его драйвер, стек сетевых протоколов (TCP/IP). Тестирование сетевой подсистемы определяет, насколько хорошо сетевая подсистема поддерживает транзакции клиентов. Эти тесты определяют производительность в направлениях «клиент-сервер» и «сервер-клиент». Тест сетевой подсистемы выполняется на транспортном уровне модели OSI. Следует отметить, что утилита ServerBench функционирует таким образом, чтобы исключить влияние сетевой подсистемы на получаемые результаты, то есть значительного влияния на результаты не оказывают ни характеристики сетевых карт, ни пропускная способность сети. Непосредственно же влияют на результат операции сетевого ввода-вывода. В реальных условиях на общую производительность системы влияют все указанные выше факторы, но утилита ServerBench минимизирует влияние тех факторов, которые прямо не связаны с работой сервера. При тестировании использовался стандартный тест сетевой подсистемы n_60.tst.
Стандартный тест sys_60.tst анализирует систему в целом. Он комбинирует тест процессора, дисковый тест и тест сетевой подсистемы так, чтобы это отвечало типичному приложению баз данных. В тесте для каждого клиента на сервере создаются файлы данных по 16 Мбайт, то есть всего создается 60 сегментов по 16 Мбайт, и все основные операции производятся именно с этими данными. Все сегменты данных были созданы на логическом диске сервера с файловой системой NTFS.
В полном соответствии с принципом работы сервера приложений все основные операции осуществляются на самом сервере. Программа, запускаемая на сервере, обеспечивает установку связи между клиентами и сервером, декодирует запросы клиентов, определяет, какие тесты нужно выполнить, выполняет необходимые тесты и посылает результаты обратно клиентам, комбинирует результаты и посылает их на контроллер.
На результаты теста в значительной мере влияют объем памяти, выделяемой ОС для кэширования диска, и размер файлов данных, создаваемых на сервере. Большой размер кэша может значительно уменьшить количество обращений к диску сервера. Поскольку процессор быстрее диска, то результат теста будет значительно выше в том случае, когда данные теста хранятся в кэше. Поэтому при уменьшении размера файлов данных на сервере возрастает производительность работы, так как файлы данных помещаются в кэш сервера.
В каждой серии тестов участвует некоторое количество клиентов. Каждый клиент посылает определенную транзакцию серверу, а сервер принимает транзакции от всех клиентов, выстраивая их в очередь в ожидании необходимого процессорного времени. Если количество клиентов велико, то очередь может быть значительной. Пока клиенты ожидают обработки своих транзакций, они запускают таймер и подсчитывают время обработки транзакций. Был произведен эксперимент по замеру производительности сервера с одним и двумя процессорами. Как и следовало ожидать, производительность двухпроцессорной системы приблизительно в два раза выше, чем однопроцессорной.
Тестирование серверов для выяснения их производительности при использовании в качестве файловых серверов проводилось с использованием программы NetTest, разработанной в тестовой лаборатории «КомпьютерПресс» (автор С.Пахомов). Эта программа предназначена для тестирования производительности файловых серверов. Основные функции файлового сервера заключаются в передаче файлов, их хранении, переносе данных, синхронизации файлов при обновлении и архивировании файлов. Следовательно, можно сделать вывод, что основными операциями при работе с файловым сервером являются операции копирования файлов в направлениях «клиент-сервер» и «сервер-клиент».
Программа NetTest позволяет измерять производительность сервера при операциях копирования файлов в обоих указанных направлениях. Чтобы иметь возможность копировать файлы заданного размера, в программе предусмотрена возможность создания файлов заданного размера и типа.
Для тестирования сервера использовались: собственно сервер, клиентские компьютеры и компьютер, выполняющий функцию контроллера. На самом сервере, в отличие от пакета ServerBench, никакие программы не запускаются. Единственное назначение сервера — хранение файлов в совместно используемом каталоге, доступном всем клиентам и контроллеру. Сервер настраивается как файловый сервер в составе рабочей группы, и в разделяемом каталоге создается папка для хранения тестовых файлов. На всех клиентских компьютерах, контроллере и сервере устанавливался только сетевой протокол TCP/IP.
В идеальных условиях все клиентские компьютеры должны иметь одинаковую производительность и иметь одну и ту же операционную систему. Требование одинаковой производительности клиентских компьютеров необходимо выполнять в целях обеспечения равномерного увеличения нагрузки на сервер при увеличении числа логических соединений с клиентами.
На контроллере устанавливается программа controller.exe, которая производит синхронизацию в работе всех клиентов, обеспечивая синхронный запуск и остановку программ на клиентских компьютерах.
Размер копируемого файла подбирается так, чтобы при многократном копировании не происходило повышение скорости копирования за счет кэширования со стороны клиента. При копировании файла маленького размера реальное копирование происходит только в первой итерации, а в последующих скорость копирования резко увеличивается, ибо копируемый файл размещается уже не на диске сервера, а в кэше клиента. Скорость копирования не соответствует реальному сетевому трафику (это можно проследить по мониторингу порта коммутатора) и определяет способность клиентского компьютера работать со своим собственным кэшем. Во избежание кэширования файлов со стороны клиента необходимо выбирать такой размер файла, чтобы он не мог разместиться в кэше, так как операционные системы Windows 98 и Windows NT не позволяют изменить размер кэша, отводя под него всю доступную оперативную память. Оптимальным является выбор размера файла равным размеру оперативной памяти клиентского компьютера. В нашем тестировании размер копируемого файла был равен 64 Mбайт.
Тестирование проводится в два этапа. На первом этапе определяется зависимость скорости копирования файла в направлении «сервер–клиент» от числа клиентов. Для этого копирование производится при одном подключенном клиенте, потом количество подключаемых клиентов увеличивается и снова производится копирование файла. Важно, чтобы сервер копировал один и тот же файл на все клиентские компьютеры. Каждый замер повторяется до тех пор, пока погрешность измерения не составит не более 2%.
Если для тестирования используются клиентские компьютеры с разной производительностью (что нежелательно), то для компенсации неравнозначности клиентов необходимо сначала подключать самых «слабых» клиентов, а потом более «сильных». Чтобы определить производительность каждого отдельного клиента, проводится тестирование сервера с каждым из клиентов по отдельности. По результатам скорости копирования составляется своеобразный рейтинг производительности клиентов, и увеличение числа подключенных клиентов при тестировании проводится в соответствии с этим рейтингом.
Если число подключенных клиентов невелико (один-три), то сетевой трафик определяется производительностью клиентов и возрастает пропорционально числу подключенных клиентов. Когда сетевой трафик достигает «насыщения» и перестает возрастать с увеличением числа клиентов, значение скорости копирования определяется производительностью сервера, а не клиентов. В этом режиме и сильные, и слабые клиенты получают примерно одинаковый трафик, то есть проявляется эффект самоусреднения производительности клиентов. Ясно, что если сначала подключать более слабых клиентов, а в режиме насыщения трафика подключать более сильных, то достигается равномерное увеличение нагрузки сервера.
При копировании одного и того же файла с сервера на все клиентские компьютеры файл целиком размещался в кэше сервера, поэтому при таком копировании дисковая подсистема сервера не задействована. Производительность сервера определяется его способностью работать с кэшем. Как и следовало ожидать, скорость копирования слабо зависит от объема оперативной памяти сервера (при условии, что памяти достаточно для размещения файла в кэше). Зависимость скорости копирования одного и того же файла от числа клиентов при различных объемах оперативной памяти сервера показана на рис. 1.
Если же копируется не один и тот же файл, а разные, то ситуация кардинально меняется. Каждому клиенту отводится свое место в оперативной памяти сервера, равное размеру копируемого файла. В случае если величина, равная числу клиентов, умноженному на размер соответствующего копируемого файла, меньше объема оперативной памяти сервера, все копируемые файлы размещаются в кэше сервера и скорость копирования велика, так как она определяется способностью сервера работать с кэшем. Если же количество клиентов таково, что копируемые файлы не размещаются в оперативной памяти, то скорость копирования резко снижается, поскольку определяется производительностью дисковой подсистемы сервера.
На рис. 2 показана зависимость скорости копирования от числа клиентов при объеме оперативной памяти сервера 64 Mбайт — в случае копирования одного и того же файла размером 64 Мбайт на всех клиентов и в случае, когда копируются различные по названию, но одинаковые по размеру файлы на каждый клиентский компьютер. Видно, что при копировании одного и того же файла (размер файла равен размеру оперативной памяти сервера, и файл почти целиком расположен в кэше сервера) скорость копирования растет с ростом числа клиентов, достигая насыщения на восьмом клиенте. При копировании различных файлов насыщение наступает уже на втором клиенте, так как для размещения двух копируемых файлов в кэше потребовался бы объем памяти 128 Мбайт. При дальнейшем увеличении числа клиентов скорость копирования не меняется и определяется производительностью дисковой подсистемы сервера.
На рис. 3 показан график зависимости скорости копирования от числа клиентов при объеме оперативной памяти сервера 256 Мбайт. При копировании одного и того же файла производительность, как и в предыдущем случае, увеличивается с ростом числа клиентов. Если же копируются различные файлы одинакового размера, то производительность возрастает до тех пор, пока копируемые файлы могут быть размещены в оперативной памяти сервера. Учитывая, что копируемые файлы имеют размер 64 Мбайт, нетрудно подсчитать, что всего в оперативной памяти можно разместить четыре файла. Поэтому производительность возрастает только до четвертого клиента, после чего резко падает и уже не меняется с ростом числа клиентов, поскольку определяется дисковой подсистемой сервера.
На рис. 4 показана зависимость скорости копирования различных файлов от числа клиентов при различных объемах оперативной памяти сервера.
Количество установленных на сервере процессоров практически не сказывается на результатах.
На втором этапе определяется зависимость скорости копирования файлов в направлении «клиент-сервер». Сначала копирование производится при одном подключенном клиенте, потом количество клиентов последовательно увеличивается и копирование повторяется. Важно, чтобы все клиенты копировали на сервер разные по названию, но одинаковые по размеру и содержанию файлы. В противном случае произойдет конфликт одновременного доступа к файлу со стороны нескольких клиентов.
Если для тестирования используются клиентские компьютеры с разной производительностью, то, как и в случае копирования файлов в направлении «сервер-клиент», для компенсации неравнозначности клиентов необходимо сначала подключать самых слабых клиентов, а потом более сильных.
Если число подключенных клиентов невелико, то сетевой трафик определяется производительностью каждого клиента и возрастает пропорционально числу подключенных клиентов. Однако с ростом числа подключенных клиентов возрастает вероятность перехода клиента в режим ожидания и сетевой трафик насыщается. При дальнейшем увеличении числа подключенных клиентов сетевой трафик уменьшается за счет того, что вероятность перехода клиента в режим ожидания выше вероятности успешной передачи кадра (при использовании коммутатора в полнодуплексном режиме работы коллизии не возникают). Поскольку все клиенты имеют равные права на доступ к среде передачи данных, то с ростом вероятности перехода в режим ожидания скорость копирования сильных и слабых клиентов уменьшается непредсказуемо. При этом слабые клиенты могут иметь скорость копирования большую, чем сильные, и разница в производительности клиентов исчезает. Поэтому для равномерного увеличения нагрузки на сервер, целесообразно более сильных клиентов подключать в последнюю очередь.
Экспериментально было установлено, что в ситуации, когда количество клиентов равно семи и более, возрастает роль коллизий (в случае использования концентратора). Появляются клиенты, которые не могут получить доступа к шине вследствие коллизий, возникающих 16 раз подряд. Согласно стандарту Ethernet после 16 попыток подряд передать кадр на шину, контроллер прекращает передачу кадра. Это выражается в том, что в программе возникает ошибка доступа к серверу, и программа может прекратить процесс копирования. Чтобы этого не возникало, в программе предусмотрена рекуррентная процедура повторного доступа к серверу при возникновении ошибки доступа.
При копировании файлов в направлении «клиент-сервер» производительность сервера определяется в первую очередь объемом оперативной памяти сервера. Увеличение производительности будет происходить до тех пор, пока копируемые файлы могут быть размещены в оперативной памяти сервера. Следовательно, чем больше оперативной памяти установлено на сервере, тем большее количество клиентов сервер способен поддерживать, обеспечивая высокую скорость копирования.
На рис. 5 показаны графики зависимости скорости копирования файлов в направлении «клиент-сервер» от числа клиентов при различных объемах оперативной памяти сервера. Видно, что при объеме памяти в 64 Мбайт производительность сервера не увеличивается с ростом числа клиентов, так как определяется его дисковой подсистемой. При увеличении объема оперативной памяти сервера до 128 Мбайт сервер способен эффективно поддерживать лишь двух клиентов: 64 Мбайт x 2=128 Мбайт. Если объем оперативной памяти сервера 256 Мбайт, то скорость копирования возрастает до четвертого клиента: 64 Мбайт x 4=256 Мбайт.
Как и в случае копирования файлов в направлении «сервер-клиент», скорость копирования в направлении «клиент-сервер» практически не зависит от мощности процессорной подсистемы.
Обобщая все вышеизложенное, можно сделать однозначный вывод, что для файловых серверов производительность зависит в первую очередь от объема оперативной памяти сервера.