Релиз 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
Файл базы данных
Состояние тестового процесса
Состояние Firebird
Внимание: сервер не перезапускался перед большим тестирование, поэтому время работы больше фактического.
Вы можете сравнить эти цифры с состоянием Firebird v3.0.8.33401 после большого тестирования (IBProvider v5.21.1.36328, 7055997 тестов).
Выводы
Как уже было замечено в начале – в принципе, результаты отличные.
Состояние тестового процесса после большого тестирования с использованием прямого подключения явно лучше, чем состояние после штатного тестирования с использованием fbclient.dll.
Поэтому, если вы используете IBProvider в круглосуточно работающих системах, без вариантов, указывайте в строке подключения dbclient_type=fb.direct.
Планы
Наши ближайшие планы – выпустить IBProvider с улучшенной поддержкой BLOB-ов.