FAQ
Hi,


Nikita, please review the patch https://gist.github.com/dstogov/06116f1610f45f8152ine3a9927c6c243ac

It's the next attempt to use the single stack for all generators.

Now I don't see any problems or BC breaks.


In case "yield" is used as an expression in context of function call. e.g. var_dump(yield), engine backups and then restores active call frame chain.


Bob tested the patch on application that intensively uses generators, and reported:

15% less L2 cache loads

20% less cycle stalls due to memory subsystem

3% more CPU_CLOCK_UNHALTED due to additional freeze/restore.


I'm going to commit this patch tomorrow.


Thanks. Dmitry.

Search Discussions

  • Joe Watkins at May 11, 2016 at 3:02 pm
    404

    Cheers
    Joe
    On Wed, May 11, 2016 at 3:54 PM, Dmitry Stogov wrote:

    Hi,


    Nikita, please review the patch
    https://gist.github.com/dstogov/06116f1610f45f8152ine3a9927c6c243ac

    It's the next attempt to use the single stack for all generators.

    Now I don't see any problems or BC breaks.


    In case "yield" is used as an expression in context of function call. e.g.
    var_dump(yield), engine backups and then restores active call frame chain.


    Bob tested the patch on application that intensively uses generators, and
    reported:

    15% less L2 cache loads

    20% less cycle stalls due to memory subsystem

    3% more CPU_CLOCK_UNHALTED due to additional freeze/restore.


    I'm going to commit this patch tomorrow.


    Thanks. Dmitry.
  • Bob Weinand at May 11, 2016 at 3:09 pm
    Looks like there is an "ine" in the link:

    Correct link: https://gist.github.com/dstogov/06116f1610f45f81523a9927c6c243ac <https://gist.github.com/dstogov/06116f1610f45f81523a9927c6c243ac>

    Bob
    Am 11.05.2016 um 17:02 schrieb Joe Watkins <pthreads@pthreads.org>:

    404

    Cheers
    Joe
    On Wed, May 11, 2016 at 3:54 PM, Dmitry Stogov wrote:

    Hi,


    Nikita, please review the patch
    https://gist.github.com/dstogov/06116f1610f45f8152ine3a9927c6c243ac

    It's the next attempt to use the single stack for all generators.

    Now I don't see any problems or BC breaks.


    In case "yield" is used as an expression in context of function call. e.g.
    var_dump(yield), engine backups and then restores active call frame chain.


    Bob tested the patch on application that intensively uses generators, and
    reported:

    15% less L2 cache loads

    20% less cycle stalls due to memory subsystem

    3% more CPU_CLOCK_UNHALTED due to additional freeze/restore.


    I'm going to commit this patch tomorrow.


    Thanks. Dmitry.
  • Nikita Popov at May 11, 2016 at 4:44 pm

    On Wed, May 11, 2016 at 4:54 PM, Dmitry Stogov wrote:

    Hi,


    Nikita, please review the patch
    https://gist.github.com/dstogov/06116f1610f45f8152ine3a9927c6c243ac

    It's the next attempt to use the single stack for all generators.

    Now I don't see any problems or BC breaks.


    In case "yield" is used as an expression in context of function call. e.g.
    var_dump(yield), engine backups and then restores active call frame chain.


    Bob tested the patch on application that intensively uses generators, and
    reported:

    15% less L2 cache loads

    20% less cycle stalls due to memory subsystem

    3% more CPU_CLOCK_UNHALTED due to additional freeze/restore.


    I'm going to commit this patch tomorrow.
    The patch looks fine to me.

    From my own testing with a "Hello World" Aerys server, after multiple
    benchmark runs it previously started to mmap+munmap two new MM segments on
    each request, leading to a decline from 50k rps to 5k. With the patch this
    no longer occurs and the rps is stable at > 50k rps. (Though that may be
    more luck than anything.)

    Nikita

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-internals @
categoriesphp
postedMay 11, '16 at 2:54p
activeMay 11, '16 at 4:44p
posts4
users4
websitephp.net

People

Translate

site design / logo © 2018 Grokbase