Тест скорости backup 2

kdv, iBase.ru, 01.12.2008

Как и было обещано в первой статье по тесту скорости backup, наконец-то тест повторен на компьютере с двухъядерным процессором. И если бы практически никаких отличий не было, то всего-лишь была бы обновлена оригинальная статья.

Начну с изменения конфигурации:

Тестовый стенд

Windows XP Professional SP3

AMD Athlon 64 x2 5200
MB MSI K9N Platinum
4GB RAM (в 32-разрядной Windows видно только 3.1 гигабайта)

Дисковая конфигурация практически не изменилась:
C: ST3160815AS (160GB), SATA II
D: ST3200827AS (200GB), SATA II
E: HDS728080PLA380 (82GB), SATA I

то есть, диски D и E остались на месте.

Участники теста

InterBase 7.5 за ненадобностью был выкинут, вместо него был протестирован Firebird 2.5 Alpha (сборки 21381 и 21487, показали одинаковый результат).

База данных и конфигурация

Опять та же база данных размером 2.7 гигабайт, в общем, все идентично предыдущему тесту.

Тест

Идентичный, т.е. проверка резервного копирования БД через локальный протокол, tcp, и Services API. Цель теста - сравнить поведение серверов при бэкапе на однопроцессорной и "двухпроцессорной" машине.

Результаты

Для наглядности приведу сначала картинку предыдущих результатов, на однопроцессорной машине:

А теперь - на двухъядерной:

К сожалению, по масштабу Excel не позволяет сделать идентичные картинки, но общие пропорции соблюдены.
Здесь можно заметить серьезное отличие: на двухъядерном процессоре локальный протокол медленнее чем tcp у Firebird 1.5 и InterBase 2007, причем локальный протокол не просто медленнее tcp, а почти на 20-30% хуже "самого себя" на однопроцессорной машине.

Этому феномену, буквально "среднему пальцу" на графиках, я пока объяснения не нахожу. Вернее, объяснить можно только то, что замедление одинаковое у FB 1.5 и IB 2007 - они оба используют "классический старый локальный протокол", в то время как локальный протокол в Yaffil и Firebird 2.x реализован по другому.

С Yaffil тоже случилась странность. Он, конечно, опять всех жестоко побил - процессор-то более быстрый -, но вот локальный протокол у него сработал на двухъядерной машине лучше, чем собственный Services API.

У Firebird 2.1 и 2.5 паритет. В 2.5 относительно 2.1 локальный протокол стал лучше, а tcp - хуже, и они как бы словно поменялись местами.

В целом тест на двухъядерной машине однозначно опровергает тест на одноядерной - backup по tcp происходит практически в 2 раза быстрее, и почти не уступает скорости локального протокола (кроме FB 1.5 и IB 2007, у которых tcp тоже получается в 2 раза быстрее локального протокола на той же двухъядерной машине).

Чтобы попытаться понять, где проблема, я снял несколько скриншотов с PerfMon.

TCP (localhost) Firebird 1.5.
График кажется мешаниной, поэтому пояснения:
синий - gbak.exe
зеленый - fbserver.exe
красный - общая загрузка обоих ядер
"морской" - загрузка ядра 1
"черный" - загрузка ядра 2
коричневый и ярко-синий внизу экрана - скорость записи и чтения с двух физ. дисков.

Для упрощения в тесте под диском D: имеется в виду физический диск 1, а под диском E: - физический диск 2. Операционная система находится на физическом диске 0 (C:).

 

 

 

 

 

 

Локальный протокол, Firebird 1.5
Казалось бы, та же самая мешанина, но при этом средняя загрузка процессора на уровне 40%, а не 80%, как у tcp.

 

 

 

 

 

 

 

 

 

 

Services API, Firebird 1.5
Тут все ясно и нормально. Сервер сам делает бэкап, поэтому gbak никак не загружает никакое ядро. А fbserver сам почти полностью загружает одно из ядер.
Правда, не удалось понять в TaskManager чем же загружено второе ядро на уровне 17-20%. Никакие другие процессы в это время не работали.

 

 

 

 

 

 

 

 

 

TCP (localhost), Firebird 2.1 (примерно то же самое и у Firebird 2.5)

Такой мешанины как у FB 1.5 нет. Явно видно что fbserver и gbak "более четко" грузят ядра. Причем если у FB 1.5 нагрузка на второе ядро gbak-ом была выше, то здесь она явно ниже (размещение синих и черных линий)

 

 

 

 

 

 

 

 

 

Локальный протокол, Firebird 2.5 (примерно то же самое и у FB 2.1)
Не то чтобы "никакой мешанины как в FB 1.5", но даже по сравению с предыдущим графиком совершенно четкая загрузка ядер gbak и fbserver.

 

 

 

 

 

 

 

 

 

 

Резюме

Несмотря на то, что на тест было потрачено около 8-ми часов, и для некоторых серверов тест повторялся по 3 и даже 4 раза, остались сомнения - уж больно результат неожиданный. Поэтому повторение теста на ваших системах, и опровержение и подтверждение - приветствуется. Пишите на support@ibase.ru.


(с) iBase.ru, 2007