Release of IBProvider v5.35 and BIG testing with FB4
We are pleased to present a new release of our OLE DB provider for Firebird and InterBase, which has undergone not only standard load testing, but also BIG testing with Firebird v4, which lasted more than a month. This is more than 7 million tests executed in parallel on a ten-core processor.
Release of IBProvider v5.35
In this new version of the provider, the internal infrastructure has been improved — now the cancellation of query execution also applies to operations with BLOBs.
BIG testing with FB4
The last time BIG testing was done was 3 years ago with FB 3.0.8.33401.
In general, the BIG test went perfectly, except that forced garbage collection once an hour was not enough — the database file “ate” almost all the space on the test partition (71GB out of 80GB) and there was not enough free space for some tests. At the end of testing, garbage collection started once every 5 minutes.
So, it was not only load testing, but stressful, too.
Hardware
- Intel CPU, 10 cores
- RAM 128 GB (80 GB was used for RAM drive)
- System drive: Samsung SSD 970 Pro 1TB
- Windows 10 Pro
Server
- Firebird 4.0.5.3033 (Windows, x64, Super Server)
- Direct connection (fb.direct) through TCP/IP
Database
- Dialect 3
- Page size: 16KB
- Garbage collection was executing once on hour. At the end of testing – every 5 minutes.
Components
- IBProvider v5.35.0.46901 (x64, vc17)
- LCPI OLE DB Services v1.22.4.1250 (x64, vc17)
- LCPI Easy COM
Results
To evaluate the results of BIG testing, we will also provide information about the results of standard testing of direct connection and connection via fbclient.dll, which lasts about 12 hours.
Parameter | Big testing | Standard testing | Standard testing |
Connection type | fb.direct | fb.direct | fbclient.dll |
Thread count | 10 | 10 | 10 |
Execution time | |||
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 |
State of the process after testing is completed (after unloading all tested modules) | |||
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 |
Tests | |||
Total quanitity | 7 104 702 | 751 898 | 751 910 |
Succeeded | 7 104 590 | 751 838 | 751 848 |
With errors | 57 | 0 | 5 |
With warnings | 55 | 60 | 57 |
As you can see, the state of the process after BIG testing is almost identical to the state after standard testing using direct connection and much better than standard testing using fbclient.dll.
Log information
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 Statistics
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
Test process status
Firebird state
Attention: the server was not restarted before the BIG test, so the operating time is longer than the actual one.
You can compare these numbers with the state of Firebird v3.0.8.33401 after BIG testing (IBProvider v5.21.1.36328, 7 055 997 tests).
Conclusions
As was already noted at the beginning, in principle, the results are excellent.
The state of the test process after BIG testing using a direct connection is clearly better than the state after regular testing using fbclient.dll.
Therefore, if you use IBProvider in 24/7 systems, without any doubts, specify dbclient_type=fb.direct in the connection string.
Plans
Our immediate plans are to release IBProvider with an improved support for BLOBs.