Message ID | 1468340586-19304-7-git-send-email-pl@kamp.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 07/12/2016 10:23 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 > 64kB 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. > > Signed-off-by: Peter Lieven <pl@kamp.de> > --- > include/qemu/coroutine_int.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Eric Blake <eblake@redhat.com> > > diff --git a/include/qemu/coroutine_int.h b/include/qemu/coroutine_int.h > index eac323a..f84d777 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 (1 << 16) > > typedef enum { > COROUTINE_YIELD = 1, >
On Tue, Jul 12, 2016 at 06:23:06PM +0200, 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 > 64kB 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. > > Signed-off-by: Peter Lieven <pl@kamp.de> > --- > include/qemu/coroutine_int.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
diff --git a/include/qemu/coroutine_int.h b/include/qemu/coroutine_int.h index eac323a..f84d777 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 (1 << 16) typedef enum { COROUTINE_YIELD = 1,
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 64kB 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. Signed-off-by: Peter Lieven <pl@kamp.de> --- include/qemu/coroutine_int.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)