Большое тестирование IBProvider [release]

Всем привет.

Вчера закончилось большое тестирование IBProvider v5.19 (vc16, x64, релизная сборка).

Потребовалось 32 дня.

Все тип-топ.

Конфигурация

Конфигурация системы та же, что и в забеге с отладочной сборкой:

  • Intel 6950x [10C/20T], RAM 128GB
  • База и TEMP на RAM диске (SoftPerfect)
  • IBProvider v5.19.0.35449
  • LCPI OLE DB Services v1.16.0.924
  • LCPI Thread Pool v2.1.1.310
  • Firebird v3.0.6.33294 (SS, x64, Win)
  • Win10 x64 Pro 1909

Подключение к базе через собственного клиента для FB (dbclient_type=fb.direct), TCP/IP (INET4), без сжатия данных.

Каждый час запускалась принудительная сборка мусора.

Основные сведения из лога

Process ID: 36760

[TEST HEAP] Initialize ... OK

[22.07.2020 07:46:18] [ExecuteTests] CommandLine:

target\ibp_oledb_test_vc16_x64_Release.exe  /thread_count 10 /log_file_prefix fb30-fb.direct-ram_w64_d3 /log_dir ..\_log\all\ /new_db_location "inet4://localhost/d:\database\ram\" /cn_str "provider=LCPI.IBProvider.5.Private.vc16.release;location=inet4://localhost/d:\database\ram\ibp_test_fb30_d3_all.gdb;user id=GAMER;password=vermut;ctype=win1251;temp_file_dir=d:\database\ram\temp;dbclient_type=fb.direct;icu_library=icuuc52.dll;wchars_in_utf8_symbol=2" /oledb_svc_cmp "LCPI.OleDbServices.DataInitManager.Local.1.Private.vc16.release" /test *

[22.07.2020 07:46:18] [ExecuteTests] Test Mask  : [*]

[22.07.2020 07:46:18] [info] Provider DLL    :lcpi.ibprovider-v5_vc16_w64_prof_i.dll
[22.07.2020 07:46:18] [info] Provider Version:5.19.0.35449
[22.07.2020 07:46:18] [info] Server Name     :Firebird
[22.07.2020 07:46:18] [info] Server Version  :3.0.6.33294
[22.07.2020 07:46:18] [info] Client Name     :LCPI.IBProvider.RemoteFB
[22.07.2020 07:46:18] [info] Client Version  :5.19.0.35449
[22.07.2020 07:46:18] [info] Database ODS    :12.0
[22.07.2020 07:46:18] [info] Database Dialect:3
[22.07.2020 07:46:18] [info] ConnectionString:

provider=LCPI.IBProvider.5.Private.vc16.release;location=inet4://localhost/d:\database\ram\ibp_test_fb30_d3_all.gdb;user id=GAMER;password=vermut;ctype=win1251;temp_file_dir=d:\database\ram\temp;dbclient_type=fb.direct;icu_library=icuuc52.dll;wchars_in_utf8_symbol=2

[22.07.2020 07:46:18] [ExecuteTests] 
[22.07.2020 07:46:18] [ExecuteTests] Enter [cancel] for interrupt execution
[22.07.2020 07:46:18] [ExecuteTests] 
[22.07.2020 07:46:18] Creation 10 thread(s)...
......
[23.08.2020 10:33:17] [summary] ------------------------------------------- [SUMMARY INFORMATION]
[23.08.2020 10:33:17] [summary] [TESTS]
[23.08.2020 10:33:17] [summary] EXECUTED      : 7055983
[23.08.2020 10:33:17] [summary] SUCCEEDED     : 7055927
[23.08.2020 10:33:17] [summary] FAILED        : 0
[23.08.2020 10:33:17] [summary] WITH WARNINGS : 56 [ 85 warning(s) ]
[23.08.2020 10:33:17] [summary] 
[23.08.2020 10:33:17] [summary] - - - - - - - - - - - - - - - - - - - - - -
[23.08.2020 10:33:17] [summary] [TEST TIMES]
[23.08.2020 10:33:17] [summary] REAL          : 277401826320187 [321 day(s)01:36:22.6320187]
[23.08.2020 10:33:17] [summary] USER          : 41035084843750 [47 day(s)11:51:48.4843750]
[23.08.2020 10:33:17] [summary] KERNEL        : 34743990156250 [40 day(s)05:06:39.0156250]
[23.08.2020 10:33:17] [summary] TOTAL         : 75779075000000 [87 day(s)16:58:27.5000000]
[23.08.2020 10:33:18] 
[23.08.2020 10:33:18] [TEST HEAP] Test heap is empty
[23.08.2020 10:33:18] [TEST HEAP] Validate ... OK
[23.08.2020 10:33:18] [TEST HEAP] Destroy ... OK
[23.08.2020 10:33:18] 
[23.08.2020 10:33:18] [summary] ------------------------------------------- [PROCESS INFORMATION]
[23.08.2020 10:33:18] [summary] [VIRTUAL MEMORY]
[23.08.2020 10:33:18] [summary] 
[23.08.2020 10:33:18] [summary] PRIVATE BYTES      : 23652 KB       [23MB 100KB]
[23.08.2020 10:33:18] [summary] PEAK PRIVATE BYTES : 13075800 KB    [12GB 481MB 344KB]
[23.08.2020 10:33:18] [summary] VIRTUAL SIZE       : 4507244 KB     [4GB 305MB 620KB]
[23.08.2020 10:33:18] [summary] PAGE FAULT COUNT   : 1616862475
[23.08.2020 10:33:18] [summary] 
[23.08.2020 10:33:18] [summary] - - - - - - - - - - - - - - - - - - - - - -
[23.08.2020 10:33:18] [summary] [HANDLES]
[23.08.2020 10:33:18] [summary] 
[23.08.2020 10:33:18] [summary] HANDLES            : 180
[23.08.2020 10:33:18] [summary] 
[23.08.2020 10:33:18] [summary] - - - - - - - - - - - - - - - - - - - - - -
[23.08.2020 10:33:18] [summary] TOTAL ERRORS  : 0
[23.08.2020 10:33:18] [summary] TOTAL WARNINGS: 85
[23.08.2020 10:33:18] [summary] FULL PASSES   : 1
[23.08.2020 10:33:18] [summary] GEN TESTS     : 8292740

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

Состояние сервера

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

Database "D:\DATABASE\RAM\IBP_TEST_FB30_D3_ALL.GDB"
Gstat execution time Sun Aug 23 10:59:41 2020

Database header page information:
        Flags                   0
        Generation              62956038
        System Change Number    0
        Page size               16384
        ODS version             12.0
        Oldest transaction      62943397
        Oldest active           62943398
        Oldest snapshot         62943398
        Next transaction        62943398
        Sequence number         0
        Next attachment ID      139295
        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           May 1, 2020 22:28:06
        Attributes

    Variable header data:
        *END*
Gstat completion time Sun Aug 23 10:59:41 2020

Сравнения загрузки сервера для debug/release забегов

Тест провайдераFB CPU.Kernel TimeFB CPU.User TimeFB CPU.Total TimeFB Peak Private Bytes
Debug2117:05:49.7961514:27:08.8123631:32:58.60941 731 624 K
Release1810:13:49.6561424:56:03.9533235:09:53.60942 150 908 K

На сколько я понимаю, из-за растянутости времени работы отдельных тестов отладочной сборки они больше мешали другим тестам. Поэтому серверу приходилось, к примеру, тратить больше времени на управление кэшем базы данных.

Еще одно, интересное, наблюдение — «Next attachment ID».

Для релизном случае он равен 139295. А для отладочного варианта он равен 161265. Когда тесты работают шустрее (релизные сборки), пул подключений отрабатывает лучше — потребовалось на 22 тысячи меньше подключений (~16%).

Сравнение с предыдущими тестирования

Это уже третье большое тестирование IBProvider.

Смысла вникать в причину замедления нет. Потому что каждый раз менялось все — провайдер, тесты, Firebird, Win10. Ну, кроме железа.

Так что просто констатируем очевидный факт, что «большое тестирование» каждый раз требует больше времени.

Итого

1. Доехали до конца — уже хорошо.
2. Появились мысли типа «вот это можно улучшить» — еще лучше.

За второе (то что они не появятся) я переживал больше.

Leave a Comment