Дата публикации: 12.02.2024

Релиз IBProvider v5.35 и большое тестирование с FB4

Мы рады представить новый релиз нашего OLE DB провайдера для Firebird и InterBase, который прошел не только обязательно штатное нагрузочное тестирование, но и большое тестирование с Firebird v4, которое длилось больше месяца. Это более 7 миллионов тестов, выполняемых параллельно на десятиядерном процессоре.

IBProvider v5.35

В новой версии провайдера была улучшена внутренняя инфраструктура — теперь отмена выполенения запроса распространяется и на операции с BLOB.

Большое тестирование c FB4

Последний раз большое тестирование выполнялось 3 года назад с Firebird v3.0.8.33401.

В целом большое тестирование прошло на отлично, за исключением того, что принудительной сборки мусора один раз в час оказалось недостаточно – файл базы данных «съел» почти все место на тестовом разделе (71GB из 80GB) и для некоторых тестов не хватило свободного места. В конце тестирование принудительная сборка мусора запускалась уже раз в 5 минут.

Так что, это было не только нагрузочное тестирование, но и, отчасти, стрессовое.

Оборудование

  • Intel CPU, 10 cores
  • RAM 128 GB (80 GB использовано под RAM диск)
  • Системный диск: Samsung SSD 970 Pro 1TB
  • Windows 10 Pro

Сервер

  • Firebird 4.0.5.3033 (Windows, x64, Super Server)
  • Прямое подключение (fb.direct) через TCP/IP

База данных

  • Диалект 3
  • Размер страницы: 16KB
  • Сборка мусора 1 раз в час. В конце тестирования – каждые 5 минут.

Компоненты

  • IBProvider v5.35.0.46901 (x64, vc17)
  • LCPI OLE DB Services v1.22.4.1250 (x64, vc17)
  • LCPI Easy COM

Результаты

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

Параметр Большое тестирование Стандартное тестирование Стандартное тестирование
Способ подключения fb.direct fb.direct fbclient.dll
Количество потоков 10 10 10
Время выполнения
REAL Time 341 day(s)10:32:00 4 day(s) 14:59:16 4 day(s) 17:22:05
CPU User Time 52 day(s)18:15:51 1 day(s) 05:24:28 1 day(s) 13:06:08
CPU Kernel Time 46 day(s)05:37:42 11:44:22 11:47:47
CPU Total Time 98 day(s)23:53:33 1 day(s) 17:08:50 2 day(s) 00:53:55
Состояние процесса после завершения тестирования (после выгрузки всех тестируемых модулей)
PRIVATE BYTES 31MB 328KB 27MB 768KB 519MB 772KB
PEAK PRIVATE BYTES 12GB 228MB 508KB 12GB 490MB 240KB 12GB 568MB 404KB
VIRTUAL SIZE 4GB 291MB 292KB 4GB 386MB 164KB 4GB 880MB 716KB
HANDLES 178 174 252
Тесты
Общее количество 7 104 702 751 898 751 910
Успешно 7 104 590 751 838 751 848
С ошибками 57 0 5
С предупреждениями 55 60 57

Как видите, состояние процесса после большого тестирования практически идентично состоянию после штатного тестирования с использованием прямого подключения и гораздо лучше штатного тестирования с использованием fbclient.dll.

Сведения из лога

Process ID: 59316

[TEST HEAP] Initialize ... OK

[25.12.2023 11:41:32] [ExecuteTests] CommandLine:

target\vs2022-x64-Release-easycom\ibp_oledb_test-vc17_x64_Release.exe  /thread_count 10 /log_file_prefix fb40-fb.direct-ram_w64_d3 /log_dir ..\_log\all\ /new_db_location "inet4://localhost:3070/d:\Database\Ram\FB40_PORT3070\" /cn_str "provider=LCPI.IBProvider.5.Private.vc17.release;location=inet4://localhost:3070/d:\Database\Ram\FB40_PORT3070\ibp_test_fb40_d3_all.gdb;user id=GAMER;password=vermut;ctype=win1251;temp_file_dir=d:\database\ram\temp;dbclient_type=fb.direct;icu_library=icuuc63.dll;icuin_library=icuin63.dll;wchars_in_utf8_symbol=2;sql_cache__scope=cn" /oledb_svc_cmp "LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.release" /test *

[25.12.2023 11:41:32] [ExecuteTests] Test Mask  : [*]

[25.12.2023 11:41:32] [info] Provider DLL    :lcpi.ibprovider-v5_vc17_w64_prof_i.dll
[25.12.2023 11:41:32] [info] Provider Version:5.35.0.46901
[25.12.2023 11:41:32] [info] Server Name     :Firebird
[25.12.2023 11:41:32] [info] Server Version  :4.0.5.3033
[25.12.2023 11:41:32] [info] Client Name     :LCPI.IBProvider.RemoteFB
[25.12.2023 11:41:32] [info] Client Version  :5.35.0.46901
[25.12.2023 11:41:32] [info] Database ODS    :13.0
[25.12.2023 11:41:32] [info] Database Dialect:3
[25.12.2023 11:41:32] [info] ConnectionString:

provider=LCPI.IBProvider.5.Private.vc17.release;location=inet4://localhost:3070/d:\Database\Ram\FB40_PORT3070\ibp_test_fb40_d3_all.gdb;user id=GAMER;password=vermut;ctype=win1251;temp_file_dir=d:\database\ram\temp;dbclient_type=fb.direct;icu_library=icuuc63.dll;icuin_library=icuin63.dll;wchars_in_utf8_symbol=2;sql_cache__scope=cn

[25.12.2023 11:41:32] [ExecuteTests] 
[25.12.2023 11:41:32] [ExecuteTests] Enter [cancel] for interrupt execution
[25.12.2023 11:41:32] [ExecuteTests] 
[25.12.2023 11:41:32] Creation 10 thread(s)...
…
[29.01.2024 01:09:57] [summary] ------------------------------------------- [SUMMARY INFORMATION]
[29.01.2024 01:09:57] [summary] [TESTS]
[29.01.2024 01:09:57] [summary] EXECUTED      : 7104702
[29.01.2024 01:09:57] [summary] SUCCEEDED     : 7104590
[29.01.2024 01:09:57] [summary] FAILED        : 57 [ 317 error(s) ]
[29.01.2024 01:09:57] [summary] WITH WARNINGS : 55 [ 76 warning(s) ]
[29.01.2024 01:09:57] [summary] 
[29.01.2024 01:09:57] [summary] - - - - - - - - - - - - - - - - - - - - - -
[29.01.2024 01:09:57] [summary] [TEST TIMES]
[29.01.2024 01:09:57] [summary] REAL          : 295003204787522 [341 day(s)10:32:00.4787522]
[29.01.2024 01:09:57] [summary] USER          : 45585512343750 [52 day(s)18:15:51.2343750]
[29.01.2024 01:09:57] [summary] KERNEL        : 39946624375000 [46 day(s)05:37:42.4375000]
[29.01.2024 01:09:57] [summary] TOTAL         : 85532136718750 [98 day(s)23:53:33.6718750]
[29.01.2024 01:09:58] 
[29.01.2024 01:09:58] [TEST HEAP] Test heap is empty
[29.01.2024 01:09:58] [TEST HEAP] Validate ... OK
[29.01.2024 01:09:58] [TEST HEAP] Destroy ... OK
[29.01.2024 01:09:58] 
[29.01.2024 01:09:58] [summary] ------------------------------------------- [PROCESS INFORMATION]
[29.01.2024 01:09:58] [summary] [VIRTUAL MEMORY]
[29.01.2024 01:09:58] [summary] 
[29.01.2024 01:09:58] [summary] PRIVATE BYTES      : 32072 KB       [31MB 328KB]
[29.01.2024 01:09:58] [summary] PEAK PRIVATE BYTES : 12816892 KB    [12GB 228MB 508KB]
[29.01.2024 01:09:58] [summary] VIRTUAL SIZE       : 4492580 KB     [4GB 291MB 292KB]
[29.01.2024 01:09:58] [summary] PAGE FAULT COUNT   : 1603260993
[29.01.2024 01:09:58] [summary] 
[29.01.2024 01:09:58] [summary] - - - - - - - - - - - - - - - - - - - - - -
[29.01.2024 01:09:58] [summary] [HANDLES]
[29.01.2024 01:09:58] [summary] 
[29.01.2024 01:09:58] [summary] HANDLES            : 178
[29.01.2024 01:09:58] [summary] 
[29.01.2024 01:09:58] [summary] - - - - - - - - - - - - - - - - - - - - - -
[29.01.2024 01:09:58] [summary] TOTAL ERRORS  : 317
[29.01.2024 01:09:58] [summary] TOTAL WARNINGS: 76
[29.01.2024 01:09:58] [summary] FULL PASSES   : 1
[29.01.2024 01:09:58] [summary] GEN TESTS     : 8341521

Статистика базы данных

Database "D:\DATABASE\RAM\FB40_PORT3070\IBP_TEST_FB40_D3_ALL.GDB"
Gstat execution time Mon Jan 29 08:07:34 2024

Database header page information:
        Flags                   0
        Generation              63033027
        System Change Number    0
        Page size               16384
        ODS version             13.0
        Oldest transaction      63009763
        Oldest active           63009764
        Oldest snapshot         63009764
        Next transaction        63009764
        Sequence number         0
        Next attachment ID      147964
        Implementation          HW=AMD/Intel/x64 little-endian OS=Windows CC=MSVC
        Shadow count            0
        Page buffers            0
        Next header page        0
        Database dialect        3
        Creation date           Dec 2, 2023 7:40:53
        Attributes

    Variable header data:
        Database GUID:  {E259AA7B-F2CD-4301-A113-2A9731D1404E}
        *END*
Gstat completion time Mon Jan 29 08:07:34 2024

Файл базы данных

Database File Information

Состояние тестового процесса

Test Process State

Состояние Firebird

Внимание: сервер не перезапускался перед большим тестирование, поэтому время работы больше фактического.

Test Process State Test Process State

Вы можете сравнить эти цифры с состоянием Firebird v3.0.8.33401 после большого тестирования (IBProvider v5.21.1.36328, 7055997 тестов).

Test Process State Test Process State

Выводы

Как уже было замечено в начале – в принципе, результаты отличные.

Состояние тестового процесса после большого тестирования с использованием прямого подключения явно лучше, чем состояние после штатного тестирования с использованием fbclient.dll.

Поэтому, если вы используете IBProvider в круглосуточно работающих системах, без вариантов, указывайте в строке подключения dbclient_type=fb.direct.

Планы

Наши ближайшие планы – выпустить IBProvider с улучшенной поддержкой BLOB-ов.


Дата публикации: 12.02.2024. Права на материал принадлежат: IBProvider. При перепечатке ссылка на сайт https://www.ibprovider.com/rus обязательна.