-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
reduce process isolation overhead #5749
Comments
some more food for thinking: maybe we can utilize pcntl_fork() instead of creating subprocesses. |
bit of progress:
I tried these and did not find any measurable differences..
started looking into a POC for subprocess forking. stay tuned. |
I've also been investigating ways to speed up our test suite, which makes heavy use of process isolation, but unfortunately I haven't found anything that helps without major caveats. You mentioned file-based opcaching. I tried that by setting
|
I am kind of specialized in perf analysis. If you can give me access to the test suite I can analyze for perf optimization possibilities. Feel free to contact me outside this issue |
@staabm Thanks for the offer, but this is proprietary source code. One question: what did you use to generate the screenshot with the performance graph? I've been using XDebug to generate cachegrind profiles and analyzing them using |
Blackfire.io My tooling also works on closed source codebases ;-) |
another thing I tried unsuccessfully: inspired by php/php-src#13778 I tried using |
according to symfony/symfony#43162 (comment) I need to test again with php 8.3+ and maybe on a different os |
while looking more into phpunit performance, I was profilling subprocesses:
I think it is pretty interessting that running a test in isolation can be dominated by e.g. script compile time.
I wonder whether we can - per default - set a few options for the subprocesses used by process-isolation, e.g.
-d opcache.jit=disable)
to disable jit overhead-d opcache.validate_timestamps=0
-d zend.enable_gc=0
disable GC?another thing which came to mind: could we place the test beeing run separate from the "framework" code required to run in isolation, so the "bootstrapping" of the isolated processes don't need to re-compile everything but at best only the actual test-case?
one last thing: maybe we can utilize opcache preloading?
file based opcode caching?
https://stackoverflow.com/a/35880017
The text was updated successfully, but these errors were encountered: