Fix a flipped comparison in the memory pressure calculation
authorMichael Vrable <mvrable@cs.ucsd.edu>
Thu, 31 Mar 2011 22:06:14 +0000 (15:06 -0700)
committerMichael Vrable <mvrable@cs.ucsd.edu>
Thu, 31 Mar 2011 22:06:14 +0000 (15:06 -0700)
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

index f3307d4..8cd2fb3 100644 (file)
@@ -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;
     }