dlm: reduce cond_resched during send
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>
This commit is contained in:
committed by
David Teigland
parent
cb2d45da81
commit
f92c8dd7a0
@@ -63,6 +63,9 @@
|
|||||||
#define NEEDED_RMEM (4*1024*1024)
|
#define NEEDED_RMEM (4*1024*1024)
|
||||||
#define CONN_HASH_SIZE 32
|
#define CONN_HASH_SIZE 32
|
||||||
|
|
||||||
|
/* Number of messages to send before rescheduling */
|
||||||
|
#define MAX_SEND_MSG_COUNT 25
|
||||||
|
|
||||||
struct cbuf {
|
struct cbuf {
|
||||||
unsigned int base;
|
unsigned int base;
|
||||||
unsigned int len;
|
unsigned int len;
|
||||||
@@ -1318,6 +1321,7 @@ static void send_to_sock(struct connection *con)
|
|||||||
const int msg_flags = MSG_DONTWAIT | MSG_NOSIGNAL;
|
const int msg_flags = MSG_DONTWAIT | MSG_NOSIGNAL;
|
||||||
struct writequeue_entry *e;
|
struct writequeue_entry *e;
|
||||||
int len, offset;
|
int len, offset;
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
mutex_lock(&con->sock_mutex);
|
mutex_lock(&con->sock_mutex);
|
||||||
if (con->sock == NULL)
|
if (con->sock == NULL)
|
||||||
@@ -1355,8 +1359,12 @@ static void send_to_sock(struct connection *con)
|
|||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
goto send_error;
|
goto send_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Don't starve people filling buffers */
|
/* Don't starve people filling buffers */
|
||||||
|
if (++count >= MAX_SEND_MSG_COUNT) {
|
||||||
cond_resched();
|
cond_resched();
|
||||||
|
count = 0;
|
||||||
|
}
|
||||||
|
|
||||||
spin_lock(&con->writequeue_lock);
|
spin_lock(&con->writequeue_lock);
|
||||||
e->offset += ret;
|
e->offset += ret;
|
||||||
|
Reference in New Issue
Block a user