Skip to content

Commit

Permalink
dlm: reduce cond_resched during send
Browse files Browse the repository at this point in the history
Calling cond_resched() after every send can unnecessarily
degrade performance.  Go back to an old method of scheduling
after 25 messages.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
  • Loading branch information
Bob Peterson authored and David Teigland committed Nov 12, 2010
1 parent cb2d45d commit f92c8dd
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion fs/dlm/lowcomms.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@
#define NEEDED_RMEM (4*1024*1024)
#define CONN_HASH_SIZE 32

/* Number of messages to send before rescheduling */
#define MAX_SEND_MSG_COUNT 25

struct cbuf {
unsigned int base;
unsigned int len;
Expand Down Expand Up @@ -1318,6 +1321,7 @@ static void send_to_sock(struct connection *con)
const int msg_flags = MSG_DONTWAIT | MSG_NOSIGNAL;
struct writequeue_entry *e;
int len, offset;
int count = 0;

mutex_lock(&con->sock_mutex);
if (con->sock == NULL)
Expand Down Expand Up @@ -1355,8 +1359,12 @@ static void send_to_sock(struct connection *con)
if (ret <= 0)
goto send_error;
}
/* Don't starve people filling buffers */

/* Don't starve people filling buffers */
if (++count >= MAX_SEND_MSG_COUNT) {
cond_resched();
count = 0;
}

spin_lock(&con->writequeue_lock);
e->offset += ret;
Expand Down

0 comments on commit f92c8dd

Please sign in to comment.