mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 23:53:32 +00:00
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:
parent
cb2d45da81
commit
f92c8dd7a0
1 changed files with 9 additions and 1 deletions
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -1355,8 +1359,12 @@ static void send_to_sock(struct connection *con)
|
|||
if (ret <= 0)
|
||||
goto send_error;
|
||||
}
|
||||
|
||||
/* Don't starve people filling buffers */
|
||||
if (++count >= MAX_SEND_MSG_COUNT) {
|
||||
cond_resched();
|
||||
count = 0;
|
||||
}
|
||||
|
||||
spin_lock(&con->writequeue_lock);
|
||||
e->offset += ret;
|
||||
|
|
Loading…
Reference in a new issue