Большое тестирование 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 Time | FB CPU.User Time | FB CPU.Total Time | FB Peak Private Bytes |
---|---|---|---|---|
Debug | 2117:05:49.796 | 1514:27:08.812 | 3631:32:58.609 | 41 731 624 K |
Release | 1810:13:49.656 | 1424:56:03.953 | 3235:09:53.609 | 42 150 908 K |
На сколько я понимаю, из-за растянутости времени работы отдельных тестов отладочной сборки они больше мешали другим тестам. Поэтому серверу приходилось, к примеру, тратить больше времени на управление кэшем базы данных.
Еще одно, интересное, наблюдение — «Next attachment ID».
Для релизном случае он равен 139295. А для отладочного варианта он равен 161265. Когда тесты работают шустрее (релизные сборки), пул подключений отрабатывает лучше — потребовалось на 22 тысячи меньше подключений (~16%).
Сравнение с предыдущими тестирования
Это уже третье большое тестирование IBProvider.
Смысла вникать в причину замедления нет. Потому что каждый раз менялось все — провайдер, тесты, Firebird, Win10. Ну, кроме железа.
Так что просто констатируем очевидный факт, что «большое тестирование» каждый раз требует больше времени.
Итого
1. Доехали до конца — уже хорошо.
2. Появились мысли типа «вот это можно улучшить» — еще лучше.
За второе (то что они не появятся) я переживал больше.