summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Grover <andy.grover@oracle.com>2010-03-11 13:49:58 +0000
committerDavid S. Miller <davem@davemloft.net>2010-03-16 21:16:55 -0700
commit8e82376e5f72bb576504c8c6117685e56c1b97db (patch)
tree8aa3e7a354620a0d67a403aedd056c9a58b4e57a
parentb075cfdb666d6fa90c55c8619186398a3c4fd865 (diff)
downloadlinux-8e82376e5f72bb576504c8c6117685e56c1b97db.tar.bz2
RDS/TCP: Wait to wake thread when write space available
Instead of waking the send thread whenever any send space is available, wait until it is at least half empty. This is modeled on how sock_def_write_space() does it, and may help to minimize context switches. Signed-off-by: Andy Grover <andy.grover@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/rds/tcp_send.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/rds/tcp_send.c b/net/rds/tcp_send.c
index 34fdcc059e54..a28b895ff0d1 100644
--- a/net/rds/tcp_send.c
+++ b/net/rds/tcp_send.c
@@ -240,7 +240,9 @@ void rds_tcp_write_space(struct sock *sk)
tc->t_last_seen_una = rds_tcp_snd_una(tc);
rds_send_drop_acked(conn, rds_tcp_snd_una(tc), rds_tcp_is_acked);
- queue_delayed_work(rds_wq, &conn->c_send_w, 0);
+ if ((atomic_read(&sk->sk_wmem_alloc) << 1) <= sk->sk_sndbuf)
+ queue_delayed_work(rds_wq, &conn->c_send_w, 0);
+
out:
read_unlock(&sk->sk_callback_lock);