Skip to contentSkip to conversation

reiserfs speedup for 2.4.9+

PATCH In review Chris Mason 2 participants 3 messages Sep 22, 2001 – Sep 23, 2001

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 reiserfs speedup for 2.4.9+

Hello everyone,

Beau pointed me towards a performance bug in reiserfs, where reiserfs_write_super would be called excessively.

Turns out that 2.4.9 included some new super handling code that interacted poorly with how reiserfs uses kupdated calls to write_super to trigger writebacks of metadata.

This is most obvious with benchmarks like bonnie++, where 2.4.9 and 2.4.10 reiserfs do very poorly.

This patch makes things much better in my tests, I'd appreciate a few more testers. The only risk is reiserfs using slightly more memory, but only if I've screwed something up.

-chris

fs/reiserfs/journal.c +4 -8
@@ -746,6 +746,8 @@
   }
   atomic_set(&(jl->j_commit_flushing), 0) ;
   wake_up(&(jl->j_commit_wait)) ;
+  
+  s->s_dirt = 1 ;
   return 0 ;
 }
 
@@ -2378,7 +2381,6 @@
   int count = 0;
   int start ; 
   time_t now ; 
-  int keep_dirty = 0 ;
   struct reiserfs_transaction_handle th ; 
 
   start =  SB_JOURNAL_LIST_INDEX(p_s_sb) ;
@@ -2388,10 +2390,6 @@
   if (SB_JOURNAL_LIST_INDEX(p_s_sb) < 0) {
     return 0  ;
   }
-  if (!strcmp(current->comm, "kupdate")) {
-    immediate = 0 ;
-    keep_dirty = 1 ;
-  }
   /* starting with oldest, loop until we get to the start */
   i = (SB_JOURNAL_LIST_INDEX(p_s_sb) + 1) % JOURNAL_LIST_COUNT ;
   while(i != start) {
@@ -2416,7 +2414,6 @@
     reiserfs_prepare_for_journal(p_s_sb, SB_BUFFER_WITH_SB(p_s_sb), 1) ;
     journal_mark_dirty(&th, p_s_sb, SB_BUFFER_WITH_SB(p_s_sb)) ;
     do_journal_end(&th, p_s_sb,1, COMMIT_NOW) ;
-    keep_dirty = 0 ;
   } else if (immediate) { /* belongs above, but I wanted this to be very explicit as a special case.  If they say to 
                              flush, we must be sure old transactions hit the disk too. */
     journal_join(&th, p_s_sb, 1) ;
@@ -2424,8 +2421,8 @@
     journal_mark_dirty(&th, p_s_sb, SB_BUFFER_WITH_SB(p_s_sb)) ;
     do_journal_end(&th, p_s_sb,1, COMMIT_NOW | WAIT) ;
   }
-  keep_dirty |= reiserfs_journal_kupdate(p_s_sb) ;
-  return keep_dirty ;
+  reiserfs_journal_kupdate(p_s_sb) ;
+  return 0 ;
 }
 
 /*
#1 lore raw
Quoted 2 lines · Chris Mason

Hello everyone,

Hello Chris,

Quoted 6 lines

Beau pointed me towards a performance bug in reiserfs, where reiserfs_write_super would be called excessively.

Turns out that 2.4.9 included some new super handling code that interacted poorly with how reiserfs uses kupdated calls to write_super to trigger writebacks of metadata.

Quoted 6 lines

This is most obvious with benchmarks like bonnie++, where 2.4.9 and 2.4.10 reiserfs do very poorly.

This patch makes things much better in my tests, I'd appreciate a few more testers. The only risk is reiserfs using slightly more memory, but only if I've screwed something up.

Just to share my two cents. First I have to tell that the skipping of alsaplayer playing .wav files I experienced during kernel compiles or other activities is almost completly gone. Furthermore I did some performance testing of kernel compiles (actions that are done:
untar kernel, patch kernel, make -j50 bzImage modules, 5 times in a row). These are the results of plain 2.4.10-pre14aa1:

Elapsed (wall clock) time (h:mm:ss or m:ss): 6:25.90 Elapsed (wall clock) time (h:mm:ss or m:ss): 6:15.43 Elapsed (wall clock) time (h:mm:ss or m:ss): 6:01.95 Elapsed (wall clock) time (h:mm:ss or m:ss): 6:12.56 Elapsed (wall clock) time (h:mm:ss or m:ss): 6:35.61

And here are the results of 2.4.10-pre14aa1 + your patch:

Elapsed (wall clock) time (h:mm:ss or m:ss): 5:23.55 Elapsed (wall clock) time (h:mm:ss or m:ss): 5:32.21 Elapsed (wall clock) time (h:mm:ss or m:ss): 5:34.77 Elapsed (wall clock) time (h:mm:ss or m:ss): 6:17.55 Elapsed (wall clock) time (h:mm:ss or m:ss): 5:49.31

Is the performance fix also required for 2.4.9-acXX ?

Regards,

Jogi

Signature · 3 lines
Well, yeah ... I suppose there's no point in getting greedy, is there?

    << Calvin & Hobbes >>
#2 lore raw

On Sunday, September 23, 2001 03:28:41 PM +0200 [email protected] wrote:

[ benchmarks ]

Thanks to everyone who gave it a try, the patch is in 2.4.10.

Quoted 2 lines

Is the performance fix also required for 2.4.9-acXX ?

Yes, I just sent to Alan for inclusion.

-chris