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.
404
Cheers
Joe
Hi,
Nikita, please review the patch
https://gist.github.com/dstogov/06116f1610f45f8152ine3a9927c6c243acIt'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.
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
JoeHi,
Nikita, please review the patch
https://gist.github.com/dstogov/06116f1610f45f8152ine3a9927c6c243acIt'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.
Hi,
Nikita, please review the patch
https://gist.github.com/dstogov/06116f1610f45f8152ine3a9927c6c243acIt'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