Publish date: 2024-02-12

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

Database File Information

Test process status

Test Process State

Firebird state

Attention: the server was not restarted before the BIG test, so the operating time is longer than the actual one.

Test Process State Test Process State

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).

Test Process State Test Process State

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.


Publish date: 2024-02-12. Copyright: IBProvider. This material may be reproduced on other web sites, without written permission but link https://www.ibprovider.com/eng required.