the patch has solved my problem. thanks a lot
On Wed, Apr 25, 2012 at 10:52 AM, junaid khalid
junaid.kha...@seecs.nust.edu.pk wrote:
Thanks a lot. I will update you after testing it
On Wed, Apr 25, 2012 at 10:45 AM, Ben Pfaff b...@nicira.com wrote:
On Wed, Apr 25, 2012 at 10:38:45AM +0500, junaid khalid wrote:
we are talking about the recv failed problem (system@br0: recv failed
(No
buffer space available)).
Try applying the following patch from master to your tree. It may help.
--8--cut here--8--
From: Ben Pfaff b...@nicira.com
Date: Thu, 15 Mar 2012 21:15:38 -0700
Subject: [PATCH] netlink-socket: Increase Netlink socket receive buffer
size.
Open vSwitch userspace can set up flows at a high rate, but it is somewhat
bursty in opportunities to set up flows, by which I mean that OVS sets
up
a batch of flows, then goes off and does some other work for a while, then
sets up another batch of flows, and so on. The result is that, if a large
number of packets that need flow setups come in all at once, then some of
them can overflow the relatively small kernel-to-user buffers.
This commit increases the kernel-to-user buffers from the default of
approximately 120 kB each to 1 MB each. In one somewhat synthetic test
case that I ran based on an hping3 that generated a load of about 20,000
new flows per second (including both requests and replies), this reduced
the packets dropped at the kernel-to-user interface from about 30% to
none.
I expect that it will similarly improve packet loss in workloads where
flow arrival is not easily predictable.
(This has little effect on workloads generated by ovs-benchmark rate
because that benchmark is effectively self-clocking, that is, a new flow
is triggered only by a reply to a request made earlier, which means that
the number of buffered packets at any given has a known, constant upper
limit.)
Bug #10210.
Signed-off-by: Ben Pfaff b...@nicira.com
---
include/sparse/sys/socket.h |5 +++--
lib/netlink-socket.c| 10 +-
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/include/sparse/sys/socket.h b/include/sparse/sys/socket.h
index 89e3c2d..1ed195b 100644
--- a/include/sparse/sys/socket.h
+++ b/include/sparse/sys/socket.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011 Nicira Networks.
+ * Copyright (c) 2011, 2012 Nicira Networks.
*
* Licensed under the Apache License, Version 2.0 (the License);
* you may not use this file except in compliance with the License.
@@ -74,7 +74,8 @@ enum {
SO_SNDBUF,
SO_SNDLOWAT,
SO_SNDTIMEO,
-SO_TYPE
+SO_TYPE,
+SO_RCVBUFFORCE
};
enum {
diff --git a/lib/netlink-socket.c b/lib/netlink-socket.c
index bc46235..df6f1d8 100644
--- a/lib/netlink-socket.c
+++ b/lib/netlink-socket.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira Networks.
*
* Licensed under the Apache License, Version 2.0 (the License);
* you may not use this file except in compliance with the License.
@@ -89,6 +89,7 @@ nl_sock_create(int protocol, struct nl_sock **sockp)
struct nl_sock *sock;
struct sockaddr_nl local, remote;
socklen_t local_size;
+int rcvbuf;
int retval = 0;
if (!max_iovs) {
@@ -122,6 +123,13 @@ nl_sock_create(int protocol, struct nl_sock **sockp)
sock-protocol = protocol;
sock-dump = NULL;
+rcvbuf = 1024 * 1024;
+if (setsockopt(sock-fd, SOL_SOCKET, SO_RCVBUFFORCE,
+ rcvbuf, sizeof rcvbuf)) {
+VLOG_WARN_RL(rl, setting %d-byte socket receive buffer failed
(%s),
+ rcvbuf, strerror(errno));
+}
+
retval = get_socket_rcvbuf(sock-fd);
if (retval 0) {
retval = -retval;
--
1.7.2.5
___
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss