From: "Martin K. Petersen" <martin.petersen@oracle.com>
To: Jens Axboe <axboe@fb.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>,
Jeff Moyer <jmoyer@redhat.com>, <linux-kernel@vger.kernel.org>,
<linux-fsdevel@vger.kernel.org>, <adilger@dilger.ca>,
<david@fromorbit.com>
Subject: Re: [PATCH v2] Support for write stream IDs
Date: Thu, 07 May 2015 15:19:24 -0400 [thread overview]
Message-ID: <yq1wq0knqkj.fsf@sermon.lab.mkp.net> (raw)
In-Reply-To: <554A4DB7.7070202@fb.com> (Jens Axboe's message of "Wed, 6 May 2015 11:21:59 -0600")
>>>>> "Jens" == Jens Axboe <axboe@fb.com> writes:
Jens> This wont solve the problem of devices having too few streams. But
Jens> it'll work regardless, we'll just have to push them separately to
Jens> do that. It's not an easy problem for them either, resource
Jens> constraints on the device side could exclude supporting as many
Jens> streams as we would ideally want.
But they already have to manage *every* other resource that way: Read
cache, write cache, flash channels, open zones on ZAC/ZBC. If they run
out of memory and have to internally close one stream context to open
another that's their business. If the concurrent ID count is low,
performance their particular widgets is going to suck for some
applications and people will avoid them. Boo hoo.
I'm super happy the SSD industry (well, the market) came to its senses
and abolished all the outrageous demands put on the I/O stack to
overcome erase block size and write amplification issues. Now all that's
a solved problem and we can move on.
Next problem child was the host managed zoned disk madness. Yet another
device implementation headache that suddenly requires us to reinvent
filesystems and the entire I/O stack.
Next in the pipeline is the stream ID stuff. Which once again puts the
burden on us to overcome device implementation issues and misunderstands
how operating systems work.
There are two fundamental problems:
- The standards are developed by device vendors with little to no input
from the OS vendors
- The standards proposals are written, edited, and declared complete
before anybody actually tries to implement them
That's how we end up with all these lame duck spec extensions that are
device implementation-specific and impossible to use generically.
I scream as loudly as I can. But I am but one voice in a sea of device
vendors. And unless we Linux developers start pushing back in unison
we'll end up in a quagmire of epic proportions.
Jens> In some ways I get it, you have to start somewhere. The current
Jens> proposal is useful for _some_ cases, it's not great for
Jens> everything. As long as it can be expanded to support as many
Jens> streams as we would want, then it would work. It's (again) a bit
Jens> of a chicken and egg problem. We need to make some progress, or
Jens> the whole thing is going to go away. And I think that'd be a
Jens> shame, since there's definitely merit to passing these lifetime
Jens> hints to the device.
The problem is that once these things end up in the standards, the CDB
fields are gone. And if the clunky intermediate stuff is "good enough"
then the motivation to fix things properly goes away.
There are many, many reasons why stream IDs are a good thing. Above and
beyond what the current proposals want. The notion of tagging is a much
better abstraction than bootiness and guessing a percentage for how
sequential future accesses might be. It's a simple, clean interface that
the device--regardless of media type and implementation--can benefit
from.
--
Martin K. Petersen Oracle Linux Engineering
next prev parent reply other threads:[~2015-05-07 19:19 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-05 20:02 Jens Axboe
2015-05-05 20:02 ` [PATCH 1/7] block: add support for carrying a stream ID in a bio Jens Axboe
2015-05-05 20:02 ` [PATCH 2/7] Add support for per-file/inode stream ID Jens Axboe
2015-05-05 20:09 ` Christoph Hellwig
2015-05-05 20:02 ` [PATCH 3/7] direct-io: add support for write stream IDs Jens Axboe
2015-05-05 20:02 ` [PATCH 4/7] Add stream ID support for buffered mpage/__block_write_full_page() Jens Axboe
2015-05-05 20:02 ` [PATCH 5/7] btrfs: add support for write stream IDs Jens Axboe
2015-05-05 20:03 ` [PATCH 6/7] xfs: add support for buffered writeback stream ID Jens Axboe
2015-05-05 20:03 ` [PATCH 7/7] ext4: add support for write stream IDs Jens Axboe
2015-05-05 20:07 ` [PATCH v2] Support " Christoph Hellwig
2015-05-05 20:12 ` Jens Axboe
2015-05-05 20:20 ` Christoph Hellwig
2015-05-05 20:31 ` Jens Axboe
2015-05-05 20:43 ` Christoph Hellwig
2015-05-05 20:50 ` Christoph Hellwig
2015-05-05 20:51 ` Jeff Moyer
2015-05-05 21:05 ` Jens Axboe
2015-05-05 21:39 ` Martin K. Petersen
2015-05-05 21:48 ` Jens Axboe
2015-05-05 22:09 ` Martin K. Petersen
2015-05-06 14:26 ` Peter Zijlstra
2015-05-06 17:25 ` Jens Axboe
2015-05-06 16:50 ` Boaz Harrosh
2015-05-06 17:21 ` Jens Axboe
2015-05-07 19:19 ` Martin K. Petersen [this message]
2015-05-08 18:48 ` Jens Axboe
2015-05-12 2:50 ` Martin K. Petersen
-- strict thread matches above, loose matches on Subject: below --
2015-04-18 20:03 Jens Axboe
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=yq1wq0knqkj.fsf@sermon.lab.mkp.net \
--to=martin.petersen@oracle.com \
--cc=adilger@dilger.ca \
--cc=axboe@fb.com \
--cc=david@fromorbit.com \
--cc=jmoyer@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--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
all inboxes | Powered by JetHome®