On 04/26/2016 03:26 AM, Zhou Jie wrote: > net_init_tap has a huge stack usage of 8192 bytes approx. > Moving large arrays to heap to reduce stack usage.
I am wondering. Why is 8k a problem for a user space program? Please note that malloc/new like allocations are much more expensive than stack allocation in terms of performance. This does not matter here, but in your other patch that deals with the xmit function, I would not be surprised if that actually harms performance. Christian > > Signed-off-by: Zhou Jie <zhoujie2...@cn.fujitsu.com> > --- > net/tap.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/net/tap.c b/net/tap.c > index 740e8a2..49817c7 100644 > --- a/net/tap.c > +++ b/net/tap.c > @@ -769,8 +769,8 @@ int net_init_tap(const NetClientOptions *opts, const char > *name, > return -1; > } > } else if (tap->has_fds) { > - char *fds[MAX_TAP_QUEUES]; > - char *vhost_fds[MAX_TAP_QUEUES]; > + char **fds = g_new(char *, MAX_TAP_QUEUES); > + char **vhost_fds = g_new(char *, MAX_TAP_QUEUES); > int nfds, nvhosts; > > if (tap->has_ifname || tap->has_script || tap->has_downscript || > @@ -818,6 +818,8 @@ int net_init_tap(const NetClientOptions *opts, const char > *name, > return -1; > } > } > + g_free(fds); > + g_free(vhost_fds); > } else if (tap->has_helper) { > if (tap->has_ifname || tap->has_script || tap->has_downscript || > tap->has_vnet_hdr || tap->has_queues || tap->has_vhostfds) { >