From: Michael Vrable Date: Thu, 31 Mar 2011 22:06:14 +0000 (-0700) Subject: Fix a flipped comparison in the memory pressure calculation X-Git-Url: http://git.vrable.net/?p=bluesky.git;a=commitdiff_plain;h=2118f99b4ae6d63cd72e94295e744401133911b7 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. --- 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; }