On 09/27/2016 04:58 AM, Peter Lieven wrote: > evaluation with the recently introduced maximum stack usage monitoring > revealed > that the actual used stack size was never above 4kB so allocating 1MB stack > for each coroutine is a lot of wasted memory. So reduce the stack size to > 60kB which should still give enough head room. The guard page added > in qemu_alloc_stack will catch a potential stack overflow introduced > by this commit. The 60kB + guard page will result in an allocation of > 64kB per coroutine on systems where a page is 4kB. > > Signed-off-by: Peter Lieven <p...@kamp.de> > --- > include/qemu/coroutine_int.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/qemu/coroutine_int.h b/include/qemu/coroutine_int.h > index 14d4f1d..be14260 100644 > --- a/include/qemu/coroutine_int.h > +++ b/include/qemu/coroutine_int.h > @@ -28,7 +28,7 @@ > #include "qemu/queue.h" > #include "qemu/coroutine.h" > > -#define COROUTINE_STACK_SIZE (1 << 20) > +#define COROUTINE_STACK_SIZE 61440
Should work fine (I might have done 64k + guard page, but that's not quite as nice of a round number where the guard page is only 4k). Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature