Re: [PHP-DEV] JIT for PHP project
> The project is in the very early development stage. > > Now, JIT passes almost all PHPT tests, makes 3 times speed-up on bench.php > and no significant difference on real-life apps (+/-5% depended on > opcache.jit setting. > Have you tried to measure in frameworks as PHP script daemon, such as Amp, ReactPhp, etc...? Perhaps there will be two-fold increase in performance. If yes, then this is a good argument to implement in PHP 8, native application server, like Express in Node.js? Thank. -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP-DEV] JIT for PHP project
Hi Dmitry, Thanks for the info. Probably I'm just too curious :) Please count on me once it becomes relevant to hand out some part. Regards Anatol > -Original Message- > From: Dmitry Stogov [mailto:dmi...@zend.com] > Sent: Wednesday, October 26, 2016 1:31 PM > To: Anatol Belski <anatol@belski.net>; 'PHP internals list' > <internals@lists.php.net> > Cc: Zeev Suraski <z...@zend.com>; Xinchen Hui <xinche...@zend.com> > Subject: Re: [PHP-DEV] JIT for PHP project > > Hi Anatol, > > > The project is in the very early development stage. > > Now, JIT passes almost all PHPT tests, makes 3 times speed-up on bench.php > and no significant difference on real-life apps (+/-5% depended on opcache.jit > setting. > > We are hardly working, implementing new ideas... > > > I think it's too early to port this to Windows. Once, we think, we are ready, I'll > ask your help. > > I suppose we won't need ELF->COFF porting, because we construct ELF objects > just to debug JITed code in GDB and read PHP ELF object for simple symbol > resolution in disassembler (most probably, both won't work on Windows > anyway). > > zend_jit_x86.dasc will have to be adopted to support Windows calling > convention, of course. > > > Thanks. Dmitry. > > > > > > > From: Anatol Belski <anatol....@belski.net> > Sent: Wednesday, October 26, 2016 1:49:49 PM > To: Dmitry Stogov; 'PHP internals list' > Cc: Zeev Suraski; Xinchen Hui > Subject: RE: [PHP-DEV] JIT for PHP project > > Hi Dmitry, > > > -Original Message- > > From: Dmitry Stogov [mailto:dmi...@zend.com] > > Sent: Thursday, September 1, 2016 1:57 PM > > To: PHP internals list <internals@lists.php.net> > > Cc: Zeev Suraski <z...@zend.com>; Xinchen Hui <xinche...@zend.com> > > Subject: [PHP-DEV] JIT for PHP project > > > > Hi @internals, > > > > I'm glad to say that we have started a new JIT for PHP project and > > hope to deliver some useful results for the next PHP version (probably 8.0). > > We are very early in the process and for now there isn't any real > performance > > improvement yet. So far we spent just 2 weeks mainly working on JIT > > infrastructure for x86/x86_64 Linux (machine code generation, > disassembling, > > debugging, profiling, etc), and we especially made the JIT > > code-generator > as > > minimal and simple as possible. The current state, is going to be used > > as > a > > starting point for research of different JIT approaches and their > usability for PHP. > > > > The code is available at: > > https://github.com/zendtech/php-src/tree/jit- > > dynasm/ext/opcache/jit > > > > The sources may be built and tested as regular PHP (no any special > external > > dependencies required). > > JIT itself is implemented as a part of Opcache. > > You may try it in action: > > > > sapi/cli/php -d opcache.jit_buffer_size=32M Zend/bench.php > > sapi/cli/php -d opcache.jit_buffer_size=32M -d opcache.jit_debug=1 > > Zend/bench.php 2>&1 | less > > > > As I mentioned we didn't try to achieve any real performance > > improvement > yet, > > although we do currently see 20% speedup on bench.php, but a bit of a > > slowdown on real-life apps. > > > > Wish us luck :) > > > I just wanted to ask about the status. After starting to do some basic work > https://github.com/zendtech/php-src/compare/jit-dynasm...weltling:jit-dynasm > I've stumbled upon a couple of things > > - in zend_elf.c, the current binary that loads php is being read in, I guess this part > needs to be ported to parse the Windows COFF format > - with DynASM, seems zend_jit_x86.dasc will need to be extended for some > compatibility, please correct if I'm wrong > > Regarding these, maybe you've one or another tip for me? Is this still relevant? > Or I jump into it too early? > > Thanks > > anatol > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DEV] JIT for PHP project
Hi Anatol, The project is in the very early development stage. Now, JIT passes almost all PHPT tests, makes 3 times speed-up on bench.php and no significant difference on real-life apps (+/-5% depended on opcache.jit setting. We are hardly working, implementing new ideas... I think it's too early to port this to Windows. Once, we think, we are ready, I'll ask your help. I suppose we won't need ELF->COFF porting, because we construct ELF objects just to debug JITed code in GDB and read PHP ELF object for simple symbol resolution in disassembler (most probably, both won't work on Windows anyway). zend_jit_x86.dasc will have to be adopted to support Windows calling convention, of course. Thanks. Dmitry. From: Anatol Belski <anatol@belski.net> Sent: Wednesday, October 26, 2016 1:49:49 PM To: Dmitry Stogov; 'PHP internals list' Cc: Zeev Suraski; Xinchen Hui Subject: RE: [PHP-DEV] JIT for PHP project Hi Dmitry, > -Original Message- > From: Dmitry Stogov [mailto:dmi...@zend.com] > Sent: Thursday, September 1, 2016 1:57 PM > To: PHP internals list <internals@lists.php.net> > Cc: Zeev Suraski <z...@zend.com>; Xinchen Hui <xinche...@zend.com> > Subject: [PHP-DEV] JIT for PHP project > > Hi @internals, > > I'm glad to say that we have started a new JIT for PHP project and hope to > deliver some useful results for the next PHP version (probably 8.0). > We are very early in the process and for now there isn't any real performance > improvement yet. So far we spent just 2 weeks mainly working on JIT > infrastructure for x86/x86_64 Linux (machine code generation, disassembling, > debugging, profiling, etc), and we especially made the JIT code-generator as > minimal and simple as possible. The current state, is going to be used as a > starting point for research of different JIT approaches and their usability for PHP. > > The code is available at: https://github.com/zendtech/php-src/tree/jit- > dynasm/ext/opcache/jit > > The sources may be built and tested as regular PHP (no any special external > dependencies required). > JIT itself is implemented as a part of Opcache. > You may try it in action: > > sapi/cli/php -d opcache.jit_buffer_size=32M Zend/bench.php sapi/cli/php -d > opcache.jit_buffer_size=32M -d opcache.jit_debug=1 Zend/bench.php 2>&1 | > less > > As I mentioned we didn't try to achieve any real performance improvement yet, > although we do currently see 20% speedup on bench.php, but a bit of a > slowdown on real-life apps. > > Wish us luck :) > I just wanted to ask about the status. After starting to do some basic work https://github.com/zendtech/php-src/compare/jit-dynasm...weltling:jit-dynasm I've stumbled upon a couple of things - in zend_elf.c, the current binary that loads php is being read in, I guess this part needs to be ported to parse the Windows COFF format - with DynASM, seems zend_jit_x86.dasc will need to be extended for some compatibility, please correct if I'm wrong Regarding these, maybe you've one or another tip for me? Is this still relevant? Or I jump into it too early? Thanks anatol
RE: [PHP-DEV] JIT for PHP project
Hi Dmitry, > -Original Message- > From: Dmitry Stogov [mailto:dmi...@zend.com] > Sent: Thursday, September 1, 2016 1:57 PM > To: PHP internals list> Cc: Zeev Suraski ; Xinchen Hui > Subject: [PHP-DEV] JIT for PHP project > > Hi @internals, > > I'm glad to say that we have started a new JIT for PHP project and hope to > deliver some useful results for the next PHP version (probably 8.0). > We are very early in the process and for now there isn't any real performance > improvement yet. So far we spent just 2 weeks mainly working on JIT > infrastructure for x86/x86_64 Linux (machine code generation, disassembling, > debugging, profiling, etc), and we especially made the JIT code-generator as > minimal and simple as possible. The current state, is going to be used as a > starting point for research of different JIT approaches and their usability for PHP. > > The code is available at: https://github.com/zendtech/php-src/tree/jit- > dynasm/ext/opcache/jit > > The sources may be built and tested as regular PHP (no any special external > dependencies required). > JIT itself is implemented as a part of Opcache. > You may try it in action: > > sapi/cli/php -d opcache.jit_buffer_size=32M Zend/bench.php sapi/cli/php -d > opcache.jit_buffer_size=32M -d opcache.jit_debug=1 Zend/bench.php 2>&1 | > less > > As I mentioned we didn't try to achieve any real performance improvement yet, > although we do currently see 20% speedup on bench.php, but a bit of a > slowdown on real-life apps. > > Wish us luck :) > I just wanted to ask about the status. After starting to do some basic work https://github.com/zendtech/php-src/compare/jit-dynasm...weltling:jit-dynasm I've stumbled upon a couple of things - in zend_elf.c, the current binary that loads php is being read in, I guess this part needs to be ported to parse the Windows COFF format - with DynASM, seems zend_jit_x86.dasc will need to be extended for some compatibility, please correct if I'm wrong Regarding these, maybe you've one or another tip for me? Is this still relevant? Or I jump into it too early? Thanks anatol -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DEV] JIT for PHP project
Is planned async/await and native event-loop (maybe libuv)? Thank. -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DEV] JIT for PHP project
Hey: On Thu, Sep 1, 2016 at 7:57 PM, Dmitry Stogovwrote: > Hi @internals, > > I'm glad to say that we have started a new JIT for PHP project and hope to > deliver some useful results for the next PHP version (probably 8.0). > We are very early in the process and for now there isn't any real > performance improvement yet. So far we spent just 2 weeks mainly working > on JIT infrastructure for x86/x86_64 Linux (machine code generation, > disassembling, debugging, profiling, etc), and we especially made the JIT > code-generator as minimal and simple as possible. The current state, is > going to be used as a starting point for research of different JIT > approaches and their usability for PHP. > > The code is available at: https://github.com/zendtech/ > php-src/tree/jit-dynasm/ext/opcache/jit > > The sources may be built and tested as regular PHP (no any special > external dependencies required). > JIT itself is implemented as a part of Opcache. > You may try it in action: > > sapi/cli/php -d opcache.jit_buffer_size=32M Zend/bench.php > sapi/cli/php -d opcache.jit_buffer_size=32M -d opcache.jit_debug=1 > Zend/bench.php 2>&1 | less > > As I mentioned we didn't try to achieve any real performance improvement > yet, although we do currently see 20% speedup on bench.php, but a bit of a > slowdown on real-life apps. > Actually, if you are lucky like me, you may see like 5% improvement on wordpress. :) thanks > > Wish us luck :) > > Thanks. Dmitry. > > -- Xinchen Hui @Laruence http://www.laruence.com/