From: Peter Osterlund <petero2@telia.com>
To: Andrew Morton <akpm@osdl.org>
Cc: axboe@suse.de, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Speed up the cdrw packet writing driver
Date: 28 Aug 2004 22:57:56 +0200 [thread overview]
Message-ID: <m3vff3f0a3.fsf@telia.com> (raw)
In-Reply-To: <20040828124519.0caf23bf.akpm@osdl.org>
Andrew Morton <akpm@osdl.org> writes:
> Peter Osterlund <petero2@telia.com> wrote:
> >
> > Is this a general VM limitation? Has anyone been able to saturate the
> > write bandwidth of two different block devices at the same time, when
> > they operate at vastly different speeds (45MB/s vs 5MB/s), and when
> > the writes are large enough to cause memory pressure?
>
> I haven't explicitly tested the pdflush code in a while, and I never tested
> on devices with such disparate bandwidth. But it _should_ work.
>
> The basic deign of the pdflush writeback path is:
>
> for ( ; ; ) {
> for (each superblock) {
> if (no pdflush thread is working this sb's queue &&
> the superblock's backingdev is not congested) {
> do some writeout, up to congestion, trying
> to not block on request queue exhaustion
> }
> }
> blk_congestion_wait()
> }
>
> So it basically spins around all the queues keeping them full in a
> non-blocking manner.
>
> There _are_ times when pdflush will accidentally block. Say, doing a
> metadata read. In that case other pdflush instances will keep other queues
> busy.
>
> I tested it up to 12 disks. Works OK.
OK, this should make sure that dirty data is flushed as fast as the
disks can handle, but is there anything that makes sure there will be
enough dirty data to flush for each disk?
Assume there are two processes writing one file each to two different
block devices. To be able to dirty more data a process will have to
allocate a page, and a page becomes available whenever one of the
disks finishes an I/O operation. If both processes have a 50/50 chance
to get the freed page, they will dirty data equally fast once steady
state has been reached, even if the block devices have very different
write bandwidths.
--
Peter Osterlund - petero2@telia.com
http://w1.894.telia.com/~u89404340
next prev parent reply other threads:[~2004-08-28 20:58 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-14 19:13 [PATCH] Speed up the cdrw packet writing driver Peter Osterlund
2004-08-23 11:43 ` Jens Axboe
2004-08-23 16:07 ` Peter Osterlund
2004-08-24 20:29 ` Jens Axboe
2004-08-24 21:04 ` Peter Osterlund
2004-08-24 21:47 ` Andrew Morton
2004-08-24 21:57 ` Lee Revell
2004-08-29 13:52 ` Alan Cox
2004-08-24 22:03 ` Peter Osterlund
2004-08-24 22:56 ` Andrew Morton
2004-08-25 5:38 ` Peter Osterlund
2004-08-25 6:50 ` Jens Axboe
2004-08-28 9:59 ` Peter Osterlund
2004-08-28 13:07 ` Jens Axboe
2004-08-28 18:42 ` Peter Osterlund
2004-08-28 19:45 ` Andrew Morton
2004-08-28 20:57 ` Peter Osterlund [this message]
2004-08-28 21:23 ` Andrew Morton
2004-08-29 12:17 ` Peter Osterlund
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m3vff3f0a3.fsf@telia.com \
--to=petero2@telia.com \
--cc=akpm@osdl.org \
--cc=axboe@suse.de \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox