Отработка методики тестирования серверов, часть вторая

Тест OSDL-DBT-2

В этой статье мы продолжаем знакомится с серверными тестами OSDL Database Test Suite. от Open Source Development Lab, начатое в первой статье цикла. Сегодня подробно остановимся на тесте OSDL-DBT-2.

Пакет тестов OSDL Database Test 2 (OSDL-DBT-2) имитирует оперативную обработку транзакций (OLTP) с помощью базы данных с открытым исходным кодом (SAP DB) и набора определенных транзакций. OSDL-DBT-2 является производной тестовых спецификаций TPC-C.

Краткое описание набора тестов TPC-C

TPC-C представляет активность базы данных любой компании, которая продает и распространяет продукты или услуги. Например, агентства аренды машин, развоза продуктов питания или поставщика запасных частей. Данная бизнес-модель имитирует оптового поставщика запасных деталей, имеющего ряд складов и соответствующих им районов продаж. Каждый склад имеет 10 районов продаж, а каждый район обслуживает 3000 покупателей. Пользователь, живущий в одном из районов продаж, может в любое время выбрать одну из пяти операций, предоставляемых системой заказов: ввести новые заказы, доставка заказов, отслеживание платежей, проверка состояния заказов или отслеживание количества товара на определенном складе.

Наиболее часто используемая транзакция состоит из ввода нового заказа, состоящего, в среднем, из 10 единиц товара. Каждый склад может хранить до 100,000 единиц, расходуемых на заказы. Для имитации реалистичных событий, например, отсутствия товара на складе, тест TPC-C требует поставок товара для 10% всех заказов с другого склада (т.е. для 10 процентов всех заказов товара на исходном складе нет).

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

Уровень пропускной способности зависит от активности пользователей, инициирующих транзакции. Для каждого склада имитируется работа 10 терминалов доступа к БД. Конечная пропускная способность теста напрямую связана с числом складов, указанных в БД. Для обеспечения необходимых транзакций в течение теста используется эмулятор удаленного терминала (RTE). Смесь транзакций представляет полную обработку заказа, включая ввод, оплату, проверку и доставку. Основной мерой теста TPC-C является количество транзакций ввода новых заказов в минуту - tpmC.

TPC-C поддерживает 5 транзакций различной сложности, которые испытывают способность БД поддерживать целостность данных, осуществляя доступ к информации различного объема и управляя конфликтами при доступе к ней и ее обновлении. Транзакции называются

  • New-Order;
  • Payment;
  • Order-Status;
  • Delivery;
  • Stock-Level

Подробнее о TPC-C можно почитать на сайте компании.

OSDL-DBT-2

OSDL-DBT-2 является производной TPC-C для создания реалистичной нагрузки OLTP (сходной с той, что создает TPC-C) без сложностей и затрат, сопутствующих тестам TPC.

Основной мерой OSDL-DBT-2 является количество транзакций ввода новых заказов «New-Order», исполняемых в секунду, выражаемое в BT-2 («фиктивных транзакциях-2»). Однако BT-2 нельзя сравнивать со значениями tpmC, т.к. DBT-2 лишь похож на TPC-C, но не повторяет его полностью.

Архитектура OSDL DBT2

Данный пакет состоит из трех основных компонентов, изображенных на Рис.1:

  • базы данных;
  • эмуляторов удаленных терминалов;
  • клиентов


На Рис.1 показаны компоненты OSDL-DBT-2.

При этом множество терминалов может быть соединено с множеством концентраторов, соединенных, в свою очередь, с единой БД. О каждом компоненте будет рассказано ниже.

База данных

База данных состоит из 9 таблиц с хранимыми процедурами (пока только для SAP DB) с поддержкой 5 транзакций. Данные представляют оптового поставщика запасных частей, работающего в ряде районов продаж, к которым прикреплены склады. БД можно масштабировать под любое число складов для имитации различных по величине компаний. По умолчанию, склад работает с 10 районами, каждый район обслуживает 3000 покупателей, запас деталей на складе составляет 100000 единиц. OSDL-DBT-2 позволяет масштабировать оставшуюся часть БД по усмотрению пользователя. Поддерживаются 5 транзакций:

  • New-Order;
  • Payment;
  • Order-Status;
  • Delivery;
  • Stock-Level

Транзакция «New-Order» является средней по ресурсоемкости и включает операции чтения из и записи в одну БД. Она отражает интерактивную работу БД, типичную для производственных сред. Транзакция осуществляет от 7 до 17 выборок строк, от 6 до 16 выборок строк с обновлениями, от 7 до 17 вставок строк и исполняется 45 процентов времени.

Транзакция «Payment« используется нечасто, включая операции чтения из и записи в БД, обновляющие баланс покупателя и отражающая платежи в статистике по районам и скаладам. Транзакция осуществляет в среднем 2 выборки строк, 6 выборок строк с обновлениями, 2 вставки строк и исполняется 43 процента времени.

Транзакция «Order-Status» является средней по ресурсоемкости и включает операцию чтения из БД, запрашивающую состояние последнего заказа покупателя. Транзакция осуществляет 2 выборки строк, от 9 до 19 выборок строк с обновлениями и исполняется 4 процента времени.

Транзакция «Delivery» обрабатывает до 10 новых заказов. Она осуществляет 2 выборки строк, от 6 до 16 выборок строк с обновлениями, одно удаление строки и исполняется 4 процента времени.

Транзакция «Stock-Level» является ресурсоемкой, включает операцию чтения из БД, определяющую количество недавно проданных единиц товара, количество которых на складе ниже порогового. Транзакция осуществляет до 900 выборок строк и исполняется 4 процента времени.

Эмуляторы удаленных терминалов

Эмулятор удаленного терминала (RTE) имитирует активность человека, использующего терминал для инициирования 1 из 5 транзакций, поддерживаемых БД. RTE подсоединяется к клиентской системе для доступа к БД по трехуровневой модели. RTE также может контролироваться внешним процессом, т.е. отслеживающей программой, управляющей драйверами на множестве систем.

RTE является многопоточной программой, каждый поток которой представляет один терминал, осуществляющий доступ к БД. Для каждого склада имитируются 10 терминалов. Каждый терминал записывает каждую попытку взаимодействия и время с момента отсылки запроса до момента получения отклика.

Клиенты

Клиенты представляют собой концентраторы терминалов, позволяющие нескольким терминалам использовать одно соединение к БД. Клиентская программа запускает процесс-слушатель для обработки запросов терминалов и использует пул потоков для обработки запросов транзакций. Для каждого терминала, соединяющегося с клиентом, создается новый поток.

Методика тестирования тестом OSDL-DBT-2

В качестве тестового стенда был использован сервер, любезно предоставленный фирмой ISM Computers со следующими характеристиками:

  • Dual Pentium 4 XEON 2.4 ГГц с технологией HT (HT включен);
  • 2 Гб DDR266 ECC ОЗУ;
  • Материнская плата — ASUS PP-DLW на чипсете Intel E7505;
  • Dual Ultra160 SCSI RAID контроллер Intel SRC32U cо 128 МБ ECC SDRAM кеша;
  • 74 Гб общий объем дискового пространства — 3× Cheetah 15K.3 (ST336753LC с интерфейсом Ultra320 SCSI объемом 37 Гб) в RAID5;
  • Сетевой контроллер — Intel 82540 Gigabit Ethernet (интегрированный);
  • ATI Radeon 9800Pro;
  • TDK 440N DVD-R/RW для бекапов;
  • Asus 52× CD-Rom

Вообще говоря, такой компьютер позицируется в качестве мощной графической станции, но мы его используем в качестве серверного стенда для отработки методики. В конце цикла статей этот компьютер будет рассмотрен более подробно уже на отработанной методике тестирования серверов.

Дисковое пространство делится на четыре раздела

  • Linux SWAP размером 5 Гб;
  • Два Linux раздела, каждый по 10 Гб
  • Корневой раздел в формате EXT3 — все остальное доступное пространство

На сервер устанавливается RedHat Linux 7.3 (с версией 9.0 используемая версия SAP DB базы, рекомендуемая разработчиками OSDL тестов, работает некорректно).

Собирается ядро 2.4.21 (полный конфиг ядра) с активированными опциями в Processor type and features

  • (Pentium-4) Processor family
  • (4GB) High Memory Support
  • [*] HIGHMEM I/O support
  • [*] MTRR (Memory Type Range Register) support
  • [*] Symmetric multi-processing support

Из RPM-пакетов устанавливается SAP DB версии 7.3.0.25, все ее настройки остаются по умолчанию.

Далее разархивируется и собирается DBT-2 тест (версии 0.15) с поддержкой SAP DB базы (под PostgreSQL тест портирован лишь частично).

Далее создается исходные базы для БД с параметрами

  • Количество складов (warehouses) — 100;

Общий размер базы данных при вышезаданных параметрах получается около 7 гигабайт.

Так же задаются параметры для ядра SAP DB, такие как

  • DATA_CACHE

    Максимальный размер shared памяти в 8 Кб страницах, используемый при запросах к данной базе и для ядра SAP DB. Необходимо выделять как можно больший объем памяти, но не более, чем доступный размер ОЗУ на тестируемом компьютере. При тестировании были использованы значения 150000, 200000, 250000, 300000

  • MAXUSERTASKS 32

    Количество одновременных соединений с БД. Значение по умолчанию.

  • MAXCPU

    Максимальное количество процессоров, которое может задействовать ядро БД при обработке запросов. Были использованы значения 2 и 4

Для ускорения доступа, создаются два RAW устройства
/usr/bin/raw /dev/raw/rawX /dev/sdaX
Устройства используются для хранения данных базы и лог-файлов.

Строка запуска скрипта на генерацию базы:
./db_setup.sh 100 /home/sapdb/dbt2/tmp/

После окончания генерации, тест запускается на выполнение (на 45 минут) со следующими параметрами:

  • WAREHOUSES=100
  • DRIVERS=8

    количество запускаемых RTE

  • SPREAD=2

    каждый RTE обращается к двум складам (warehouses)

В данном случае был использован кэшируемый вариант теста. Т.е. драйвера (RTE) обращаются только к части базы данных (каждый из 8 драйверов обращается к двум складам). Существует так же некешируемый вариант теста, запускающий 16 драйверов и использующий 96 складов из 100 (по 6 на каждый драйвер), но с его запуском возникли временные трудности. Второй вариант не помещается полностью в оперативную память, поэтому вырастает количество I/O операций к файлам данных, а количество транзакций в секунду не увеличивается, по сравнению с первой моделью.

После окончания теста и перед началом нового, база данных восстанавливается из бекапов.

Результаты

OSDL DBT-2 выдает довольно много результатов, но основным показателем является количество NOTPM (new-order transactions per minute). В данном случае наилучший результат получился при MAXCPU = 4 и DATA_CACHE = 250000. Transaction % Avg Response Time (s) Total Rollbacks % delivery 4.02 0.492 6871 0 0.00 new-order 44.76 0.270 76527 0 0.00 order-status 4.02 0.269 6870 0 0.00 payment 43.07 0.199 73648 0 0.00 stock-level 4.14 0.252 7072 0 0.00 1699.34 new-order transactions per minute (NOTPM) 45.0 minute duration 0 total unknown errors

Кроме NOTPM, существует довольно много отчетов по памяти, дисковой подсистеме, процессору.

Текстовые отчеты при MAXCPU = 2
Текстовые отчеты при MAXCPU = 4
Диаграммы

В данном случае процессоры опять таки были загружены не полностью (особенно загадочно выглядит спад производительности ~20 минуте). Видимо, параметры теста были подобраны не идеально.

 

Особая благодарность Cormac за помощь с переводом спецификаций.

 

Сервер для тестирования предоставлен компанией «ISM»

 




31 августа 2003 Г.

, . OSDL-DBT-2

,

OSDL-DBT-2

OSDL Database Test Suite. Open Source Development Lab, . OSDL-DBT-2.

OSDL Database Test 2 (OSDL-DBT-2) (OLTP) (SAP DB) . OSDL-DBT-2 TPC-C.

TPC-C

TPC-C , . , , . - , . 10 , 3000 . , , , : , , , .

, , , 10 . 100,000 , . , , , TPC-C 10% (.. 10 ).

. , .

, . 10 . , . (RTE). , , , . TPC-C - tpmC.

TPC-C 5 , , .

  • New-Order;
  • Payment;
  • Order-Status;
  • Delivery;
  • Stock-Level

TPC-C .

OSDL-DBT-2

OSDL-DBT-2 TPC-C OLTP ( , TPC-C) , TPC.

OSDL-DBT-2 «New-Order», , BT-2 (« -2»). BT-2 tpmC, .. DBT-2 TPC-C, .

OSDL DBT2

, .1:

  • ;
  • ;



.1 OSDL-DBT-2.

, , , . .

9 ( SAP DB) 5 . , , . . , 10 , 3000 , 100000 . OSDL-DBT-2 . 5 :

  • New-Order;
  • Payment;
  • Order-Status;
  • Delivery;
  • Stock-Level

«New-Order» . , . 7 17 , 6 16 , 7 17 45 .

«Payment« , , . 2 , 6 , 2 43 .

«Order-Status» , . 2 , 9 19 4 .

«Delivery» 10 . 2 , 6 16 , 4 .

«Stock-Level» , , , . 900 4 .

(RTE) , 1 5 , . RTE . RTE , .. , .

RTE , , . 10 . .

, . - . , , .

OSDL-DBT-2

, ISM Computers :

  • Dual Pentium 4 XEON 2.4 HT (HT );
  • 2 DDR266 ECC ;
  • — ASUS PP-DLW Intel E7505;
  • Dual Ultra160 SCSI RAID Intel SRC32U c 128 ECC SDRAM ;
  • 74 — 3× Cheetah 15K.3 (ST336753LC Ultra320 SCSI 37 ) RAID5;
  • — Intel 82540 Gigabit Ethernet ();
  • ATI Radeon 9800Pro;
  • TDK 440N DVD-R/RW ;
  • Asus 52× CD-Rom

, , . .

  • Linux SWAP 5 ;
  • Linux , 10
  • EXT3 —

RedHat Linux 7.3 ( 9.0 SAP DB , OSDL , ).

2.4.21 ( ) Processor type and features

  • (Pentium-4) Processor family
  • (4GB) High Memory Support
  • [*] HIGHMEM I/O support
  • [*] MTRR (Memory Type Range Register) support
  • [*] Symmetric multi-processing support

RPM- SAP DB 7.3.0.25, .

DBT-2 ( 0.15) SAP DB ( PostgreSQL ).

  • (warehouses) — 100;

7 .

SAP DB,

  • DATA_CACHE

    shared 8 , SAP DB. , , . 150000, 200000, 250000, 300000

  • MAXUSERTASKS 32

    . .

  • MAXCPU

    , . 2 4

, RAW
/usr/bin/raw /dev/raw/rawX /dev/sdaX
-.

:
./db_setup.sh 100 /home/sapdb/dbt2/tmp/

, ( 45 ) :

  • WAREHOUSES=100
  • DRIVERS=8

    RTE

  • SPREAD=2

    RTE (warehouses)

. .. (RTE) ( 8 ). , 16 96 100 ( 6 ), . , I/O , , .

, .

OSDL DBT-2 , NOTPM (new-order transactions per minute). MAXCPU = 4 DATA_CACHE = 250000.

Transaction       %  Avg Response Time (s)        Total  Rollbacks      %
delivery       4.02                  0.492         6871          0   0.00
new-order     44.76                  0.270        76527          0   0.00
order-status   4.02                  0.269         6870          0   0.00
payment       43.07                  0.199        73648          0   0.00
stock-level    4.14                  0.252         7072          0   0.00

1699.34 new-order transactions per minute (NOTPM)
45.0 minute duration
0 total unknown errors

NOTPM, , , .

MAXCPU = 2
MAXCPU = 4

( ~20 ). , .

 

Cormac .

 

«ISM»