Re: Strange load spikes on 2.4.19 kernel

Andrew Morton
2002-10-12T06:54:34Z

Rob Mueller wrote:
>
> > It commits your changes to the journal every five seconds. But your data
> > is then only in the journal. It still needs to be written into your
> files.
> > That writeback is controlled by the normal kernel 30-second writeback
> > timing. If that writeback isn't keeping up, kjournald needs to
> > force the writeback so it can recycle that data's space in the journal.
> >
> > While that writeback is happening, everything tends to wait on it.
>
> Doesn't bdflush let you control this?

It doesn't work if the buffer flushtimes are wrong.

> So you're saying that ext3 is somehow breaking the standard kernel writeback
> code?

Possibly. Please try ordered mode.

> Is this something they know about

yes

> , and/or are addressing?

Not yet. Yours is only the second report. Possible report.
Please try ordered mode. The below will fix journalled
mode, if this is indeed the source of the problem

--- 2.4.19-pre10/fs/buffer.c~ext3-flushtime Wed Jun 5 21:39:14 2002
+++ 2.4.19-pre10-akpm/fs/buffer.c Wed Jun 5 21:39:22 2002
@@ -1067,6 +1067,8 @@ static void __refile_buffer(struct buffe
bh->b_list = dispose;
if (dispose == BUF_CLEAN)
remove_inode_queue(bh);
+ if (dispose == BUF_DIRTY)
+ set_buffer_flushtime(bh);
__insert_into_lru_list(bh, dispose);
}
}
--- 2.4.19-pre10/fs/jbd/transaction.c~ext3-flushtime Wed Jun 5 21:39:18 2002
+++ 2.4.19-pre10-akpm/fs/jbd/transaction.c Wed Jun 5 21:39:22 2002
@@ -1101,7 +1101,6 @@ int journal_dirty_metadata (handle_t *ha

spin_lock(&journal_datalist_lock);
set_bit(BH_JBDDirty, &bh->b_state);
- set_buffer_flushtime(bh);

J_ASSERT_JH(jh, jh->b_transaction != NULL);