From 2118f99b4ae6d63cd72e94295e744401133911b7 Mon Sep 17 00:00:00 2001 From: Michael Vrable Date: Thu, 31 Mar 2011 15:06:14 -0700 Subject: [PATCH] Fix a flipped comparison in the memory pressure calculation We were almost always saying there was too much dirty data that needed to be flushed. Now, also print out debugging messages when memory pressure is detected stating what we have found, exactly. --- bluesky/cache.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/bluesky/cache.c b/bluesky/cache.c index f3307d4..8cd2fb3 100644 --- a/bluesky/cache.c +++ b/bluesky/cache.c @@ -433,7 +433,10 @@ static int compute_pressure(BlueSkyFS *fs) if (g_atomic_int_get(&fs->cache_dirty) + g_atomic_int_get(&fs->cache_log_dirty) > bluesky_watermark_high_dirty) + { + g_print("pressure: too much dirty data (2)\n"); return 2; + } /* Too much uncommitted data in the journal on disk, not yet flushed to the * cloud? */ @@ -443,17 +446,19 @@ static int compute_pressure(BlueSkyFS *fs) dirty_limit = bluesky_options.cache_size / (LOG_SEGMENT_SIZE / 1024) / 2; int dirty_journals = fs->log->seq_num - fs->log->journal_watermark + 1; if (dirty_journals > 1 && dirty_journals >= dirty_limit) { - printf("Too many dirty journals (%d >= %d)\n", + printf("pressure: too many dirty journals (%d >= %d) (2)\n", dirty_journals, dirty_limit); return 2; } /* LEVEL 1 */ - if (g_atomic_int_get(&fs->cache_dirty) < bluesky_watermark_medium_dirty) + if (g_atomic_int_get(&fs->cache_dirty) > bluesky_watermark_medium_dirty) { + g_print("pressure: too much dirty data (1)\n"); return 1; + } if (dirty_journals > 1 && dirty_journals > dirty_limit / 2) { - printf("Many dirty journals (%d), should start writeback\n", + printf("pressure: many dirty journals (%d), should start writeback (1)\n", dirty_journals); return 1; } -- 2.20.1