| #196 | interdiff-195-196.txt | 1.71 KB | Anonymous (not verified) |
| #196 | compress-cache-data-1281408-10-2-mem-track.patch | 11.07 KB | Anonymous (not verified) |
| #195 | compress-cache-data-1281408-10-mem-track.patch | 9.36 KB | Anonymous (not verified) |
| #194 | build-47385.png | 60.54 KB | Anonymous (not verified) |
| #193 | 2933866-2-remove-static-entity-cache-when-serialized-mem-track.patch | 7.83 KB | Anonymous (not verified) |
| #193 | 2851529-53-DatabaseCacheTagsChecksum-mem-track.patch | 10.59 KB | Anonymous (not verified) |
| #193 | 2848844-2-constraint-non-static-cache-mem-track.patch | 8.21 KB | Anonymous (not verified) |
| #193 | 2783791-33-module-install-invalidate-render-cache-mem-track.patch | 7.9 KB | Anonymous (not verified) |
| #193 | 2765271-6-rationalize-discovery-mem-track.patch | 7.52 KB | Anonymous (not verified) |
| #193 | 2515054-4-apcu-leak-cookies-mem-track.patch | 11.15 KB | Anonymous (not verified) |
| #193 | 2421479-33-files-chit-mem-track.patch | 29.79 KB | Anonymous (not verified) |
| #193 | 2339487-31-permission-cache-mem-track.patch | 11.3 KB | Anonymous (not verified) |
| #193 | 2250033-2-reset-cache-tags-mem-track.patch | 8.83 KB | Anonymous (not verified) |
| #193 | 1596472-125-static-cache-on-cache-backends-mem-track.patch | 34.75 KB | Anonymous (not verified) |
| #193 | 1199866-47-LRU-cache-mem-track.patch | 42 KB | Anonymous (not verified) |
| #190 | gc-apcu-mem-track.patch | 8.26 KB | Anonymous (not verified) |
| #190 | rest-and-checkForMetaRefresh.patch | 906 bytes | Anonymous (not verified) |
| #190 | first-100-tests-apcu_entries.patch | 1.46 KB | Anonymous (not verified) |
| #190 | first-100-apc-apache_info.patch | 1.61 KB | Anonymous (not verified) |
| #187 | 2930022-151-trouble-maker+debug-backtrace-ignore-args-do-not-test.patch.txt | 5.51 KB | tacituseu |
| #187 | 2930022-151-trouble-maker+2857437-revert-do-not-test.patch.txt | 2.56 KB | tacituseu |
| #181 | 2930022-181-flush-mem-track.patch | 12.78 KB | tacituseu |
| #180 | 2930022-179-flush-mem-track_.patch | 11.75 KB | tacituseu |
| #179 | 2930022-179-flush-mem-track.patch | 11.75 KB | tacituseu |
| #178 | 2930022-178-flush-mem-track.patch | 10.42 KB | tacituseu |
| #177 | 2930022-177-flush-mem-track.patch | 11.3 KB | tacituseu |
| #176 | 2930022-175-flush-mem-track-test-of-a-test-1.patch | 11.46 KB | tacituseu |
| #175 | 2930022-175-flush-mem-track-test-of-a-test.patch | 11.44 KB | tacituseu |
| #174 | apcu_store-ttl-200s-phpunit-installer-2907728-53-mem-track.patch | 63.07 KB | Anonymous (not verified) |
| #173 | ttl200-without-install-43197.png | 45.76 KB | Anonymous (not verified) |
| #172 | apcu_store-ttl-200s-mem-track-without-installer.patch | 8.56 KB | Anonymous (not verified) |
| #172 | ttl-200s-43193-avail+entries.png | 33.09 KB | Anonymous (not verified) |
| #172 | ttl-10s-43192-avail+entries.png | 37.33 KB | Anonymous (not verified) |
| #171 | 43187-avail+hits+misses+inserts+entries.png | 65.58 KB | Anonymous (not verified) |
| #171 | 43187-avail.png | 38.18 KB | Anonymous (not verified) |
| #171 | apcu_store-ttl-200s-mem-track.patch | 8.42 KB | Anonymous (not verified) |
| #171 | apcu_store-ttl-10s-mem-track.patch | 8.42 KB | Anonymous (not verified) |
| #170 | apcu_store-ttl-30s-mem-track.patch | 8.42 KB | Anonymous (not verified) |
| #168 | expire-30s-mem-track.patch | 8.11 KB | Anonymous (not verified) |
| #167 | clear_cache3-mem-track.patch | 12.55 KB | Anonymous (not verified) |
| #167 | clear_cache2-mem-track.patch | 12.55 KB | Anonymous (not verified) |
| #167 | clear_cache1-mem-track.patch | 12.55 KB | Anonymous (not verified) |
| #166 | runs-without-slow-50s-tests-mem-track.patch | 16.25 KB | Anonymous (not verified) |
| #166 | runs-without-slow-100s-tests-mem-track.patch | 8.9 KB | Anonymous (not verified) |
| #165 | runs-without-slow-100s-tests-mem-track.patch | 8.89 KB | Anonymous (not verified) |
| #165 | runs-without-slow-50s-tests-mem-track.patch | 16.26 KB | Anonymous (not verified) |
| #165 | 43132-update-index-mem-track.png | 81.51 KB | Anonymous (not verified) |
| #162 | 2930022-mem-track-only-do-not-test.patch | 7.06 KB | tacituseu |
| #161 | 2931883-vs-default.png | 24.93 KB | Anonymous (not verified) |
| #159 | post-158-unique-prefix-43053.png | 65.34 KB | Anonymous (not verified) |
| #159 | post-158-shared-prefix-43052.png | 55.26 KB | Anonymous (not verified) |
| #159 | post-150-unique-prefix-clear-all.png | 87.01 KB | Anonymous (not verified) |
| #159 | post-150-shared-prefix-clear-all.png | 83.95 KB | Anonymous (not verified) |
| #158 | unique-prefix-2704571-13-mem-track.patch | 13.28 KB | Anonymous (not verified) |
| #158 | share-prefix-2704571-13-mem-track.patch | 12.76 KB | Anonymous (not verified) |
| #152 | 2930022-152-flush-mem-track.patch | 9.73 KB | tacituseu |
| #151 | 2930022-151-flush-mem-track.patch | 8.84 KB | tacituseu |
| #150 | apcu-clear_by_test-unique-prefix-mem-track.patch | 11.34 KB | Anonymous (not verified) |
| #150 | apcu-clear_all-unique-prefix-mem-track.patch | 11.31 KB | Anonymous (not verified) |
| #150 | apcu_clear_all-share-prefix-mem-track.patch | 10.79 KB | Anonymous (not verified) |
| #148 | unique-prefix-clear_after_each_btb_test-mem-track.patch | 9.5 KB | Anonymous (not verified) |
| #148 | shared-prefix-clear_after_each_btb_test-mem-track.patch | 8.98 KB | Anonymous (not verified) |
| #147 | ResourceTestBase-unique-prefix.patch | 4.45 KB | Anonymous (not verified) |
| #147 | different-update-tests.png | 20.92 KB | Anonymous (not verified) |
| #147 | UpdatePathTestBaseFilledTest-same-vs-unique-prefix.png | 18.63 KB | Anonymous (not verified) |
| #147 | compare-with-unique-prefix-for-update-and-update_install.png | 24.21 KB | Anonymous (not verified) |
| #147 | id42601-avail.png | 40.79 KB | Anonymous (not verified) |
| #146 | 2926309-51-update-insatller-unique_prefix.patch | 4.93 KB | Anonymous (not verified) |
| #146 | 2926309-51-insatller-unique_prefix.patch | 4.5 KB | Anonymous (not verified) |
| #146 | x500-UpdatePathTestBaseTest-checkForMetaRefresh-scan-unique_prefix.patch | 17.06 KB | Anonymous (not verified) |
| #139 | x500-UpdatePathTestBaseTest-checkForMetaRefresh-scan.patch | 16.54 KB | Anonymous (not verified) |
| #139 | log-test80722149_testUpdateHookN-between-updateUrl-and-checkForMetaRefresh.txt | 46.77 KB | Anonymous (not verified) |
| #2 | x500_UserJsonAnonTest.patch | 560 bytes | Anonymous (not verified) |
| #3 | x400_InstallUninstallTest.patch | 524 bytes | Anonymous (not verified) |
| #4 | php_bug-75176.patch | 1.56 KB | Anonymous (not verified) |
| #5 | x200_InstallUninstallTest-apc_off.patch | 1.01 KB | Anonymous (not verified) |
| #5 | x200_InstallUninstallTest.patch | 524 bytes | Anonymous (not verified) |
| #6 | x200_InstallUninstallTest-phpunit.patch | 1.23 KB | Anonymous (not verified) |
| #7 | apcu_list_tests.patch | 2.1 KB | Anonymous (not verified) |
| #8 | 2828559-86-8.5.x.patch | 5.96 KB | tacituseu |
| #9 | 2828559-86-and-2208429-3-295.patch | 75.76 KB | Anonymous (not verified) |
| #10 | x200_MemoryTest.patch | 1.69 KB | Anonymous (not verified) |
| #13 | x1000_xml.patch | 663 bytes | Anonymous (not verified) |
| #14 | x1000_xml_tests.patch | 680 bytes | Anonymous (not verified) |
| #22 | x1000_xml_tests-delay.patch | 1.38 KB | Anonymous (not verified) |
| #22 | x100_InstallUninstallTest-simpletest-delay.patch | 1.12 KB | Anonymous (not verified) |
| #24 | 2930022-23-InstallUninstallTest-index-x1.patch | 6.9 KB | tacituseu |
| #25 | 2930022-25-all.patch | 6.52 KB | tacituseu |
| #28 | 2930022-28-x100_InstallUninstallTest-phpunit.patch | 7.58 KB | tacituseu |
| #29 | index-with-apcu_sma_info.patch | 255 bytes | Anonymous (not verified) |
| #31 | index-with-log-lock-ex.patch | 353 bytes | tacituseu |
| #32 | 2930022-32-cache-max-rows.patch | 560 bytes | tacituseu |
| #33 | 2930022-32-cache-max-rows-100000.patch | 561 bytes | Anonymous (not verified) |
| #33 | index-with-log-lock-ex-with-usleep-500000.patch | 370 bytes | Anonymous (not verified) |
| #33 | x100_InstallUninstallTest-and-2704571-13.patch | 6.55 KB | Anonymous (not verified) |
| #34 | 2930022-32-cache-max-rows-666.patch | 558 bytes | Anonymous (not verified) |
| #35 | shuffle_test_list.patch | 345 bytes | Anonymous (not verified) |
| #37 | x100_InstallUninstallTest-simpletest-with-1596472-125.patch | 28.2 KB | Anonymous (not verified) |
| #38 | x2000-one_rest_test.patch | 593 bytes | Anonymous (not verified) |
| #39 | 2800873-xml_tests-request-count.patch | 1.52 KB | Anonymous (not verified) |
| #39 | x2000-one_rest_test-header-no-cache.patch | 969 bytes | Anonymous (not verified) |
| #39 | x2000-one_rest_test-apc-cache_by_default-off.patch | 901 bytes | Anonymous (not verified) |
| #40 | x1000-one_rest_test-apc-concurency-1.patch | 622 bytes | Anonymous (not verified) |
| #40 | x2000-one_rest_test-apc-max-cache-10000.patch | 1.13 KB | Anonymous (not verified) |
| #42 | 834262-40472-1h24m-time-track-sorted.csv_.txt | 272.18 KB | tacituseu |
| #42 | 834888-40783-0h47m-time-track-sorted.csv_.txt | 272.25 KB | tacituseu |
| #43 | 2930022-43-no-InstallUninstallTest.patch | 540 bytes | tacituseu |
| #44 | x2000-request-test-100.patch | 1.29 KB | Anonymous (not verified) |
| #47 | x1000-request-test-rest-payload-100.patch | 2.69 KB | Anonymous (not verified) |
| #48 | wtf.php_.txt | 1.65 KB | Anonymous (not verified) |
| #48 | stat.txt | 74.33 KB | Anonymous (not verified) |
| #48 | wtf.png | 4.07 KB | Anonymous (not verified) |
| #49 | x1000-request-test-rest-payload-GET-200.patch | 2.66 KB | Anonymous (not verified) |
| #50 | x1000-request-test-rest-payload-POST-200.patch | 2.62 KB | Anonymous (not verified) |
| #51 | disallow-rest-test-post.patch | 799 bytes | Anonymous (not verified) |
| #53 | x1000-request-test-payload-new-node-300.patch | 3.51 KB | Anonymous (not verified) |
| #53 | build_id-4530.png | 9.69 KB | Anonymous (not verified) |
| #53 | shuffle-build_id-40837.png | 10.04 KB | Anonymous (not verified) |
| #53 | wtf.php_.txt | 1.58 KB | Anonymous (not verified) |
| #54 | x470-request-test-payload-300-with-log.patch | 3.79 KB | Anonymous (not verified) |
| #54 | post-53-build_id-41017.png | 8.81 KB | Anonymous (not verified) |
| #54 | btb-client-sensitive-time.patch | 553 bytes | Anonymous (not verified) |
| #55 | x1000-request-test-rest-payload-POST-200-localhost.patch | 2.93 KB | tacituseu |
| #56 | x470-request-test-payload-300-with-log.patch | 3.8 KB | Anonymous (not verified) |
| #57 | magic-fix-rest-tests.patch | 1004 bytes | Anonymous (not verified) |
| #59 | less-magic-fix-rest-tests.patch | 971 bytes | tacituseu |
| #60 | less-magic-fix-rest-tests.patch | 971 bytes | tacituseu |
| #62 | less-magic-fix-rest-tests.patch | 999 bytes | tacituseu |
| #64 | less-magic-fix-rest-tests_a_regim.patch | 999 bytes | Anonymous (not verified) |
| #65 | 2930022-64.patch | 1.16 KB | tacituseu |
| #67 | 2930022-67.patch | 1.16 KB | tacituseu |
| #70 | btb-client-sensitive-time-no-debug-output.patch | 956 bytes | tacituseu |
| #71 | btb-client-no-debug-output.patch | 694 bytes | tacituseu |
| #73 | apc-usage-track-1.patch | 6.94 KB | tacituseu |
| #73 | apc-usage-track-2.patch | 3.09 KB | tacituseu |
| #74 | apc-usage-track-2.1.patch | 3.28 KB | tacituseu |
| #77 | shuffle-lucky-middle-long.png | 26.06 KB | Anonymous (not verified) |
| #77 | wtf.php_.txt | 4.45 KB | Anonymous (not verified) |
| #82 | apc-usage-track-3.patch | 8.46 KB | tacituseu |
| #84 | 2930022-53-x1000-300-request-with-lock-file.patch | 3.39 KB | Anonymous (not verified) |
| #84 | 2930022-53-x1000-300-request-with-index-apcu_clear_cach.patch | 3.46 KB | Anonymous (not verified) |
| #84 | 2930022-53-x1000-300-request-with-lock-and-write-file.patch | 3.47 KB | Anonymous (not verified) |
| #84 | 2930022-53-x1000-request-test-payload-new-node-300-concurency-4.patch | 3.54 KB | Anonymous (not verified) |
| #86 | apc-usage-track-2.2.patch | 3.53 KB | tacituseu |
| #87 | 84-charts.png | 31.61 KB | Anonymous (not verified) |
| #87 | index-apcu_clear_cache.patch | 206 bytes | Anonymous (not verified) |
| #87 | 2930022-53-concurency-15.patch | 3.54 KB | Anonymous (not verified) |
| #87 | 2930022-53-concurency-24.patch | 3.54 KB | Anonymous (not verified) |
| #87 | 2930022-56-x1000.patch | 3.8 KB | Anonymous (not verified) |
| #88 | apc-usage-track-2.3.patch | 3.58 KB | tacituseu |
| #89 | apcu_clear_cache-vs-shuffle.png | 28.21 KB | Anonymous (not verified) |
| #89 | tearDown-apcu_clear_cache.patch | 589 bytes | Anonymous (not verified) |
| #91 | shuffle_and_apcu_clear_cache.patch | 551 bytes | Anonymous (not verified) |
| #92 | apcu_clear_cache_and_concurrency_35.patch | 670 bytes | tacituseu |
| #92 | apcu_clear_cache_and_concurrency_48.patch | 670 bytes | tacituseu |
| #93 | apc-usage-track-3.1.patch | 9.3 KB | tacituseu |
| #94 | apcu_clear_cache_and_concurrency_35.patch | 733 bytes | tacituseu |
| #94 | apcu_clear_cache_and_concurrency_48.patch | 733 bytes | tacituseu |
| #97 | completion-vs-apcu-free-40852.png | 66.91 KB | tacituseu |
| #99 | apc-usage-track-2.4.patch | 3.16 KB | tacituseu |
| #100 | apc-usage-track-2.4.1.patch | 3.2 KB | tacituseu |
| #101 | apc-usage-track-2.4.2.patch | 1.13 KB | tacituseu |
| #102 | apc-usage-track-2.4.3.patch | 1.85 KB | tacituseu |
| #102 | apc-usage-track-2.4.4.patch | 3.92 KB | tacituseu |
| #105 | apc-usage-track-2.4.5.patch | 3.92 KB | tacituseu |
| #107 | tearDown-bins-flush.patch | 941 bytes | tacituseu |
| #111 | 2272685-23-reroll.patch | 3.74 KB | Anonymous (not verified) |
| #111 | tearDown-iterator.patch | 595 bytes | Anonymous (not verified) |
| #111 | wtf-memory.php_.txt | 6.49 KB | Anonymous (not verified) |
| #111 | wtf-clince.php_.txt | 5.17 KB | Anonymous (not verified) |
| #111 | 2930022-99-id-41605.png | 33.63 KB | Anonymous (not verified) |
| #111 | 2930022-100-id-41623.png | 33.62 KB | Anonymous (not verified) |
| #111 | 2930022-101-id-41628.png | 33.78 KB | Anonymous (not verified) |
| #111 | 2930022-102-id-41640.png | 35.39 KB | Anonymous (not verified) |
| #111 | 2930022-102-id-41641.png | 32.1 KB | Anonymous (not verified) |
| #111 | 31-concurency-full-list.png | 38.38 KB | Anonymous (not verified) |
| #111 | 31-concurency-rest-hal.png | 29.93 KB | Anonymous (not verified) |
| #111 | 31-concurency-longer-than-100-seconds.png | 29.92 KB | Anonymous (not verified) |
| #112 | named-blocks-more-100-seconds.png | 92.16 KB | Anonymous (not verified) |
| #113 | 2272685-23-reroll-2.patch | 4.03 KB | Anonymous (not verified) |
| #113 | tearDown-btb-simpletest-apcu-iterator.patch | 1.01 KB | Anonymous (not verified) |
| #113 | tearDown-btb-simpletest-apcu-clear_cache.patch | 942 bytes | Anonymous (not verified) |
| #116 | no-user-permissions-hash-mem-track.patch | 7.38 KB | tacituseu |
| #116 | tearDown-bins-flush-mem-track.patch | 7.62 KB | tacituseu |
| #117 | wtf-types.php_.txt | 7.77 KB | Anonymous (not verified) |
| #117 | 41767-avail-hits-misses.png | 37.27 KB | Anonymous (not verified) |
| #117 | 41767-avail-inserts-entries.png | 44.17 KB | Anonymous (not verified) |
| #117 | 41767-avail-peaks-hits-misses-inserts-entries.png | 87.8 KB | Anonymous (not verified) |
| #117 | 41767-avail-expunges.png | 28.68 KB | Anonymous (not verified) |
| #117 | 41768-avail-hits-misses.png | 44.87 KB | Anonymous (not verified) |
| #117 | 41768-avail-inserts-entries.png | 45.53 KB | Anonymous (not verified) |
| #117 | 41768-avail-expunges.png | 30.27 KB | Anonymous (not verified) |
| #117 | 41768-avail-peaks-hits-misses-inserts-entries.png | 85.36 KB | Anonymous (not verified) |
| #118 | tearDown-apcu-delete-site-prefix-mem-track.patch | 7.26 KB | Anonymous (not verified) |
| #118 | tearDown-mem-track-index-apcu_clear_cache.patch | 6.72 KB | Anonymous (not verified) |
| #119 | one-class-loader-for-all-mem-track.patch | 7.88 KB | tacituseu |
| #120 | one-class-loader-and-file-cache-for-all-mem-track.patch | 8.41 KB | tacituseu |
| #121 | 41813-avail+hits+misses+inserts+entries.png | 51.54 KB | Anonymous (not verified) |
| #121 | 41814-avail+hits+misses+inserts+entries.png | 75.78 KB | Anonymous (not verified) |
| #121 | 41815-avail+hits+misses+inserts+entries.png | 46.2 KB | Anonymous (not verified) |
| #121 | 41818-avail+hits+misses+inserts+entries.png | 39.3 KB | Anonymous (not verified) |
| #123 | 2930022-120-ClassLoaderTest-changes.patch | 2.76 KB | Anonymous (not verified) |
| #124 | apcu-ensure-unique-prefix-false-mem-track.patch | 7.11 KB | tacituseu |
| #126 | 2930022-124-prod.patch | 2.43 KB | Anonymous (not verified) |
| #126 | 2930022-124-check-random-fail-in-update-tests-x1000.patch | 3.08 KB | Anonymous (not verified) |
| #127 | 2930022-124-check-random-fail-in-all-update-tests-x1000.patch | 3.08 KB | Anonymous (not verified) |
| #128 | 2930022-124-update-tests.png | 23.58 KB | Anonymous (not verified) |
| #128 | 2930022-120-prod.patch | 3.23 KB | Anonymous (not verified) |
| #128 | 2930022-120-check-random-fail-in-update-tests-x1000.patch | 3.88 KB | Anonymous (not verified) |
| #128 | 2930022-120-check-random-fail-in-all-update-tests-x1000.patch | 3.88 KB | Anonymous (not verified) |
| #129 | 2930022-120-real-UpdatePathTestBaseTest-x1000.patch | 1.94 KB | Anonymous (not verified) |
| #129 | 2930022-120-real-update-tests-x1000.patch | 1.94 KB | Anonymous (not verified) |
| #131 | 2930022-124-prod-mem-track.patch | 9.6 KB | tacituseu |
| #132 | 2930022-126-UpdatePathTestBaseTest-880-mem-track.patch | 8.1 KB | Anonymous (not verified) |
| #133 | 2930022-124-prod-mem-track.patch | 9.19 KB | tacituseu |
| #134 | 41927-avail.png | 26.07 KB | Anonymous (not verified) |
| #134 | 41927-peacks-update.png | 33.12 KB | Anonymous (not verified) |
| #134 | 41927-concurency-lines-in-seconds.png | 96.6 KB | Anonymous (not verified) |
| #136 | x500-UpdatePathTestBaseTest-scan-by-methods.patch | 13.92 KB | Anonymous (not verified) |
| #137 | id41983-avail.png | 40 KB | Anonymous (not verified) |
| #137 | id41983-zoom-sector-12-30-minutes.png | 29.44 KB | Anonymous (not verified) |
| #137 | 41983-statistics.txt | 33.93 KB | Anonymous (not verified) |
| #137 | wtf-uscan.php_.txt | 11.81 KB | Anonymous (not verified) |
| #137 | x500-UpdatePathTestBaseTest-scan-2.patch | 14.49 KB | Anonymous (not verified) |
Comments
Comment #1
Anonymous (not verified) commentedvaplas created an issue. See original summary.
Comment #2
Anonymous (not verified) commentedComment #3
Anonymous (not verified) commentedComment #4
Anonymous (not verified) commentedComment #5
Anonymous (not verified) commentedComment #6
Anonymous (not verified) commented.
Comment #7
Anonymous (not verified) commentedComment #8
tacituseu commentedChecking memory usage.
Also, sidenote: tests on PHP 7 are a lot slower recently.
8.5.x-dev test with PHP 7 & MySQL 5.5Sep 12: Took 45 min
Oct 12: Took 48 min
Nov 11: Took 49 min
Dec 12: Took 1 hr 11 min
8.5.x-dev test with PHP 5.5 & MySQL 5.5Sep 12: Took 1 hr 7 min
Dec 12: Took 1 hr 18 min
PHP 7 is almost as slow as PHP 5.5 now o_O.
Comment #9
Anonymous (not verified) commentedChecking memory usage with #2208429-295: Extension System, Part III: ExtensionList, ModuleExtensionList and ProfileExtensionList patch, where memory problems often manifest.
Comment #10
Anonymous (not verified) commentedJudging by #8 logs, the largest spendthrift between non-JSB tests is
AggregatorAdminTest. Peak occurs intestSettingsPage()here:Lets check special test on memory with similar operations.
Leader between JSB tests is
FilterOptionsTest.Comment #11
tacituseu commentedRe #10: not sure I follow, what I saw in #8 is that:
1. there's hardly any APCU mem usage (1MB)
2. PHPUnit reporting is inadequate (I think it needed test listener but I didn't finish it)
3. Top offenders are:
Drupal\field_ui\Tests\ManageFieldsTest 94371840 bytes
Drupal\user\Tests\UserPasswordResetTest 92274688 bytes
Drupal\system\Tests\Theme\ThemeTest 83886080 bytes
Drupal\views_ui\Tests\PreviewTest 81788928 bytes
Drupal\field\Tests\FormTest 77594624 bytes
Drupal\quickedit\Tests\QuickEditLoadingTest 75497472 bytes
Drupal\taxonomy\Tests\TermTest 75497472 bytes
Drupal\file\Tests\FileFieldWidgetTest 73400320 bytes
Drupal\menu_ui\Tests\MenuTest 73400320 bytes
Drupal\file\Tests\SaveUploadFormTest 71303168 bytes
so nothing excessive.
Looked over Commits for DrupalCI: Environments and around 23 Nov the php containers were updated, first failure is 26 Nov so this could be environment problem, also it had many updates today and yesterday.
Comment #12
Anonymous (not verified) commented@tacituseu, I immediately began to look at the archive, and did not find all the beauties of the patch 💎🙏
Comment #13
Anonymous (not verified) commentedComment #14
Anonymous (not verified) commentedComment #15
tacituseu commentedOne more problem with #8, those errors are actually forwarded from
X-Drupal-Assertion-*headers byDrupal/Core/Test/HttpClientMiddleware/TestHttpClientMiddleware, so they aren't on the test side, those APCU stats cover only the php-cli side, hence low usage.Edit: except InstallUninstallTest.
Comment #16
Anonymous (not verified) commentedInstallUnistallTest also performs many requests via drupalPostForm(). So much that the simpletest works in two faster than phpunit. Perhaps due to pure cURL vs Mink and Guzzle.
#2930072-14: Module: Convert system functional tests to phpunit:
Now massive rest test (#14), and massive InstallUnistallTest (#3) lead to
'CI aborted'Interestingly, this happens even after the successful execution of all tests.
Comment #17
tacituseu commented#3 and #14 aborted because:
Build timed out (after 110 minutes). Marking the build as aborted., all AWS instances are spun down before 2 hour mark.Comment #18
Anonymous (not verified) commentedhttps://dispatcher.drupalci.org/job/drupal_patches/40701/consoleFull
Time between last test and time out:
https://dispatcher.drupalci.org/job/drupal_patches/40699/console
Time between last test and time out:
Comment #19
tacituseu commented@vaplas: ok, now i get it, didn't notice that earlier because I'm used to looking at the "View as plain text" version of the log, which doesn't contain the timestamps (as the colored one is sometimes mangled), weird indeed.
Comment #20
Anonymous (not verified) commentedMaybe I will bring turbidity following information, but nevertheless voiced its:
'CI aborted''CI aborted'I also remembered an interesting puzzle #2863626-61: Convert web tests to browser tests for image module. TL;DR:
When running tests for CI somewhere there is an additional reading of the output stream. Although this does not happen when running tests locally.
As result, we get green tests via
$response->getBody()->getContents()locally, but not on CI.For CI we need seek to start of stream, like
(string) $response->getBody().Comment #21
tacituseu commented@vaplas: not sure if you've read it already, but there's also interesting info about recent changes here #2857788-9: Patch the testbot to start both chrome in webdriver mode and phantomjs in non webdriver mode, especially point 2.
Comment #22
Anonymous (not verified) commented#21: @tacituseu, it's too clever for me, sorry)
Checking how the delay before requests can improve or worsen the situation.
Comment #23
Anonymous (not verified) commentedHm..
Did not help with InstallUninstallTest (perhaps one delay in drupalPostFrom is not enough).
But it helped for rest-tests with 'CI aborted'. But not with
'apcu memory'.One more observation:
(2 min 23 sec between two series):
(2 min 46 sec):
(4 min 42 sec):
(3 min 53 sec):
(6 min 50 sec)
(5 min 42 sec)
(18 min 23 sec)
This is somewhat similar to the problem with the limited size of hash tables. Where the more keys, the more collisions, the more time on paste next key.
Maybe this is what happens to the apcu? And increasing the time delay between requests allows to start the garbage collector, or the mechanism for optimize table-cache size?
Comment #24
tacituseu commentedEdit: one run of
InstallUninstallTesteats ~6MB of APCU cache.Comment #25
tacituseu commentedEdit: Most memory used to serve a page ~100MB, most APCU cache used per test is 1965MB (leaves 35MB free).
Comment #26
Anonymous (not verified) commented#25: No-JS tests run duration: 28 min 59 sec! @tacituseu, your patch is the most original way to great increase the speed of tests that I have seen!)
Comment #27
tacituseu commented@vaplas: That would be just bizzare, maybe it's just the result of @Mixologic and @Mile23 tuning things in the background. But otherwise 47 min test run time is close to what I'd expect from PHP 7.
Comment #28
tacituseu commentedOut of curiosity, patch from #2930072-14: Module: Convert system functional tests to phpunit + #25.
Comment #29
Anonymous (not verified) commentedhttps://dispatcher.drupalci.org/job/drupal_patches/40784/
No-JS tests run duration still: 50 min 14 sec.
However, this was launched later than #25.
Out of curiosity, is it enough just to call
apcu_sma_info, or need some kind of protracted operation, like I/O?Comment #30
tacituseu commentedIf there's anything to this, my wild guess would be that lock in index.php somehow helps with ?cache trashing?:
file_put_contents($logfile, date('YmdHis') . ';I;' . memory_get_peak_usage(TRUE) . ';' . $apcuinfo . PHP_EOL, FILE_APPEND | LOCK_EX);Comment #31
tacituseu commentedTests #30
Comment #32
tacituseu commentedComment #33
Anonymous (not verified) commentedThis is not fair: 1 my patch (#29) is fail, all 3 tacituseu's patches are passes.
It's strange that the restart of #25 is slower (although faster than the average):
https://dispatcher.drupalci.org/job/drupal_patches/40781/console
Test run duration: 51 min 31 sec
https://dispatcher.drupalci.org/job/drupal_patches/40783/console
#25/1: Test run duration: 28 min 59 sec
https://dispatcher.drupalci.org/job/drupal_patches/40784/console
Test run duration: 50 min 14 sec
https://dispatcher.drupalci.org/job/drupal_patches/40793/console
#25/2: Test run duration: 41 min 26 sec
Looks like ideas with lock (#31) and cache (#32) have sense. Let's check with additional delay/limit.
+ check patch from #2704571: Add an APCu classloader with a single entry.
Comment #34
Anonymous (not verified) commentedComment #35
Anonymous (not verified) commentedEdit: Random Order vs Random Fail. Take the popcorn)
If the uniform distribution of rest-tests helps, then the #2910883: Move all entity type REST tests to the providing modules becomes quite important like workaround.
Comment #36
tacituseu commented#35: good one, fight random with random, somehow makes perfect sense ;D.
Comment #37
Anonymous (not verified) commentedYep)
#1596472: Replace hard coded static cache of entities with cache backends one more issue that can help with checking the cache max limit.
Comment #38
Anonymous (not verified) commentedComment #39
Anonymous (not verified) commentedComment #40
Anonymous (not verified) commentedComment #41
Anonymous (not verified) commentedComment #42
tacituseu commentedProcessed test durations attached.
In fast run (#25)
Drupal\system\Tests\Module\InstallUninstallTesttakes 10 minutes, in the slow one (#8) it lingers for 47 minutes and there's plenty of slowDrupal\Tests\rest\Functional\*tests (they are at least 10x slower vs fast run).Edit: hiding not intentional (cross-post) ;)
Comment #43
tacituseu commentedComment #44
Anonymous (not verified) commented2017-11-24 11:36 commited #2800873: Add XML GET REST test coverage, work around XML encoder quirks. Per #39 it means + 141 test (2672 requests).
2017-11-24 13:54 the first know problem with apcu memory https://www.drupal.org/pift-ci-job/819166.
#8: The runtime of tests became slower, with the increase in the number of rest-tests.
Checking the rest tests also shows that the first tests pass quickly, and the last tests very slowly. And sometimes the CI just gets stuck.
#39:
#40:
#41:
special test - bad patch :(
force exception (trying refresh something) - not help
4 concurency - perhaps help
So, with a decrease concurency, a large set of rest tests is more stable.
Comment #45
Anonymous (not verified) commented#31: index.php with lock operations also helps, by #30?
#35: Shuffle tests also helps, perhaps because rest-tests do not go one by one.
Comment #46
tacituseu commentedRe #45: I think with #25 it just was lucky first-run, so not much hope for #30, #31.
It does look to me like you're right about #2800873: Add XML GET REST test coverage, work around XML encoder quirks, removing
Drupal\system\Tests\Module\InstallUninstallTestin #43 didn't make them faster.Comment #47
Anonymous (not verified) commentedAnd since the rest tests have been working for a very long time, the error hardly lies in them. Most likely they just became a good catalyst when a too long continuous series of rest tests was formed.
#44: it seems just a lot of requests are not enough (or I did it wrong). Let's check with a little payload like creating a node via rest.
#41: with concurency = 4 the 1000 runs green, but with concurency = 31 was
'CI aborted'after 558 runs (#38). Hm..558 = 31 * 18Comment #48
Anonymous (not verified) commentedThe graph shows the speed of slowing down the tests. And the fracture comes quite sharply. o_O

Comment #49
Anonymous (not verified) commentedMany rest-tests without post-method (😢). So we can focus on GET. And also the data format (
jsonresponse is much shorter thanhtml, which can shorten the transmission time).Comment #50
Anonymous (not verified) commentedPOST? Edit: Yes, it is.
Comment #51
Anonymous (not verified) commentedEdit: Perhaps after disallow
PATCH/DELETEthe effect will increase, but this can be simply because the tests themselves are shortened after it.Comment #52
Anonymous (not verified) commentedWell. What can this accumulate between tests, which results in a sharp decline in performance after a certain number of tests?
And why is the reduction of concurency possible to solve this leak (it just gives more time to refresh something?)
Comment #53
Anonymous (not verified) commentedLet's check pure requests on creating node instances.
Also bit improve wtf.php graphics generator (now full c/p from https://dispatcher.drupalci.org/job/drupal_patches/40983/consoleFull). This is still not very convenient and ugly, but bit better.
Typical CI testing: https://dispatcher.drupalci.org/job/php7_mysql5.5/4530/consoleFull

Shuffle CI testing: https://dispatcher.drupalci.org/job/drupal_patches/40837/consoleFull

Comment #54
Anonymous (not verified) commentedYep! Rest tests are not to blame! (and I never doubted it 😁)
Pure requests on creating node lead to the same result in #53:

I also remembered that we already had problems with long-time requests: #2866056: ResourceTestBase should not have a timeout. We switched to the BTB client, where it without time limit (for convenience of debugging). But it seems it has helped not only to debug, but also concealed the leak.
Comment #55
tacituseu commented@vaplas: very interesting :)
Trying #50 forced to use localhost for requests.
Edit: also noticed that something is going on with the CI servers, plenty of jobs missing, some have "No tests found" now (https://www.drupal.org/pift-ci-job/835800).
Comment #56
Anonymous (not verified) commented@tacituseu, :)
#54: incorrect count nodes (2 node for me, instead of 300 for Mr. Bot), sorry.
Edit: Oh 😱 470 in the patch name, but 465 in the real! But 465 is up to the tipping point. I counted 470 before sending the patch, but corrected only the name. My super bad (((
Comment #57
Anonymous (not verified) commentedo_O. 2 (#54) or 300 (#56) for Mr. Bot is practically indifferent.Apparently because of the magic fixation from @tacituseu with a locking write file.Edit: I'm very sorry, see Edit in prev post.
Comment #58
tacituseu commentedEven if there isn't anything wrong with #2800873: Add XML GET REST test coverage, work around XML encoder quirks itself, it does look like it is responsible for current state of things (as mentioned in #47). I don't hang around REST and test conversion issues so can't really be of much help, if it would 'ring bells' to anyone what might be behind it, I'd expect it would be @Wim Leers.
Re #57: trying more test runs for them.
Comment #59
tacituseu commentedAlso 'Less magic' version ;)
Comment #60
tacituseu commentedNow also with less manual patch editing bugs ;)
Comment #61
Anonymous (not verified) commented#58: @tacituseu, absolutely agree! It's silly not to ask for help from @Wim Leers, especially in such a topic as REST. I sent him a request to help in one of rest-issues.
But perhaps we are trying to combat the problem at the wrong pitch. Even if we did not have a single rest-test, why the number of tests in #53 affects their speed of execution? Are they not idempotence? If for the first attempt the test is performed in 2 seconds, then why does it take up to > 20 minutes after 500 attemps?
Comment #62
tacituseu commentedForgot to release the lock...
Comment #63
Anonymous (not verified) commentedUpdated title and IS
Comment #64
Anonymous (not verified) commented#62 handmade semaphore - nice idea! Bit fix (
r+/a+)Comment #65
tacituseu commentedHaving hard time re-inventing this wheel, might as well use proper one ;)
Edit: yeah, based it on what Symfony did, but botched it somehow, this one uses the proper component.
Comment #66
tacituseu commentedEdit:
Also this tweet from @drupal_infra.
Comment #67
tacituseu commentedAaaaany time now... ;)
Edit: No
symfony/filesystemin core...Comment #68
tacituseu commentedwtf.php'ed results from #64 and it helps a little, but shuffle still wins.
Comment #69
tacituseu commentedComment #70
tacituseu commentedPatch from #54 + disabled debug output handler.
Comment #71
tacituseu commentedComment #72
tacituseu commentedComment #73
tacituseu commentedEdit:
apc-usage-track-1.patch:by forcing deleting of expired entries from APCU cache in, the one fail is just fromApcuBackendit manages to end the tests without filling it up (500MB free at the end)ApcuBackendTestnot expecting this behaviour.Also, from
Drupal\Core\Cache\ApcuBackend:I don't think APCU cache works the way
ApcuBackendassumes,ApcuBackenddoesn't set$ttlfrom http://php.net/manual/en/function.apcu-store.php
so it just fills upEdit: data analysis/graphing failure :(
Comment #74
tacituseu commentedComment #75
dagmarI'm not sure if this helps, but while working on #2339235: Remove taxonomy hard dependency on node module I just saw a similar situation with an EntityResource. I created #2931027: TermJsonCookieTest is failing locally but TermXmlCookieTest works
Comment #76
tacituseu commentedEdit: Trying to get an overview of what lurks in the cache, as the usage stats script seems to be compute intensive (aborted bad run in #73) I'm firing it only for the first occurrence, but in order to get it I need to catch a bad run.
Comment #77
Anonymous (not verified) commentedWhile @tacituseu carries out clever heuristic research (👍), I'm playing with wtf-charts. The new version allows to more clearly compare the time ranges of several builds (just specify them in the query args like
?ids=40837+40783+41253+41223).Here's an example of chart with 'shuffle', '#25/1 lucky builds', + two others from #73.

So, all except 'random sort' have a straight line on the rest-tests range (long or short). Something is definitely overflowing due to requests.
#75: The problem with testing TermJsonCookieTest is shown only via
run-tests.sh? If yes, it is very interesting. However, we have never received an random fail here due to 'No route found that matches' like in your case.Can you check
php vendor/bin/phpunit -c core core/modules/rest/tests/src/Functional/EntityResource/Termor
php vendor/bin/phpunit -c core core/modules/rest/tests/src/Functional/EntityResource/Term/TermJsonCookieTestI cann't reproduce fail with
TermJsonCookieTestlocaly.Perhaps something with firewall or antivirus or server settings?
Comment #78
tacituseu commented@vaplas: that's one way to call it ;) but I think something does not like it, trying to add tests to #76 I keep getting:
...so I'll wind my heuristic'ing down for a bit ;D
Comment #79
dagmarAmazing work here, I will try to add some comments from another point of view based on other tickets related to APCU.
#1281408: Add a compressing serializer decorator Mention that:
But also needs profiling. Maybe this issue can help to determine if the use of compressed caches is improving testing speed.
Then, #2765271: Rationalize use of the 'discovery' cache bin, since it's stored in the limited size APCu by default
And finally #2832450: Multilingual config cached in "config" cache bin; quickly reaches APCu memory limits
Are some of the resources tests running with different languages?
Comment #80
MixologicHeyo, testbot maintainer here.
Feel free to hit me up anytime y'all want to work on a real testbot too. I can put your ssh key on one, and we can set the timeout to however long we need to do any analysis.
And yes, the testbots are now configured to use a network, but really that means that instead of http://localhost, there is just an entry inside of /etc/hosts for the container pointing at 127.0.0.1, so in essence, it'd still using localhost.
Re #55
Thats me doing branch test cleanups. Any passing tests that had a newer, passing build on dispatcher had its build removed. HOwever, it wasnt supposed to cause core to re-fetch those tests, which caused those to not be able to find the result set. I'll have to see why those are re-fetching, and restore them, but assume they are just passing branch tests.
The other thing that has changed recently is that we're now on a different underlying hardware instance (c4.8xl's, and we used to be on cc2.8xls) - which means we have 36 cpus instead of 32.
Comment #81
tacituseu commented@Mixologic:
1. if there are 4 more cores, wouldn't it make sense to raise concurrency to 35 ?
2. how to get logs out of an aborted run, the 'Build Artifacts' are somewhat scarce for them (e.g. https://www.drupal.org/pift-ci-job/837848 from #73).
3. any idea what might have caused #78 (had Internet issues at the time so possibly IP changed, but don't see how that could be the cause) ?
Comment #82
tacituseu commentedTrying to find out what is responsible for flushes.
Edit: incomplete patch, needs work, also there are more players to this, might even be some rogue
apcu_clear_cache().Comment #83
MixologicRe #81
1. It might, but I've tried running the testbots on a machine with considerably more cores, and after a certain point, cpu stops being the limiting factor, and there is some other resource blocking. I've been intending to upgrade the kernel on the testbots in order to fire up some eBPF tracing to get us some observability and see if I can make some adjustments. It might be that apache config is the bottleneck, or disk iops, or the db.
2. Theres not a lot we can do to get more build artifacts, other than setting up a special environment that doesnt time out. when jenkins kills the build, it kills it before anything finishes gathering artifacts.
3. I cant really understand how you're getting an http response code in #78 at all? does the file_put_contents resolve to a url or something?
Comment #84
Anonymous (not verified) commentedSorry, I fell out of this fight a little. Thanks to @dagmar and @Mixologic for additional assumptions and feedback! And, of course, thanks to @tacituseu for his relentless struggle with it!
I want to test #53 a bit more intensively (sorry for this retrospective noise).
Why? Because #56 was not only passed, but it also has incredible acceleration if compare with #53. However, this did not happen in #64, where we realized the supposed cause of acceleration. This is a bit strange.
Edit:
Comment #85
tacituseu commentedRe #83
Thanks for the info.
3. I mean, when I click Add test / retest trying to add another run I'm redirected to https://www.drupal.org/403 o_O.
Edit: thinking about it, it could just be messed up node_access table entry on d.o.
Comment #86
tacituseu commentedre-upload of #76
Edit: I think trying to catch it when the apcu_store is already failing is too late, most likely at the same time another request is emptying it.
Also should be
apcu_cache_info()instead ofapc_cache_info()in original script.Comment #87
Anonymous (not verified) commentedEdited after the results:

It seems we have a new champion in speed!
The second launch was with PHP 5.5 (so it's 1.5 slower). Apparently @snehi decided to joke us ;) (although perhaps this is really a useful test, I just did not immediately notice the version of the PHP and a bit confused by the contrast in speed)
#56 performance was due to my stupid mistake. I indicated the wrong number runs in the patch, and it was performed before breaking point. So the slow speed 'file lock' in #84 now perfectly correlates with the other research about it.
15 and 24 concurency already stuck.
Comment #88
tacituseu commentedRe #84: nice, too bad
apc.entries_hintisPHP_INI_SYSTEMonlyEdit: too slow, other request flushed cache before it started gathering statistics, so the one caught is right after the flush.
Comment #89
Anonymous (not verified) commented#88: woot! I applied this frontal clean cache under the influence of your analysis 💎. Are we close to catching this beast by the tail?)
Also I made a diabolically unfortunate mistake in #56 (see the updated Edit). Very sory :(
Comment #90
tacituseu commentedRe #88: maybe with shuffle+apcu_clear_cache it will go under 15min ;)
Looks like you called it in #23 :).
Comment #91
Anonymous (not verified) commented#90: xD
Comment #92
tacituseu commentedPerhaps this will do it ?
Edit: botched it again...
Comment #93
tacituseu commentedEdit: still not able to catch the APCu cache flusher, it might mean it is outside of
\Drupal.Comment #94
tacituseu commentedEdit: no luck, concurrency 35 variant same as 31, 48 variant slower.
Comment #95
MixologicSo, this is revealing of something which may be related to apcu in general. It's supposed to *speed things up*, and for a while, we didnt have it at all on the php7 environments, because it didnt exist.
https://www.drupal.org/project/drupalci_environments/issues/2847419
When I added it, we lost about 5 minutes per test.
Adding apcu_cache_clear() at the end of a browser test is *not* just clearing out that tests cache. Its dumping the entire cache, including whatever it is we've got cached for the other 31 processes running elsewhere.
Im guessing that whats going on here is that we're getting heavy apcu fragmentation, we're dumping the whole thing randomly as well:
https://medium.com/@davidtstrauss/avoiding-the-pitfalls-of-apcu-4aa9de00...
I might fire up a server and just completely disable apcu to see what the timing is like.
Comment #96
tacituseu commentedRe #95: patch in #93 is trying to catch
the code path of flushing mechanism, but I'm still missing something, the
Drupal\Core\Cache\ApcuBackenditself tries to play nice with others:There is
apcu_clear_cacheinDoctrine\Common\Cache\ApcuCache(doFlush()), that's why in #82 I mentioned it might be unexpected/done outside of Drupal cache backend (see the apcu-free-over-testrun-40852.png graph).I also expect plotting @vaplas'es graph with APCu free over time one will show that the flat spots/slowdowns are when the cache is full (my LibreOffice is having issues with the dataset size though ;)).
Then there are also
Drupal\Component\FileCache\ApcuFileCacheBackend,Symfony\Component\ClassLoader\ApcClassLoaderthat seem to have no concept of flushing.Comment #97
tacituseu commentedHere's the chart made from reduced set (5K out of 44K), reason I had problems with graphing might be because some test are running in different timezone and I didn't use UTC (duh!), charts overlaid by hand in graphics editor, so it might have slight offset, but it correlates well enough ;).
Comment #98
MixologicI just re-ran the current test suite with apcu completely disabled (well, I hacked all the checks looking for apcu_fetch to look for Xapcu_fetch), and we yielded:
Test run duration: 22 min 10 sec
APCu is not helping the tests run faster.
Comment #99
tacituseu commentedThis will try to gather stats every 5 minutes, instead of hoping for bad run and luck catching (#88 was too slow, other request cleared it when it was trying to gather stats).
Edit: running into php memory limit... but even with barely anything in it (15M) there was 15K entries.
Comment #100
tacituseu commentedTrying simpler version.
Edit: still exhausting memory, but even at only 253.77MB used there are 250K entries !
Comment #101
tacituseu commentedTrying to get it raw.
Edit: this won't work, logs would be GB in size.
Comment #102
tacituseu commentedEdit:
apc-usage-track-2.4.3.patch: won't work same reason as #101apc-usage-track-2.4.4.patch: still not enough memoryComment #103
MixologicJust tried a test run with 8gb of apcu, php7, sqlite.
Test run duration: 54 min 34 secComment #104
tacituseu commented@Mixologic: try changing
apc.entries_hint(to ??? 1-2 millions ???).Comment #105
tacituseu commentedEdit: 4GB does the trick ;)
A lot of 1K.bootstrap:user_permissions_hash:authenticated,ayl5fozdstyle entries. Leads toDrupal\Core\Session\PermissionsHashGenerator::generate()Comment #106
MixologicVery interesting. with
apc.entries_hint = 4500000:Test run duration: 22 min 36 secEdit: also with
apc.shm_size = 8000MComment #107
tacituseu commentedModified patch from #89.
Comment #108
tacituseu commented@Mixologic: noticed some things poking around:
1. SQLite testruns are only so quick because they don't actually run anything for
--types "PHPUnit-FunctionalJavascript"part (see HEAD https://dispatcher.drupalci.org/job/php7_sqlite3.8/5258/)2. there's relatively new error in apache-error.log:
sh: 1: -t: not foundpossibly this ?
3. there's another one in test.apache.error.log
[Thu Dec 21 11:51:33.170639 2017] [:error] [pid 27182] [client 172.18.0.3:33143] PHP Warning: POST Content-Length of 8392099 bytes exceeds the limit of 8388608 bytes in Unknown on line 0, referer: http://php-apache-jenkins-php7-mysql5-5-4554/subdirectory/node/add/articleRe #106: @vaplas'es hunch from #23 100% confirmed, good he stuck to it in spite of my sidetracking :D
Comment #109
MixologicIm skipping the FunctionalJavascript tests on purpose. they run one at a time, and dont do a whole lot to apc anyhow. But interesting that there must be some kind of bug with my recent deploys for sqlite and functionaljavascript tests, so the speed Im reporting is purely the first run of tests, and just run-tests.sh, not the whole build.
2. Thats definitely something trying to send mail. Seen that before.
3. Im not sure what would be posting 84mb articles as a test. does that always happen, or just sometimes?
I tried another test with setting the apc.ttl = 300 to keep the cache evicting on a regular basis, but also keep the shm_size down to 2000M + apc.entries_hint = 1500000
The entries did hover between 900,000 and 1,200,000, fragmentation was at 100% and the tests took
Test run duration: 25 min 45 secSo, Im not totally sure what the best option here is. We definitely want to hint the apc entries, but we also need to clear those out. I dont know enough about the cache bin key system to know whether or not adding another step at the test cleanup phase to iterate over all the cache keys set during a test and evicting them manually will save us any time, or how quick that'd be.
But regardless, we know that we either need to do something to keep memory usage down, or we need to bump up the apc.shm_size to something massive (6-8gb) to never have errors/issues.
Im very tempted to say this is a critical bug in the APC Cache Backend, and that it should properly handle an apc_store() that fails (if it can)
Comment #110
MixologicJust for more confirmation, setting the shm_size to something small, like 200M, took 2 hrs, 36 min to run, and had 15531 exceptions for 'unable to allocate memory for pool'.
So too small creates memory errors, but big enough to hold everything becomes so unwieldy that test time doubles.
Perhaps the best thing really is to set the ttl, unless we have a way to clear out *just* a single tests cached entries.
Comment #111
Anonymous (not verified) commented#97: Сool graphs. I also tried to draw up it, and this further confirmed it (wtf-memory). But I think I'm late with this :) So just leave a souvenir.




#99:
#100
#102/1
#102/2
I also tried to play with threads (but this is not accurate, because the distribution is done based on the logic of the free threads, not the flow number data). See wtf-clines. And graphs (based on #25/4):



All tests:
Only rest and hal:
Only tests that performed more than 100 seconds:
To be honest, I do not see any benefit from this graph, just for beauty 🎨
#109: Perhaps #2272685: Incorrect handling of invalid cache items in apcu backend fixed this APC bug?
Comment #112
Anonymous (not verified) commented(if someone intersing the graph with concurency lines)
Filters in the end of function getInfo(). Also more info when hover on block.
Comment #113
Anonymous (not verified) commentedComment #114
Anonymous (not verified) commentedOh, I overlooked the #105 research! 🚀
#108: I just sat on this point because of the limit of my knowledge in other areas;) Technically, I was not so sure of anything and just gave out ideas. I'm glad you could get to that in real. 💎
Comment #115
tacituseu commentedRe #109:
1. yes, I meant daily testing, not the speeds reported here
3. article is ~8MB in size, just 3.5K over the limit, will try to track that down
Re #110:
selective cleaning should be possible for
ApcuBackend, not so sure aboutApcuFileCacheBackendandApcClassLoader,apc.ttlset to default (0) is bad indeed, went over the issues that touchedApcuBackendto see what the intention was but didn't find much besides #2581395: Incorrect expiration in APCUBackend that removed $ttl parameter fromapcu_store()calls.Re #111:
Thanks for proper charts and the script, mine was a bit of a pain, LibreOffice kept crashing or taking forever just to resize/change something even with one data series, so just painted it over your chart ;), also need to start using gmdate() to get consistent timestamps in mem-index.log. #2272685: Incorrect handling of invalid cache items in apcu backend might be a step in the right direction indeed.
Comment #116
tacituseu commentedMore memory tracking.
Edit: makes no difference but confirmed 'expunges' are responsible for flushes.
Comment #117
Anonymous (not verified) commentedMore data - more images!)
41767
41768
Comment #118
Anonymous (not verified) commentedComment #119
tacituseu commentedRe #117: Thanks for the charts :)
Patch trying to limit the main polluter (
ApcClassLoader).Edit: much better... needs more work though
under 1M entries per test-run
Comment #120
tacituseu commentedSame for
ApcuFileCacheBackend.Edit: better still. under 300K entries per testrun.
Comment #121
Anonymous (not verified) commented@tacituseu, be careful, please! A couple more of these patches, and the time for all the tests will be -1 second. This can cause conflict not only between physical laws, but also with my charts (because they are based on the fact, that the time of first test is less than the last test). 😱
Charts:
BTB::tearDown() apcu_delete(new \APCUIterator('/^' . $this->databasePrefix)) # not worksindex.php:: apcu_clear_cache()DrupalKerner::initializeSettings prefix magicDrupalKerner::initializeSettings + setConfiguration prefix magicComment #122
tacituseu commented@vaplas: Thanks :D, aaaalmost there, there might be some problems with this approach judging by the test failures, might get faster yet with proper hinting in environments, and increasing cache size to 2,5GB.
Comment #123
Anonymous (not verified) commentedYep, in secret from everyone, I hoped that solving this problem would lead to a solution for #2906317: Random fail due to problems with database too) But looks like not.
Attempt to clean up the failures in ClassLoaderTest.
Comment #124
tacituseu commentedComment #125
Mixologicwow wow wow. This is awesome work.
Comment #126
Anonymous (not verified) commentedWell, @tacituseu noted that this settings were removed due to random fail in Update tests (#2749955: Random fails in UpdatePathTestBase tests). Let's check how they behave now. Also, looks like the shared prefix is not suitable for testing ClassLoaderTest. Apparently for such tests we need to leave a unique prefix.
The patches uses #124, although it seems #120 faster.
Perhaps we can also change getApcuPrefix() using #120 approach. (Maybe even in a separate issue, but now just quick workaround to eliminate a strong subsidence in testruns).
Comment #127
Anonymous (not verified) commentedoops, an incorrect mask for *Update* tests.
Comment #128
Anonymous (not verified) commentedHm.. "update* tests" while work without random fail. By my typo with filter Update* tests showed strange subsidence when spinning only one test (#126). Perhaps an increased number of collisions or fragmentation.

Checking the same patches, but with #120.
Comment #129
Anonymous (not verified) commentedComment #130
tacituseu commentedRe #126: #124 is equivalent to #120, while trying to make those bins reusable I noticed that this was just re-inventing it. Random fail in UpdatePathTestBase tests was caused by garbage collector bug (#2828559: UpdatePathTestBase tests randomly failing).
Comment #131
tacituseu commentedJust to be sure, patch from #126 with logging.
Edit: yup, speed and entries-wise same as #120 and #124 but less hack'y and without the failure, still would like to see how it fares on environments with proper hinting but it's pretty much up to the maintainers what to do now.
Comment #132
Anonymous (not verified) commented#128oh, apcu is a dangerous thing, it should be kept away from children.
#130: @tacituseu, thanks for the correction as always!
#131:
remained cheat :)
Also logging UpdatePathTestBaseTest tests from #126.
Comment #133
tacituseu commentedRe #132: Thanks for correction :D, applied wrong patch (
apcu-ensure-unique-prefix-false-mem-track.patch) on top of yours, no idea how I managed to do that (/facepalm).Re #128: some of the bins (especially
drupal.apcu_backend) are required to be per-instance (that's why I only toucheddrupal.class_loaderanddrupal.file_cache).Drupal\Core\Cache\ApcuBackendFactorydoes:hence the failures.
Edit:
2930022-124-prod-mem-track.patch: around 400K cache entries and slightly lower hits/misses ratio (93).Comment #134
Anonymous (not verified) commented#132: It seems, when configuring apcu prefix via
prepareSettings(), it does not works forUpdatePathTestBaseTest(or does not work well enough). But this is strange, becauseUpdatePathTestBasecall this method:There may be something else with the installation or update process?
Unfortunately, mem-track for
update.phpdoes not collect as much information asindex.php(peaks analysis did not reveal any oddities).But you can see how apcu memory quickly ends and then starts again.
Perhaps it also makes sense to pay attention to
/core/rebuild.php(it seems there is also work with apcu)?Comment #135
tacituseu commentedChecked for
/core/rebuild.phpin #93, looks like it isn't tested/used during testrun (log).Comment #136
Anonymous (not verified) commented#93/#135 wow, really! It was one of the periods, when I did not keep up with your research :) 🏎️
#134: Perhaps the tests for updates are simply themselves heavy, and therefore reduce memory faster. But a couple of additional scans can not hurt. (Surely, most apcu heavy process is
doInstall()andrunUpdates(). But how much? And what if something suddenly appears due to concurency.)Edit:

Well, if I did not get it wrong, the most apcu memory loss occurs during installation (this is not a surprise).
But the delays is not there. They occur in UpdatePathTestBase::runUpdates(). Between
Here is the zoomed size of this period.

See also 41983-statistics.txt with full times between these methods. TL;DR:
Comment #137
Anonymous (not verified) commentedData for the previous post (will be updated soon).
Edit:
UpdatePathTestBase::runUpdates():
$this->checkForMetaRefresh();here is a method in which the freeze occurs! (if the calculations are correct, of course).
Comment #138
tacituseu commented@vaplas: not sure, but it could be because updates are run via Batch API and
$this->checkForMetaRefresh();just waits for batch to finish.Edit: still 4069 is quite a bit too long.
Comment #139
Anonymous (not verified) commented#138: @tacituseu, great points!
1. Looks like
checkForMetaRefresh()is a really over-patient method, and it can give way to many other methods (including the samecheckForMetaRefresh()methods from other tests). (proof log calls between updateUrl and checkForMetaRefresh of the most prolonged test from #1362.
Fair enought) Unfortunately, this is not a time collapse, In a new method of statistics, I subtracted one date from another, without converting to timestamp
(/facepalm).
The real data:
#136:
#137 (it has more short periods):
And more accurate (exactly around the
checkForMetaRefresh)Comment #140
Anonymous (not verified) commentedJust for interest, I counted how many other
checkForMetaRefresh()methods, while test80722149/testUpdateHookN was frozen. Answer:30 (+1 himself). Also exactly 30 new tests were started (+1 himself).In other words, the test
test80722149/testUpdateHookNwas completed only after 30 otherscheckForMetaRefresh()calls had accumulated in the queue. Wow.Edit: Okay, this is what @tacituseu said in #138. Now I can more clearly imagine why all 31 concurency were stretched. They're just all waiting until the free Batch. Which may freeze in anticipation of the one X test. And this X test could hang because of problems with the apcu memory (collisions or fragmentation).
Comment #141
Anonymous (not verified) commented#139: Wow, Batch creates some kind of insanity. 11 Mb log (vs 2 Mb in #137).
interdiff between 137/139:
The slowest test: test37230327/testUpdateHookN:
checkForMetaRefresh()was called62times:The fastest test: test53660275/testUpdateHookN
checkForMetaRefresh()was called16times:Comment #142
wim leersI don't know how to help here, except say … WOW, impressive research! 😲👏
Comment #143
Anonymous (not verified) commented@Wim Leers, thanks for the response and inspirational words!
#128-#141: additional research of Update test. Perhaps we can find here something of value. Perhaps not. Unfortunately, I do not know @tacituseu's plan. But it seems to me, that no one is against to commit #2926309-41: Random fail due to APCu not being able to allocate memory (at least like hotfix). Because now issues fail very often, and it's not pleasant.
Comment #144
tacituseu commented@vaplas: For me the failure part is pretty much figured out now, the fix is already implemented so it is just about re-enabling it, I'm all for leaving APC enabled on test runners (even if it doesn't make much difference in speed there as everything is running from RAM anyway - it is important on live sites, so stress testing it is valuable), so +1 for #2926309-43: Random fail due to APCu not being able to allocate memory.
Before doing more tuning I'd like to see
apc.entries_hintincreased in environments (as a follow-up to #2926309: Random fail due to APCu not being able to allocate memory), to make sure we're not dealing with the same bottleneck.I would also like to see some
hook_requirementsfollow-up to warn users if theirapc.entries_hintis set too low, but that might be tricky, would need to figure out how much standard install is using, to at least recommend something within the order of magnitude.Comment #145
Anonymous (not verified) commented@tacituseu, thanks for the detailed explanation. I thought so, because in fact #2926309-43 this is actually your proposal) But in such difficult things for me, I decided not to take risks with statements from your person)
Comment #146
Anonymous (not verified) commented#2926309-60: Random fail due to APCu not being able to allocate memory shows, that *Update* test work better with unique apcu prefix, when multirun 1 tests:

However with different update tests we haven't so terrible delays:

And with all tests we have practically no difference with or without unique prefix for update tests (and for update+install tests too):

x500-UpdatePathTestBaseTest-scan with unique prefix also gives the better result:
Chart available memory:

My main assumption of the advantage of the unique prefix when testing 1 test with many runs: this is just the best avoidance of collisions.
Comment #147
Anonymous (not verified) commentedComment #148
Anonymous (not verified) commentedComment #149
tacituseu commented@vaplas: there's one tiny problem with those
tearDown()tests... ;)Edit: also need to add more data to
update.phpas you noted in #134.Comment #150
Anonymous (not verified) commented@tacituseu: ))) 🙏. Thank you, and thank @alexpott! Indeed #148 absolutely no apcu effect :(
So, let's check 2934002-6.1 from @catch.
Edit:

with unique prefix and apcu_clear_all:
with shared prefix and apcu_clear_all:
with unique prefix and clear by test: stuck after 34 tests (???)
Comment #151
tacituseu commentedEdit: oops, that won't work nicely after #2926309: Random fail due to APCu not being able to allocate memory ;)
Edit: buggy/nasty patch DO NOT add retests.
Comment #152
tacituseu commentedEdit: buggy/nasty patch DO NOT add retests.
Comment #153
Anonymous (not verified) commentedVery interesting! But it seems #151 filled the entire disk, and now running again. Can we somehow stop it?
Comment #154
tacituseu commentedCancellation requested, can't do much more.
Comment #155
MixologicYes, whatever extra logging you're trying to do in #151 stuffed about 36GB into mysql. There's an issue with the testbots where if you do this, the disk fills up but the testrunner doesnt know to pull itself out of the rotation, and then it flushes the rest of the queue with broken tests.
Please, please, do not do this.
Comment #156
tacituseu commented@Mixologic: Sorry about that, it wasn't extra logging, just the amount of errors/browser_output generated by flushes not just flushing after their own test but also for all the others running.
Edit: actually there was a bug in added file
flush.php, it callsCache::getBins()which depends onDrupal::getContainer(), which isn't available yet.Comment #157
Mixologicah. I think I actually got the disk space issue resolved as a result of this. Seems like jenkins wasnt respecting the default "out of space dont use this node" settings, and now that I bumped them higher it shouldnt affect other tests. Carry on.
Comment #158
Anonymous (not verified) commented#157: Mixologic 💎💎💎 Cool improvement!
Let's check #2704571-13: Add an APCu classloader with a single entry on the rate of available memory decrease.
#150: Hm, apcu-clear_by_test-unique stuck after 34 test. Perhaps this partial cleaning significantly increased fragmentation. Or
APCUIteratorsomewhere loops when used for delete. Or I, as always, screwed up.Edit:

with unique prefix and spec APCu classloader:
with shared prefix and spec APCu classloader:
Comment #159
Anonymous (not verified) commentedCharts for #150 and #158.
Hm.. The economy of available memory is not detected. Although locally, it reduced the number of apcu entries even with a shared prefix x5 times. Bit strange to me.
#2926309-66: Random fail due to APCu not being able to allocate memory
Perhaps in the overflow there is no big trouble. In some of our tests, memory was full many times, and everything worked (example, last chart in #146)Edit: I'm lol. Last chart from #146 hasn't overflow memory (minimal memory on the right scale far from zero)Comment #160
Anonymous (not verified) commentedLooks like DrupalCI without free space again?( (https://dispatcher.drupalci.org/view/D8%20Core%20Patches/job/drupal_patc...)
Edit1:
Perhaps after:
Also I came across a very interesting issue from @Chi: #2828706: ExceptionLoggingSubscriber should not log HTTP 4XX errors using PHP logger channel.
The execution time of the no-js tests with patch is 19 min 2 sec.
Can this cause sagging? By the way, in rest/hal tests, access without permissions is pretty much tested too.
Edit2: Or #2931883-12: Unneeded always_populate_raw_post_data requirements check while on CLI. Test run duration: 18 min 59 sec.
Comment #161
Anonymous (not verified) commentedhttps://www.drupal.org/pift-ci-job/849945 vs https://www.drupal.org/pift-ci-job/852382

REST tests run twice as fast o_O! HAL tests without changes.Edit: simply because the tests became two times less: 146 (8.4.x) vs 305 (8.5.x). Why i'm so lol(((
Comment #162
tacituseu commentedRe #159: Looks like #146 charted cli-side APCu usage. Attaching latest mem-tracker.
Re #160: This is weird, don't remember high-error runs (2-3K) causing this issue before.
As for #2828706: ExceptionLoggingSubscriber should not log HTTP 4XX errors using PHP logger channel it ran on 8.4.x, which takes as long even without the patch.
Comment #163
Anonymous (not verified) commented@tacituseu you absolutely right as always! I'm overlooked versions (8.4 vs 8.5).
Comment #164
tacituseu commentedIt also looks like the expunges now happen at much lower usage (still 540MB available vs 34MB it used to be), so it must be terribly fragmented.
Comment #165
Anonymous (not verified) commentedQuick combine mem-index + mem-update (+

undefinedinstead of prev value on count-tests line):At first glance, only the statistics on peaks have changed.
Checking mem-track without slow-tests.
Comment #166
Anonymous (not verified) commentedUnsuccessful theft #43 :)
Comment #167
Anonymous (not verified) commentedPatches with #152 via controller.
#164: sounds very logical.
#166: while nothing suspicious detected. The profit in resources related with diff tests.
Comment #168
Anonymous (not verified) commentedComment #169
tacituseu commented@vaplas: I doubt #168 will work, as there is effectively no garbage collection in
ApcuBackend, try adding$ttlargument toapcu_store()to get desired effect.Also possibly only
'apcu_backend'bins needs flushing for reasons mentioned in #133.Comment #170
Anonymous (not verified) commented@tacituseu++! It really works) Min available apcu memory > 1 970 000 00!


with other metrics
Comment #171
Anonymous (not verified) commentedEdit:
TTL 10 seconds
TTL 200 seconds
Comment #172
Anonymous (not verified) commentedEdit:
#171: Yes. Jump of entries count near 8 minute due to *Installer* tests.
TTL 200 seconds (without installers tests):
Comment #173
Anonymous (not verified) commentedBased on the results, I can assume next:
'apcu_store(): Unable to allocate memory for pool.'- it is due to apcu memory.Well.
Comment #174
Anonymous (not verified) commentedEdit: same data like with simpletest.
Comment #175
tacituseu commentedComment #176
tacituseu commentedit moved ;)
Comment #177
tacituseu commentedLooks safe ;) Funny thing is the
deleteAll()iterator seems to match nothing ;?Comment #178
tacituseu commentedEdit: ugh... right... about that
tearDown().. )) ;)Comment #179
tacituseu commentedComment #180
tacituseu commentedComment #181
tacituseu commentedJust trying to figure something out, ignore this series (starting from #175).
Comment #182
MixologicIm really sad about #160 . I really hate how jenkins functions sometimes. It's got such lackadaisical checking for constraints. It only polls the nodes on a loose schedule and gathers stats about the disk at that time. And the "can it run a job" test only checks what the disk was at the last time it polled, instead of senisbly polling again to determine status. grr...
Comment #183
tacituseu commented@Mixologic: I wonder if those aborted dailies on 8.4.x for PHP 7.2 & MySQL 5.5 CI aren't contributing to that, a lot of errors in each one of them (caused by lack of backport of #2853503: Remove all assert('string') calls from Drupal core because deprecated in PHP 7.2).
Comment #184
MixologicThey dont seem to be, or at least, if those are filling the disk, then jenkins is properly removing those nodes from the rotation, as there should be one every day, and there hasnt been a queue flushing event for about five days now.
Comment #186
tacituseu commented@Mixologic: Re #2342699-121: SqlContentEntityStorage tries to update identity/serial values by default. Just a hunch, but I suspect it might have something to do with #1158322: Add backtrace to all errors, #2857437: pass raw backtrace to loggers for errors, not just exceptions and #2870194: Ensure that process-isolated tests can use Symfony's PHPunit bridge to catch usages of deprecated code, the second and third one would be around the right timeframe.
Printing
debug_backtrace()output tends to be prone to recursions in arguments if not handled properly, the way I'd try to test for that would by combining revert of those with one of the 2K+ error count buggy patches, or by replacing the calls incore\includes\errors.incwithdebug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);instead of the revert.Comment #187
tacituseu commentedSimpler two of the test patches mentioned in #186 attached, rolled against 8.5.x, attached as txt to prevent another event (so they could run in more controlled environment ;).
Comment #188
MixologicIm deploying new PHP containers today, and with that is a newer version of APCu (5.1.9) that has some bugfixes.
Additionally I have added a new vhost to the containers such that if you want to access the apc.php page from within tests, you can hit http://localhost/apc/apc.php and it will respond with the graphs etc I had earlier. I think there's a way to save that data as an artifact, but I dont remember off the top of my head what the best way to do that is.
In addition to the apc.php page, I've also added the apache server-status page as well (http://localhost/server-status) for apache worker information.
Comment #189
MixologicAlmost forgot to mention: APCu is now 3000M, and num_entries hint is 500000.
Comment #190
Anonymous (not verified) commented#188: It sounds very tasty, thank you!
I'll try to try it + few of other experiments.
Comment #191
MixologicMight want to name those .html files since thats what you'll get back.
Comment #192
MixologicThese artifacts would then be renderable by jenkins: https://dispatcher.drupalci.org/job/drupal_patches/47125/artifact/jenkin...
Comment #193
Anonymous (not verified) commented@Mixologic, thanks for hints! I'll take your advice, but first I want to improve my script so that it can use the data from your api.
I also played a little with the new xdebug 2.6 (gc statistics).
Here is an example of gc statistics for
ActionJsonAnonTest::testGet()(but while I do not know how to use it):
Also accidentally discovered a wild bug in https://dispatcher.drupalci.org/job/drupal_patches/47168/consoleFull:
07:23:40 - 07:23:41: 288 tests by 2 seconds :)
Another couple of experiments)
However, it is obvious that we must set a non-zero ttl in php.ini. This is what @Mixologic pointed out in #109, #110. And @tacituseu in #73, #115, #2926309-33/34, and @mpdonadio in 2926309-32. And in my charts show profit from set ttl, too (#170, #171, #172).
At least, to change
ttluntil we can reduce the number of cached entities.Comment #194
Anonymous (not verified) commentedSome negative results, sagging and fluctuations deserve a separate study. But the undisputed champion in reducing the cost of memory and number of entries is #2765271-6: Rationalize use of the 'discovery' cache bin, since it's stored in the limited size APCu by default.
Winner photo:

However, the run time is 2 minutes worse than HEAD.
*Installer* tests still champions in entries/memory costs.
Comment #195
Anonymous (not verified) commentedComment #196
Anonymous (not verified) commentedComment #204
cilefen commentedThis is a support request that has patches. Is it actually a bug report or a task? It hasn't been touched in four years. Is this even still an issue for anyone?
Comment #205
cilefen commentedIt seems not.