summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--items.c6
-rw-r--r--logger.c14
2 files changed, 13 insertions, 7 deletions
diff --git a/items.c b/items.c
index 8bd7d18..f3822ef 100644
--- a/items.c
+++ b/items.c
@@ -1453,11 +1453,13 @@ static void *lru_maintainer_thread(void *arg) {
int did_moves = lru_maintainer_juggle(i);
if (did_moves == 0) {
if (backoff_juggles[i] < MAX_LRU_MAINTAINER_SLEEP)
- backoff_juggles[i] += 1000;
+ backoff_juggles[i] += backoff_juggles[i] / 8;
+ if (backoff_juggles[i] > MAX_LRU_MAINTAINER_SLEEP)
+ backoff_juggles[i] = MAX_LRU_MAINTAINER_SLEEP;
} else if (backoff_juggles[i] > 0) {
backoff_juggles[i] /= 2;
if (backoff_juggles[i] < MIN_LRU_MAINTAINER_SLEEP) {
- backoff_juggles[i] = 0;
+ backoff_juggles[i] = MIN_LRU_MAINTAINER_SLEEP;
}
}
next_juggles[i] = backoff_juggles[i];
diff --git a/logger.c b/logger.c
index 2338f9c..892bea8 100644
--- a/logger.c
+++ b/logger.c
@@ -454,8 +454,8 @@ static void logger_thread_sum_stats(struct logger_stats *ls) {
STATS_UNLOCK();
}
-#define MAX_LOGGER_SLEEP 100000
-#define MIN_LOGGER_SLEEP 0
+#define MAX_LOGGER_SLEEP 1000000
+#define MIN_LOGGER_SLEEP 1000
/* Primary logger thread routine */
static void *logger_thread(void *arg) {
@@ -466,7 +466,9 @@ static void *logger_thread(void *arg) {
logger *l;
struct logger_stats ls;
memset(&ls, 0, sizeof(struct logger_stats));
- if (to_sleep)
+
+ /* only sleep if we're *above* the minimum */
+ if (to_sleep > MIN_LOGGER_SLEEP)
usleep(to_sleep);
/* Call function to iterate each logger. */
@@ -482,10 +484,12 @@ static void *logger_thread(void *arg) {
/* TODO: abstract into a function and share with lru_crawler */
if (!found_logs) {
if (to_sleep < MAX_LOGGER_SLEEP)
- to_sleep += 50;
+ to_sleep += to_sleep / 8;
+ if (to_sleep > MAX_LOGGER_SLEEP)
+ to_sleep = MAX_LOGGER_SLEEP;
} else {
to_sleep /= 2;
- if (to_sleep < 50)
+ if (to_sleep < MIN_LOGGER_SLEEP)
to_sleep = MIN_LOGGER_SLEEP;
}
logger_thread_sum_stats(&ls);