Skip to content

Trigger JIT tracing&compilation more often in tests #12250

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 29 commits into from
Closed
Changes from 3 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
ef6db9f
Trigger JIT tracing&compilation more often, enable JIT for ASAN
danog Sep 18, 2023
4e504e1
Revert some changes
danog Sep 20, 2023
2c965c1
Fix
danog Sep 20, 2023
ca53391
Increase JIT buffer size since Psalm get dangerously close to the 16M…
danog Sep 20, 2023
88cf395
Add test for https://github.com/php/php-src/issues/11917
danog Sep 20, 2023
b3a2b3e
Remove jit_prof_threshold
danog Sep 20, 2023
a979682
Run opcache tests with JIT on windows
danog Sep 20, 2023
94714eb
Unify JIT settings and explicitly disable JIT where needed
danog Sep 20, 2023
f397961
Move new JIT test, fixup mac OS builds too
danog Sep 20, 2023
b4ac0e2
Explicitly disable JIT for ASAN builds
danog Sep 20, 2023
8c92c0e
Remove mistakenly added additional 0
danog Sep 20, 2023
8701969
Add phpseclib, psalm, phpstan nightly JIT+ASAN tests
danog Sep 20, 2023
104f03f
Change config in all other CIs
danog Sep 20, 2023
c5af745
Change config in all other CIs
danog Sep 20, 2023
c30b9b3
Fixup config
danog Sep 20, 2023
e11a67a
Improve
danog Sep 20, 2023
665e09c
Improve tests
danog Sep 21, 2023
f822a56
Parallelize
danog Sep 21, 2023
4aa113f
Remove RAM limitations
danog Sep 21, 2023
543b52b
Update
danog Sep 21, 2023
a06eea9
Fix deps
danog Sep 21, 2023
8de7066
Fix deps
danog Sep 21, 2023
1a4d450
Fixup opcache
danog Sep 21, 2023
96f7b74
Reorder
danog Sep 21, 2023
84373f0
fix
danog Sep 21, 2023
f837597
Update to upstream phpseclib
danog Sep 22, 2023
4caf2d6
Improve workflow
danog Sep 22, 2023
12281a4
Remove new tests, move to separate PR
danog Sep 22, 2023
dbd4005
Remove stray line
danog Oct 3, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,14 @@ jobs:
-d zend_extension=opcache.so
-d opcache.enable_cli=1
-d opcache.jit_buffer_size=16M
-d opcache.jit_prof_threshold=0.000000001
-d opcache.jit_max_root_traces=10000000
-d opcache.jit_max_side_traces=10000000
-d opcache.jit_max_exit_counters=1000000
-d opcache.jit_hot_loop=1
-d opcache.jit_hot_func=1
-d opcache.jit_hot_return=1
-d opcache.jit_hot_side_exit=1
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are probably not the best settings, because they will trigger JIT compilation on the first function entry or loop iteration and this sometime may lead to very unnatural traces that will never executed.

Anyway, I think it make sense to start with these settings and then change them to a bit less aggressive. (e.g. 2 or 3).

Note, that these settings may increase the tests time.

Copy link
Contributor Author

@danog danog Sep 20, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am aware they increase test times, JIT compilation on first function entry/loop iteration is precisely why I chose those values, any other value (even 2) already breaks reproduction of bugs like #12249

- name: Test OpCache
uses: ./.github/actions/test-linux
with:
Expand Down Expand Up @@ -199,6 +207,14 @@ jobs:
-d zend_extension=opcache.so
-d opcache.enable_cli=1
-d opcache.jit_buffer_size=16M
-d opcache.jit_prof_threshold=0.000000001
-d opcache.jit_max_root_traces=10000000
-d opcache.jit_max_side_traces=10000000
-d opcache.jit_max_exit_counters=1000000
-d opcache.jit_hot_loop=1
-d opcache.jit_hot_func=1
-d opcache.jit_hot_return=1
-d opcache.jit_hot_side_exit=1
- name: Test OpCache
uses: ./.github/actions/test-linux
with:
Expand Down Expand Up @@ -263,6 +279,14 @@ jobs:
-d opcache.enable_cli=1
-d opcache.protect_memory=1
-d opcache.jit_buffer_size=16M
-d opcache.jit_prof_threshold=0.000000001
-d opcache.jit_max_root_traces=10000000
-d opcache.jit_max_side_traces=10000000
-d opcache.jit_max_exit_counters=1000000
-d opcache.jit_hot_loop=1
-d opcache.jit_hot_func=1
-d opcache.jit_hot_return=1
-d opcache.jit_hot_side_exit=1
- name: Test OpCache
uses: ./.github/actions/test-macos
with:
Expand Down Expand Up @@ -375,6 +399,14 @@ jobs:
echo opcache.enable_cli=1 >> /etc/php.d/opcache.ini
echo opcache.protect_memory=1 >> /etc/php.d/opcache.ini
echo opcache.jit_buffer_size=1G >> /etc/php.d/opcache.ini
echo opcache.jit_prof_threshold=0.000000001 >> /etc/php.d/opcache.ini
echo opcache.jit_max_root_traces=10000000 >> /etc/php.d/opcache.ini
echo opcache.jit_max_side_traces=10000000 >> /etc/php.d/opcache.ini
echo opcache.jit_max_exit_counters=1000000 >> /etc/php.d/opcache.ini
echo opcache.jit_hot_loop=1 >> /etc/php.d/opcache.ini
echo opcache.jit_hot_func=1 >> /etc/php.d/opcache.ini
echo opcache.jit_hot_return=1 >> /etc/php.d/opcache.ini
echo opcache.jit_hot_side_exit=1 >> /etc/php.d/opcache.ini
- name: Test AMPHP
if: matrix.branch.ref != 'PHP-8.0'
run: |
Expand Down