|
From: | Zhou Jie |
Subject: | Re: [Qemu-devel] [PATCH] net/tap: Allocating Large sized arrays to heap |
Date: | Tue, 26 Apr 2016 16:26:18 +0800 |
User-agent: | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2 |
On 2016/4/26 15:45, Christian Borntraeger wrote:
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?
For 64bit machine it will be 16k.
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.
OK. I will note it. Sincerely, Zhou Jie
ChristianSigned-off-by: Zhou Jie <address@hidden> --- 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) {
-- ------------------------------------------------ 周潔 Dept 1 No. 6 Wenzhu Road, Nanjing, 210012, China TEL:+86+25-86630566-8557 FUJITSU INTERNAL:7998-8557 address@hidden ------------------------------------------------
[Prev in Thread] | Current Thread | [Next in Thread] |