Re: Kernel 2.4.x and 2.4.1-preX - Higher latency then 2.2.xkernels?

Andrew Morton
2001-01-28T11:45:40Z

Shawn Starr wrote:
>
> Andrew, the patch HAS made a difference. For example, while untaring glibc-2.2.1.tar.gz the
> system was not sluggish (mouse movements in X) etc.
>
> Seems to be a go for latency improvements on this system.

Shawn,

could you please try this patch in a pristine 2.4.1-pre10? It
gets reiserfs down to 4 milliseconds worst case. If the
system's interactivity is still sluggish with this then
reiserfs isn't the cause.

Thanks.

--- linux-2.4.1-pre10/include/linux/reiserfs_fs.h Tue Jan 23 19:28:16 2001
+++ linux-akpm/include/linux/reiserfs_fs.h Sun Jan 28 22:37:11 2001
@@ -1161,7 +1161,8 @@
#define fs_generation(s) ((s)->u.reiserfs_sb.s_generation_counter)
#define get_generation(s) atomic_read (&fs_generation(s))
#define FILESYSTEM_CHANGED_TB(tb) (get_generation((tb)->tb_sb) != (tb)->fs_gen)
-#define fs_changed(gen,s) (gen != get_generation (s))
+#define __fs_changed(gen,s) (gen != get_generation (s))
+#define fs_changed(gen,s) ({if (current->need_resched) schedule(); __fs_changed(gen,s);})

/***************************************************************************/
--- linux-2.4.1-pre10/fs/reiserfs/journal.c Tue Jan 23 19:28:15 2001
+++ linux-akpm/fs/reiserfs/journal.c Sun Jan 28 22:31:12 2001
@@ -2649,6 +2649,8 @@
}
#endif
wait_on_buffer(bh) ;
+ if (current->need_resched)
+ schedule();
}
retry_count++ ;
}
@@ -3085,6 +3087,8 @@
/* copy all the real blocks into log area. dirty log blocks */
if (test_bit(BH_JDirty, &cn->bh->b_state)) {
struct buffer_head *tmp_bh ;
+ if (current->need_resched)
+ schedule();
tmp_bh = getblk(p_s_sb->s_dev, reiserfs_get_journal_block(p_s_sb) +
((cur_write_start + jindex) % JOURNAL_BLOCK_COUNT),
p_s_sb->s_blocksize) ;