mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Chris Peterson <cpeterso@cpeterso.com>
To: dhowells@redhat.com
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH v2] use round_jiffies() for slow work thread pool's 5 second cull timer
Date: Sun, 10 May 2009 20:01:18 -0400 (EDT)	[thread overview]
Message-ID: <alpine.DEB.2.00.0905101959070.2913@ubuntu-desktop> (raw)
In-Reply-To: <alpine.DEB.2.00.0905100336130.27219@ubuntu-desktop>


This is a revised patch to round the slow work queue's 5 second timers to 
whole seconds with round_jiffies(). The slow work queue uses 5 second 
timers to cull idle threads and, after OOM, to delay new thread 
creation.This patch also refactors the mod_timer() logic into a separate 
helper function.

Signed-off-by: Chris Peterson <cpeterso@cpeterso.com>
---
diff --git a/kernel/slow-work.c b/kernel/slow-work.c
index b28d191..0ef9bf9 100644
--- a/kernel/slow-work.c
+++ b/kernel/slow-work.c
@@ -318,6 +318,12 @@ cant_get_ref:
 }
 EXPORT_SYMBOL(slow_work_enqueue);
 
+static void slow_work_defer_cull_time(void)
+{
+	mod_timer(&slow_work_cull_timer,
+			  round_jiffies(jiffies + SLOW_WORK_CULL_TIMEOUT));
+}
+
 /*
  * Worker thread culling algorithm
  */
@@ -335,8 +341,7 @@ static bool slow_work_cull_thread(void)
 		    list_empty(&vslow_work_queue) &&
 		    atomic_read(&slow_work_thread_count) >
 		    slow_work_min_threads) {
-			mod_timer(&slow_work_cull_timer,
-				  jiffies + SLOW_WORK_CULL_TIMEOUT);
+			slow_work_defer_cull_time();
 			do_cull = true;
 		}
 	}
@@ -393,8 +398,7 @@ static int slow_work_thread(void *_data)
 			    list_empty(&vslow_work_queue) &&
 			    atomic_read(&slow_work_thread_count) >
 			    slow_work_min_threads)
-				mod_timer(&slow_work_cull_timer,
-					  jiffies + SLOW_WORK_CULL_TIMEOUT);
+				slow_work_defer_cull_time();
 			continue;
 		}
 
@@ -458,7 +462,7 @@ static void slow_work_new_thread_execute(struct slow_work *work)
 		if (atomic_dec_and_test(&slow_work_thread_count))
 			BUG(); /* we're running on a slow work thread... */
 		mod_timer(&slow_work_oom_timer,
-			  jiffies + SLOW_WORK_OOM_TIMEOUT);
+				round_jiffies(jiffies + SLOW_WORK_OOM_TIMEOUT));
 	} else {
 		/* ratelimit the starting of new threads */
 		mod_timer(&slow_work_oom_timer, jiffies + 1);
@@ -502,8 +506,7 @@ static int slow_work_min_threads_sysctl(struct ctl_table *table, int write,
 			if (n < 0 && !slow_work_may_not_start_new_thread)
 				slow_work_enqueue(&slow_work_new_thread);
 			else if (n > 0)
-				mod_timer(&slow_work_cull_timer,
-					  jiffies + SLOW_WORK_CULL_TIMEOUT);
+				slow_work_defer_cull_time();
 		}
 		mutex_unlock(&slow_work_user_lock);
 	}
@@ -529,8 +532,7 @@ static int slow_work_max_threads_sysctl(struct ctl_table *table, int write,
 				atomic_read(&slow_work_thread_count);
 
 			if (n < 0)
-				mod_timer(&slow_work_cull_timer,
-					  jiffies + SLOW_WORK_CULL_TIMEOUT);
+				slow_work_defer_cull_time();
 		}
 		mutex_unlock(&slow_work_user_lock);
 	}

  parent reply	other threads:[~2009-05-11  0:01 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-10  7:40 [PATCH] " Chris Peterson
2009-05-10 14:23 ` Richard Kennedy
2009-05-10 19:38   ` Chris Peterson
2009-05-11  0:01 ` Chris Peterson [this message]
     [not found]   ` <200905131838.n4DIcu5h023360@imap1.linux-foundation.org>
2009-05-14  9:38     ` [PATCH] Use round_jiffies() for slow work thread pool's cull and OOM timers David Howells
2009-05-13 11:58 ` [PATCH v2] use round_jiffies() for slow work thread pool's 5 second cull timer David Howells
2009-05-13 16:31   ` Chris Peterson
2009-05-13 17:00   ` David Howells

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB.2.00.0905101959070.2913@ubuntu-desktop \
    --to=cpeterso@cpeterso.com \
    --cc=dhowells@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®