From: Vladislav Bolkhovitin <vst@vlnb.net>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Howard Chu <hyc@symas.com>,
General Discussion of SQLite Database <sqlite-users@sqlite.org>,
Vladislav Bolkhovitin <vst@vlnb.net>,
"Theodore Ts'o" <tytso@mit.edu>,
drh@hwaci.com, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org
Subject: Re: [sqlite] light weight write barriers
Date: Mon, 12 Nov 2012 22:41:18 -0500 [thread overview]
Message-ID: <50A1C15E.2080605@vlnb.net> (raw)
In-Reply-To: <20121102123359.2479a7dc@pyramind.ukuu.org.uk>
Alan Cox, on 11/02/2012 08:33 AM wrote:
>> b) most drives will internally re-order requests anyway
>
> They will but only as permitted by the commands queued, so you have some
> control depending upon the interface capabilities.
>
>> c) cheap drives won't support barriers
>
> Barriers are pretty much universal as you need them for power off !
I'm afraid, no storage (drives, if you like this term more) at the moment supports
barriers and, as far as I know the storage history, has never supported.
Instead, what storage does support in this area are:
1. Cache flushing facilities: FUA, SYNCHRONIZE CACHE, etc.
2. Commands ordering facilities: commands attributes (ORDERED, SIMPLE, etc.), ACA,
etc.
3. Atomic commands, e.g. scattered writes, which allow to write data in several
separate not adjacent blocks in an atomic manner, i.e. guarantee that either all
blocks are written or none at all. This is a relatively new functionality, natural
for flash storage with its COW internals.
Obviously, using such atomic write commands, an application or a file system don't
need any journaling anymore. FusionIO reported that after they modified MySQL to
use them, they had 50% performance increase.
Note, that those 3 facilities are ORTHOGONAL, i.e. can be used independently,
including on the same request. That is the root cause why barrier concept is so
evil. If you specify a barrier, how can you say what kind actual action you really
want from the storage: cache flush? Or ordered write? Or both?
This is why relatively recent removal of barriers from the Linux kernel
(http://lwn.net/Articles/400541/) was a big step ahead. The next logical step
should be to allow ORDERED attribute for requests be accelerated by ORDERED
commands of the storage, if it supports them. If not, fall back to the existing
queue draining.
Actually, I'm wondering, why barriers concept is so sticky in the Linux world? A
simple Google search shows that only Linux uses this concept for storage. And 2
years passed, since they were removed from the kernel, but people still discuss
barriers as if they are here.
Vlad
next prev parent reply other threads:[~2012-11-13 3:41 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CALwJ=MzHjAOs4J4kGH6HLdwP8E88StDWyAPVumNg9zCWpS9Tdg@mail.gmail.com>
2012-10-10 17:17 ` Andi Kleen
2012-10-11 16:32 ` [sqlite] " 杨苏立 Yang Su Li
2012-10-11 17:41 ` Christoph Hellwig
2012-10-23 19:53 ` Vladislav Bolkhovitin
2012-10-24 21:17 ` Nico Williams
2012-10-24 22:03 ` david
2012-10-25 0:20 ` Nico Williams
2012-10-25 1:04 ` david
2012-10-25 5:18 ` Nico Williams
2012-10-25 6:02 ` Theodore Ts'o
2012-10-25 6:58 ` david
2012-10-25 14:03 ` Theodore Ts'o
2012-10-25 18:03 ` david
2012-10-25 18:29 ` Theodore Ts'o
2012-11-05 20:03 ` Pavel Machek
2012-11-05 22:04 ` Theodore Ts'o
[not found] ` <CALwJ=Mx-uEFLXK2wywekk=0dwrwVFb68wocnH9bjXJmHRsJx3w@mail.gmail.com>
2012-11-05 23:00 ` Theodore Ts'o
2012-10-30 23:49 ` Nico Williams
2012-10-25 5:42 ` Theodore Ts'o
2012-10-25 7:11 ` david
2012-10-27 1:52 ` Vladislav Bolkhovitin
2012-10-25 5:14 ` Theodore Ts'o
2012-10-25 13:03 ` Alan Cox
2012-10-25 13:50 ` Theodore Ts'o
2012-10-27 1:55 ` Vladislav Bolkhovitin
2012-10-27 1:54 ` Vladislav Bolkhovitin
2012-10-27 4:44 ` Theodore Ts'o
2012-10-30 22:22 ` Vladislav Bolkhovitin
2012-10-31 9:54 ` Alan Cox
2012-11-01 20:18 ` Vladislav Bolkhovitin
2012-11-01 21:24 ` Alan Cox
2012-11-02 0:15 ` Vladislav Bolkhovitin
2012-11-02 0:38 ` Howard Chu
2012-11-02 12:33 ` Alan Cox
2012-11-13 3:41 ` Vladislav Bolkhovitin [this message]
2012-11-13 17:40 ` Alan Cox
2012-11-13 19:13 ` Nico Williams
2012-11-15 1:17 ` Vladislav Bolkhovitin
2012-11-15 12:07 ` David Lang
2012-11-16 15:06 ` Howard Chu
2012-11-16 15:31 ` Ric Wheeler
2012-11-16 15:54 ` Howard Chu
2012-11-16 18:03 ` Ric Wheeler
2012-11-16 19:14 ` David Lang
2012-11-17 5:02 ` Vladislav Bolkhovitin
[not found] ` <CABK4GYNGrbes2Yhig4ioh-37OXg6iy6gqb3u8A2P2_dqNpMqoQ@mail.gmail.com>
2012-11-17 5:02 ` Vladislav Bolkhovitin
2012-11-15 17:06 ` Ryan Johnson
2012-11-15 22:35 ` Chris Friesen
2012-11-17 5:02 ` Vladislav Bolkhovitin
2012-11-20 1:23 ` Vladislav Bolkhovitin
2012-11-26 20:05 ` Nico Williams
2012-11-29 2:15 ` Vladislav Bolkhovitin
2012-11-15 1:16 ` Vladislav Bolkhovitin
2012-11-13 3:37 ` Vladislav Bolkhovitin
[not found] ` <CALwJ=MwtFAz7uby+YzPPp2eBG-y+TUTOu9E9tEJbygDQW+s_tg@mail.gmail.com>
2012-11-13 3:41 ` Vladislav Bolkhovitin
[not found] ` <CABK4GYMmigmi7YM9A5Aga21ZWoMKgUe3eX-AhPzLw9CnYhpcGA@mail.gmail.com>
2012-11-13 3:42 ` Vladislav Bolkhovitin
[not found] ` <CALwJ=MyR+nU3zqi3V3JMuEGNwd8FUsw9xLACJvd0HoBv3kRi0w@mail.gmail.com>
2012-10-11 16:38 ` Nico Williams
2012-10-11 16:48 ` Nico Williams
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=50A1C15E.2080605@vlnb.net \
--to=vst@vlnb.net \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=drh@hwaci.com \
--cc=hyc@symas.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sqlite-users@sqlite.org \
--cc=tytso@mit.edu \
/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
Powered by JetHome