qemu-trivial
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-trivial] [Qemu-devel] [PATCH] net/tap: Allocating Large sized


From: Zhou Jie
Subject: Re: [Qemu-trivial] [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


Christian




Signed-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
------------------------------------------------





reply via email to

[Prev in Thread] Current Thread [Next in Thread]