* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
@ 2008-02-09 7:44 Luben Tuikov
0 siblings, 0 replies; 29+ messages in thread
From: Luben Tuikov @ 2008-02-09 7:44 UTC (permalink / raw)
To: Nicholas A. Bellinger
Cc: Bart Van Assche, James Bottomley, Vladislav Bolkhovitin,
FUJITA Tomonori, linux-scsi, linux-kernel, scst-devel,
Andrew Morton, Linus Torvalds, Ming Zhang
--- On Fri, 2/8/08, Nicholas A. Bellinger <nab@linux-iscsi.org> wrote:
> > Is there an open iSCSI Target implementation which
> does NOT
> > issue commands to sub-target devices via the SCSI
> mid-layer, but
> > bypasses it completely?
> >
> > Luben
> >
>
> Hi Luben,
>
> I am guessing you mean futher down the stack, which I
> don't know this to
Yes, that's what I meant.
> be the case. Going futher up the layers is the design of
> v2.9 LIO-SE.
> There is a diagram explaining the basic concepts from a
> 10,000 foot
> level.
>
> http://linux-iscsi.org/builds/user/nab/storage-engine-concept.pdf
Thanks!
Luben
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
@ 2008-02-05 0:24 Linus Torvalds
2008-02-05 4:43 ` [Scst-devel] " Matteo Tescione
0 siblings, 1 reply; 29+ messages in thread
From: Linus Torvalds @ 2008-02-05 0:24 UTC (permalink / raw)
To: Matt Mackall
Cc: Alan Cox, Nicholas A. Bellinger, James Bottomley,
Vladislav Bolkhovitin, Bart Van Assche, Andrew Morton,
FUJITA Tomonori, linux-scsi, scst-devel,
Linux Kernel Mailing List, Mike Christie
On Mon, 4 Feb 2008, Matt Mackall wrote:
>
> But ATAoE is boring because it's not IP. Which means no routing,
> firewalls, tunnels, congestion control, etc.
The thing is, that's often an advantage. Not just for performance.
> NBD and iSCSI (for all its hideous growths) can take advantage of these
> things.
.. and all this could equally well be done by a simple bridging protocol
(completely independently of any AoE code).
The thing is, iSCSI does things at the wrong level. It *forces* people to
use the complex protocols, when it's a known that a lot of people don't
want it.
Which is why these AoE and FCoE things keep popping up.
It's easy to bridge ethernet and add a new layer on top of AoE if you need
it. In comparison, it's *impossible* to remove an unnecessary layer from
iSCSI.
This is why "simple and low-level is good". It's always possible to build
on top of low-level protocols, while it's generally never possible to
simplify overly complex ones.
Linus
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-05 0:24 Linus Torvalds
@ 2008-02-05 4:43 ` Matteo Tescione
2008-02-05 5:07 ` James Bottomley
2008-02-05 13:38 ` FUJITA Tomonori
0 siblings, 2 replies; 29+ messages in thread
From: Matteo Tescione @ 2008-02-05 4:43 UTC (permalink / raw)
To: Linus Torvalds, Matt Mackall
Cc: Mike Christie, Vladislav Bolkhovitin, linux-scsi,
Linux Kernel Mailing List, Nicholas A. Bellinger,
James Bottomley, scst-devel, Andrew Morton, FUJITA Tomonori,
Alan Cox
Hi all,
And sorry for intrusion, i am not a developer but i work everyday with iscsi
and i found it fantastic.
Altough Aoe, Fcoe and so on could be better, we have to look in real world
implementations what is needed *now*, and if we look at vmware world,
virtual iron, microsoft clustering etc, the answer is iSCSI.
And now, SCST is the best open-source iSCSI target. So, from an end-user
point of view, what are the really problems to not integrate scst in the
mainstream kernel?
Just my two cent,
--
So long and thank for all the fish
--
#Matteo Tescione
#RMnet srl
>
>
> On Mon, 4 Feb 2008, Matt Mackall wrote:
>>
>> But ATAoE is boring because it's not IP. Which means no routing,
>> firewalls, tunnels, congestion control, etc.
>
> The thing is, that's often an advantage. Not just for performance.
>
>> NBD and iSCSI (for all its hideous growths) can take advantage of these
>> things.
>
> .. and all this could equally well be done by a simple bridging protocol
> (completely independently of any AoE code).
>
> The thing is, iSCSI does things at the wrong level. It *forces* people to
> use the complex protocols, when it's a known that a lot of people don't
> want it.
>
> Which is why these AoE and FCoE things keep popping up.
>
> It's easy to bridge ethernet and add a new layer on top of AoE if you need
> it. In comparison, it's *impossible* to remove an unnecessary layer from
> iSCSI.
>
> This is why "simple and low-level is good". It's always possible to build
> on top of low-level protocols, while it's generally never possible to
> simplify overly complex ones.
>
> Linus
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Scst-devel mailing list
> Scst-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/scst-devel
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-05 4:43 ` [Scst-devel] " Matteo Tescione
@ 2008-02-05 5:07 ` James Bottomley
2008-02-05 13:38 ` FUJITA Tomonori
1 sibling, 0 replies; 29+ messages in thread
From: James Bottomley @ 2008-02-05 5:07 UTC (permalink / raw)
To: Matteo Tescione
Cc: Linus Torvalds, Matt Mackall, Mike Christie,
Vladislav Bolkhovitin, linux-scsi, Linux Kernel Mailing List,
Nicholas A. Bellinger, scst-devel, Andrew Morton,
FUJITA Tomonori, Alan Cox
On Tue, 2008-02-05 at 05:43 +0100, Matteo Tescione wrote:
> Hi all,
> And sorry for intrusion, i am not a developer but i work everyday with iscsi
> and i found it fantastic.
> Altough Aoe, Fcoe and so on could be better, we have to look in real world
> implementations what is needed *now*, and if we look at vmware world,
> virtual iron, microsoft clustering etc, the answer is iSCSI.
> And now, SCST is the best open-source iSCSI target. So, from an end-user
> point of view, what are the really problems to not integrate scst in the
> mainstream kernel?
The fact that your last statement is conjecture. It's definitely untrue
for non-IB networks, and the jury is still out on IB networks.
James
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-05 4:43 ` [Scst-devel] " Matteo Tescione
2008-02-05 5:07 ` James Bottomley
@ 2008-02-05 13:38 ` FUJITA Tomonori
1 sibling, 0 replies; 29+ messages in thread
From: FUJITA Tomonori @ 2008-02-05 13:38 UTC (permalink / raw)
To: matteo
Cc: torvalds, mpm, michaelc, vst, linux-scsi, linux-kernel, nab,
James.Bottomley, scst-devel, akpm, fujita.tomonori, alan,
fujita.tomonori
On Tue, 05 Feb 2008 05:43:10 +0100
Matteo Tescione <matteo@rmnet.it> wrote:
> Hi all,
> And sorry for intrusion, i am not a developer but i work everyday with iscsi
> and i found it fantastic.
> Altough Aoe, Fcoe and so on could be better, we have to look in real world
> implementations what is needed *now*, and if we look at vmware world,
> virtual iron, microsoft clustering etc, the answer is iSCSI.
> And now, SCST is the best open-source iSCSI target. So, from an end-user
> point of view, what are the really problems to not integrate scst in the
> mainstream kernel?
Currently, the best open-source iSCSI target implemenation in Linux is
Nicholas's LIO, I guess.
^ permalink raw reply [flat|nested] 29+ messages in thread
* Integration of SCST in the mainstream Linux kernel
@ 2008-01-23 14:22 Bart Van Assche
2008-01-29 20:42 ` James Bottomley
` (2 more replies)
0 siblings, 3 replies; 29+ messages in thread
From: Bart Van Assche @ 2008-01-23 14:22 UTC (permalink / raw)
To: Linus Torvalds, Andrew Morton, Vladislav Bolkhovitin,
James.Bottomley, FUJITA Tomonori
Cc: linux-scsi, scst-devel, linux-kernel
As you probably know there is a trend in enterprise computing towards
networked storage. This is illustrated by the emergence during the
past few years of standards like SRP (SCSI RDMA Protocol), iSCSI
(Internet SCSI) and iSER (iSCSI Extensions for RDMA). Two different
pieces of software are necessary to make networked storage possible:
initiator software and target software. As far as I know there exist
three different SCSI target implementations for Linux:
- The iSCSI Enterprise Target Daemon (IETD,
http://iscsitarget.sourceforge.net/);
- The Linux SCSI Target Framework (STGT, http://stgt.berlios.de/);
- The Generic SCSI Target Middle Level for Linux project (SCST,
http://scst.sourceforge.net/).
Since I was wondering which SCSI target software would be best suited
for an InfiniBand network, I started evaluating the STGT and SCST SCSI
target implementations. Apparently the performance difference between
STGT and SCST is small on 100 Mbit/s and 1 Gbit/s Ethernet networks,
but the SCST target software outperforms the STGT software on an
InfiniBand network. See also the following thread for the details:
http://sourceforge.net/mailarchive/forum.php?thread_name=e2e108260801170127w2937b2afg9bef324efa945e43%40mail.gmail.com&forum_name=scst-devel.
About the design of the SCST software: while one of the goals of the
STGT project was to keep the in-kernel code minimal, the SCST project
implements the whole SCSI target in kernel space. SCST is implemented
as a set of new kernel modules, only minimal changes to the existing
kernel are necessary before the SCST kernel modules can be used. This
is the same approach that will be followed in the very near future in
the OpenSolaris kernel (see also
http://opensolaris.org/os/project/comstar/). More information about
the design of SCST can be found here:
http://scst.sourceforge.net/doc/scst_pg.html.
My impression is that both the STGT and SCST projects are well
designed, well maintained and have a considerable user base. According
to the SCST maintainer (Vladislav Bolkhovitin), SCST is superior to
STGT with respect to features, performance, maturity, stability, and
number of existing target drivers. Unfortunately the SCST kernel code
lives outside the kernel tree, which makes SCST harder to use than
STGT.
As an SCST user, I would like to see the SCST kernel code integrated
in the mainstream kernel because of its excellent performance on an
InfiniBand network. Since the SCST project comprises about 14 KLOC,
reviewing the SCST code will take considerable time. Who will do this
reviewing work ? And with regard to the comments made by the
reviewers: Vladislav, do you have the time to carry out the
modifications requested by the reviewers ? I expect a.o. that
reviewers will ask to move SCST's configuration pseudofiles from
procfs to sysfs.
Bart Van Assche.
^ permalink raw reply [flat|nested] 29+ messages in thread* Re: Integration of SCST in the mainstream Linux kernel
2008-01-23 14:22 Bart Van Assche
@ 2008-01-29 20:42 ` James Bottomley
2008-01-29 21:31 ` Roland Dreier
2008-01-30 8:29 ` Bart Van Assche
2008-02-04 16:25 ` Vladislav Bolkhovitin
2008-02-04 19:06 ` Nicholas A. Bellinger
2 siblings, 2 replies; 29+ messages in thread
From: James Bottomley @ 2008-01-29 20:42 UTC (permalink / raw)
To: Bart Van Assche
Cc: Linus Torvalds, Andrew Morton, Vladislav Bolkhovitin,
FUJITA Tomonori, linux-scsi, scst-devel, linux-kernel
On Wed, 2008-01-23 at 15:22 +0100, Bart Van Assche wrote:
> As you probably know there is a trend in enterprise computing towards
> networked storage. This is illustrated by the emergence during the
> past few years of standards like SRP (SCSI RDMA Protocol), iSCSI
> (Internet SCSI) and iSER (iSCSI Extensions for RDMA). Two different
> pieces of software are necessary to make networked storage possible:
> initiator software and target software. As far as I know there exist
> three different SCSI target implementations for Linux:
> - The iSCSI Enterprise Target Daemon (IETD,
> http://iscsitarget.sourceforge.net/);
> - The Linux SCSI Target Framework (STGT, http://stgt.berlios.de/);
> - The Generic SCSI Target Middle Level for Linux project (SCST,
> http://scst.sourceforge.net/).
> Since I was wondering which SCSI target software would be best suited
> for an InfiniBand network, I started evaluating the STGT and SCST SCSI
> target implementations. Apparently the performance difference between
> STGT and SCST is small on 100 Mbit/s and 1 Gbit/s Ethernet networks,
> but the SCST target software outperforms the STGT software on an
> InfiniBand network. See also the following thread for the details:
> http://sourceforge.net/mailarchive/forum.php?thread_name=e2e108260801170127w2937b2afg9bef324efa945e43%40mail.gmail.com&forum_name=scst-devel.
That doesn't seem to pull up a thread. However, I assume it's these
figures:
.............................................................................................
. . STGT read SCST read . STGT read SCST read .
. . performance performance . performance performance .
. . (0.5K, MB/s) (0.5K, MB/s) . (1 MB, MB/s) (1 MB, MB/s) .
.............................................................................................
. Ethernet (1 Gb/s network) . 77 78 . 77 89 .
. IPoIB (8 Gb/s network) . 163 185 . 201 239 .
. iSER (8 Gb/s network) . 250 N/A . 360 N/A .
. SRP (8 Gb/s network) . N/A 421 . N/A 683 .
.............................................................................................
On the comparable figures, which only seem to be IPoIB they're showing a
13-18% variance, aren't they? Which isn't an incredible difference.
> About the design of the SCST software: while one of the goals of the
> STGT project was to keep the in-kernel code minimal, the SCST project
> implements the whole SCSI target in kernel space. SCST is implemented
> as a set of new kernel modules, only minimal changes to the existing
> kernel are necessary before the SCST kernel modules can be used. This
> is the same approach that will be followed in the very near future in
> the OpenSolaris kernel (see also
> http://opensolaris.org/os/project/comstar/). More information about
> the design of SCST can be found here:
> http://scst.sourceforge.net/doc/scst_pg.html.
>
> My impression is that both the STGT and SCST projects are well
> designed, well maintained and have a considerable user base. According
> to the SCST maintainer (Vladislav Bolkhovitin), SCST is superior to
> STGT with respect to features, performance, maturity, stability, and
> number of existing target drivers. Unfortunately the SCST kernel code
> lives outside the kernel tree, which makes SCST harder to use than
> STGT.
>
> As an SCST user, I would like to see the SCST kernel code integrated
> in the mainstream kernel because of its excellent performance on an
> InfiniBand network. Since the SCST project comprises about 14 KLOC,
> reviewing the SCST code will take considerable time. Who will do this
> reviewing work ? And with regard to the comments made by the
> reviewers: Vladislav, do you have the time to carry out the
> modifications requested by the reviewers ? I expect a.o. that
> reviewers will ask to move SCST's configuration pseudofiles from
> procfs to sysfs.
The two target architectures perform essentially identical functions, so
there's only really room for one in the kernel. Right at the moment,
it's STGT. Problems in STGT come from the user<->kernel boundary which
can be mitigated in a variety of ways. The fact that the figures are
pretty much comparable on non IB networks shows this.
I really need a whole lot more evidence than at worst a 20% performance
difference on IB to pull one implementation out and replace it with
another. Particularly as there's no real evidence that STGT can't be
tweaked to recover the 20% even on IB.
James
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-01-29 20:42 ` James Bottomley
@ 2008-01-29 21:31 ` Roland Dreier
2008-01-29 23:32 ` FUJITA Tomonori
2008-01-30 8:29 ` Bart Van Assche
1 sibling, 1 reply; 29+ messages in thread
From: Roland Dreier @ 2008-01-29 21:31 UTC (permalink / raw)
To: James Bottomley
Cc: Bart Van Assche, Linus Torvalds, Andrew Morton,
Vladislav Bolkhovitin, FUJITA Tomonori, linux-scsi, scst-devel,
linux-kernel
> . . STGT read SCST read . STGT read SCST read .
> . . performance performance . performance performance .
> . . (0.5K, MB/s) (0.5K, MB/s) . (1 MB, MB/s) (1 MB, MB/s) .
> . iSER (8 Gb/s network) . 250 N/A . 360 N/A .
> . SRP (8 Gb/s network) . N/A 421 . N/A 683 .
> On the comparable figures, which only seem to be IPoIB they're showing a
> 13-18% variance, aren't they? Which isn't an incredible difference.
Maybe I'm all wet, but I think iSER vs. SRP should be roughly
comparable. The exact formatting of various messages etc. is
different but the data path using RDMA is pretty much identical. So
the big difference between STGT iSER and SCST SRP hints at some big
difference in the efficiency of the two implementations.
- R.
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-01-29 21:31 ` Roland Dreier
@ 2008-01-29 23:32 ` FUJITA Tomonori
2008-01-30 1:15 ` [Scst-devel] " Vu Pham
2008-01-30 8:38 ` Bart Van Assche
0 siblings, 2 replies; 29+ messages in thread
From: FUJITA Tomonori @ 2008-01-29 23:32 UTC (permalink / raw)
To: rdreier
Cc: James.Bottomley, bart.vanassche, torvalds, akpm, vst,
fujita.tomonori, linux-scsi, scst-devel, linux-kernel
On Tue, 29 Jan 2008 13:31:52 -0800
Roland Dreier <rdreier@cisco.com> wrote:
> > . . STGT read SCST read . STGT read SCST read .
> > . . performance performance . performance performance .
> > . . (0.5K, MB/s) (0.5K, MB/s) . (1 MB, MB/s) (1 MB, MB/s) .
> > . iSER (8 Gb/s network) . 250 N/A . 360 N/A .
> > . SRP (8 Gb/s network) . N/A 421 . N/A 683 .
>
> > On the comparable figures, which only seem to be IPoIB they're showing a
> > 13-18% variance, aren't they? Which isn't an incredible difference.
>
> Maybe I'm all wet, but I think iSER vs. SRP should be roughly
> comparable. The exact formatting of various messages etc. is
> different but the data path using RDMA is pretty much identical. So
> the big difference between STGT iSER and SCST SRP hints at some big
> difference in the efficiency of the two implementations.
iSER has parameters to limit the maximum size of RDMA (it needs to
repeat RDMA with a poor configuration)?
Anyway, here's the results from Robin Humble:
iSER to 7G ramfs, x86_64, centos4.6, 2.6.22 kernels, git tgtd,
initiator end booted with mem=512M, target with 8G ram
direct i/o dd
write/read 800/751 MB/s
dd if=/dev/zero of=/dev/sdc bs=1M count=5000 oflag=direct
dd of=/dev/null if=/dev/sdc bs=1M count=5000 iflag=direct
http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg13502.html
I think that STGT is pretty fast with the fast backing storage.
I don't think that there is the notable perfornace difference between
kernel-space and user-space SRP (or ISER) implementations about moving
data between hosts. IB is expected to enable user-space applications
to move data between hosts quickly (if not, what can IB provide us?).
I think that the question is how fast user-space applications can do
I/Os ccompared with I/Os in kernel space. STGT is eager for the advent
of good asynchronous I/O and event notification interfances.
One more possible optimization for STGT is zero-copy data
transfer. STGT uses pre-registered buffers and move data between page
cache and thsse buffers, and then does RDMA transfer. If we implement
own caching mechanism to use pre-registered buffers directly with (AIO
and O_DIRECT), then STGT can move data without data copies.
^ permalink raw reply [flat|nested] 29+ messages in thread* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-01-29 23:32 ` FUJITA Tomonori
@ 2008-01-30 1:15 ` Vu Pham
2008-01-30 8:38 ` Bart Van Assche
1 sibling, 0 replies; 29+ messages in thread
From: Vu Pham @ 2008-01-30 1:15 UTC (permalink / raw)
To: FUJITA Tomonori
Cc: rdreier, vst, linux-scsi, linux-kernel, James.Bottomley,
scst-devel, akpm, torvalds
FUJITA Tomonori wrote:
> On Tue, 29 Jan 2008 13:31:52 -0800
> Roland Dreier <rdreier@cisco.com> wrote:
>
>> > . . STGT read SCST read . STGT read SCST read .
>> > . . performance performance . performance performance .
>> > . . (0.5K, MB/s) (0.5K, MB/s) . (1 MB, MB/s) (1 MB, MB/s) .
>> > . iSER (8 Gb/s network) . 250 N/A . 360 N/A .
>> > . SRP (8 Gb/s network) . N/A 421 . N/A 683 .
>>
>> > On the comparable figures, which only seem to be IPoIB they're showing a
>> > 13-18% variance, aren't they? Which isn't an incredible difference.
>>
>> Maybe I'm all wet, but I think iSER vs. SRP should be roughly
>> comparable. The exact formatting of various messages etc. is
>> different but the data path using RDMA is pretty much identical. So
>> the big difference between STGT iSER and SCST SRP hints at some big
>> difference in the efficiency of the two implementations.
>
> iSER has parameters to limit the maximum size of RDMA (it needs to
> repeat RDMA with a poor configuration)?
>
>
> Anyway, here's the results from Robin Humble:
>
> iSER to 7G ramfs, x86_64, centos4.6, 2.6.22 kernels, git tgtd,
> initiator end booted with mem=512M, target with 8G ram
>
> direct i/o dd
> write/read 800/751 MB/s
> dd if=/dev/zero of=/dev/sdc bs=1M count=5000 oflag=direct
> dd of=/dev/null if=/dev/sdc bs=1M count=5000 iflag=direct
>
Both Robin (iser/stgt) and Bart (scst/srp) using ramfs
Robin's numbers come from DDR IB HCAs
Bart's numbers come from SDR IB HCAs:
Results with /dev/ram0 configured as backing store on the
target (buffered I/O):
Read Write Read
Write
performance performance
performance performance
(0.5K, MB/s) (0.5K, MB/s) (1 MB,
MB/s) (1 MB, MB/s)
STGT + iSER 250 48 349
781
SCST + SRP 411 66 659
746
Results with /dev/ram0 configured as backing store on the
target (direct I/O):
Read Write Read
Write
performance performance
performance performance
(0.5K, MB/s) (0.5K, MB/s) (1 MB,
MB/s) (1 MB, MB/s)
STGT + iSER 7.9 9.8 589
647
SCST + SRP 12.3 9.7 811
794
http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg13514.html
Here are my numbers with DDR IB HCAs, SCST/SRP 5G /dev/ram0
block_io mode, RHEL5 2.6.18-8.el5
direct i/o dd
write/read 1100/895 MB/s
dd if=/dev/zero of=/dev/sdc bs=1M count=5000 oflag=direct
dd of=/dev/null if=/dev/sdc bs=1M count=5000 iflag=direct
buffered i/o dd
write/read 950/770 MB/s
dd if=/dev/zero of=/dev/sdc bs=1M count=5000
dd of=/dev/null if=/dev/sdc bs=1M count=5000
So when using DDR IB hcas:
stgt/iser scst/srp
direct I/O 800/751 1100/895
buffered I/O 1109/350 950/770
-vu
> http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg13502.html
>
> I think that STGT is pretty fast with the fast backing storage.
>
>
> I don't think that there is the notable perfornace difference between
> kernel-space and user-space SRP (or ISER) implementations about moving
> data between hosts. IB is expected to enable user-space applications
> to move data between hosts quickly (if not, what can IB provide us?).
>
> I think that the question is how fast user-space applications can do
> I/Os ccompared with I/Os in kernel space. STGT is eager for the advent
> of good asynchronous I/O and event notification interfances.
>
>
> One more possible optimization for STGT is zero-copy data
> transfer. STGT uses pre-registered buffers and move data between page
> cache and thsse buffers, and then does RDMA transfer. If we implement
> own caching mechanism to use pre-registered buffers directly with (AIO
> and O_DIRECT), then STGT can move data without data copies.
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Scst-devel mailing list
> Scst-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/scst-devel
>
^ permalink raw reply [flat|nested] 29+ messages in thread* Re: Integration of SCST in the mainstream Linux kernel
2008-01-29 23:32 ` FUJITA Tomonori
2008-01-30 1:15 ` [Scst-devel] " Vu Pham
@ 2008-01-30 8:38 ` Bart Van Assche
2008-01-30 10:56 ` FUJITA Tomonori
1 sibling, 1 reply; 29+ messages in thread
From: Bart Van Assche @ 2008-01-30 8:38 UTC (permalink / raw)
To: FUJITA Tomonori
Cc: rdreier, James.Bottomley, torvalds, akpm, vst, linux-scsi,
scst-devel, linux-kernel
On Jan 30, 2008 12:32 AM, FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> wrote:
>
> iSER has parameters to limit the maximum size of RDMA (it needs to
> repeat RDMA with a poor configuration)?
Please specify which parameters you are referring to. As you know I
had already repeated my tests with ridiculously high values for the
following iSER parameters: FirstBurstLength, MaxBurstLength and
MaxRecvDataSegmentLength (16 MB, which is more than the 1 MB block
size specified to dd).
Bart Van Assche.
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-01-30 8:38 ` Bart Van Assche
@ 2008-01-30 10:56 ` FUJITA Tomonori
2008-01-31 13:25 ` Nicholas A. Bellinger
0 siblings, 1 reply; 29+ messages in thread
From: FUJITA Tomonori @ 2008-01-30 10:56 UTC (permalink / raw)
To: bart.vanassche
Cc: fujita.tomonori, rdreier, James.Bottomley, torvalds, akpm, vst,
linux-scsi, scst-devel, linux-kernel
On Wed, 30 Jan 2008 09:38:04 +0100
"Bart Van Assche" <bart.vanassche@gmail.com> wrote:
> On Jan 30, 2008 12:32 AM, FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> wrote:
> >
> > iSER has parameters to limit the maximum size of RDMA (it needs to
> > repeat RDMA with a poor configuration)?
>
> Please specify which parameters you are referring to. As you know I
Sorry, I can't say. I don't know much about iSER. But seems that Pete
and Robin can get the better I/O performance - line speed ratio with
STGT.
The version of OpenIB might matters too. For example, Pete said that
STGT reads loses about 100 MB/s for some transfer sizes for some
transfer sizes due to the OpenIB version difference or other unclear
reasons.
http://article.gmane.org/gmane.linux.iscsi.tgt.devel/135
It's fair to say that it takes long time and need lots of knowledge to
get the maximum performance of SAN, I think.
I think that it would be easier to convince James with the detailed
analysis (e.g. where does it take so long, like Pete did), not just
'dd' performance results.
Pushing iSCSI target code into mainline failed four times: IET, SCST,
STGT (doing I/Os in kernel in the past), and PyX's one (*1). iSCSI
target code is huge. You said SCST comprises 14,000 lines, but it's
not iSCSI target code. The SCSI engine code comprises 14,000
lines. You need another 10,000 lines for the iSCSI driver. Note that
SCST's iSCSI driver provides only basic iSCSI features. PyX's iSCSI
target code implemenents more iSCSI features (like MC/S, ERL2, etc)
and comprises about 60,000 lines and it still lacks some features like
iSER, bidi, etc.
I think that it's reasonable to say that we need more than 'dd'
results before pushing about possible more than 60,000 lines to
mainline.
(*1) http://linux-iscsi.org/
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-01-30 10:56 ` FUJITA Tomonori
@ 2008-01-31 13:25 ` Nicholas A. Bellinger
2008-01-31 14:34 ` Bart Van Assche
0 siblings, 1 reply; 29+ messages in thread
From: Nicholas A. Bellinger @ 2008-01-31 13:25 UTC (permalink / raw)
To: FUJITA Tomonori
Cc: bart.vanassche, fujita.tomonori, rdreier, James.Bottomley,
torvalds, akpm, vst, linux-scsi, scst-devel, linux-kernel
Greetings all,
On Wed, 2008-01-30 at 19:56 +0900, FUJITA Tomonori wrote:
> On Wed, 30 Jan 2008 09:38:04 +0100
> "Bart Van Assche" <bart.vanassche@gmail.com> wrote:
>
> > On Jan 30, 2008 12:32 AM, FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> wrote:
> > >
> > > iSER has parameters to limit the maximum size of RDMA (it needs to
> > > repeat RDMA with a poor configuration)?
> >
> > Please specify which parameters you are referring to. As you know I
>
> Sorry, I can't say. I don't know much about iSER. But seems that Pete
> and Robin can get the better I/O performance - line speed ratio with
> STGT.
>
> The version of OpenIB might matters too. For example, Pete said that
> STGT reads loses about 100 MB/s for some transfer sizes for some
> transfer sizes due to the OpenIB version difference or other unclear
> reasons.
>
> http://article.gmane.org/gmane.linux.iscsi.tgt.devel/135
>
> It's fair to say that it takes long time and need lots of knowledge to
> get the maximum performance of SAN, I think.
>
> I think that it would be easier to convince James with the detailed
> analysis (e.g. where does it take so long, like Pete did), not just
> 'dd' performance results.
>
> Pushing iSCSI target code into mainline failed four times: IET, SCST,
> STGT (doing I/Os in kernel in the past), and PyX's one (*1). iSCSI
> target code is huge. You said SCST comprises 14,000 lines, but it's
> not iSCSI target code. The SCSI engine code comprises 14,000
> lines. You need another 10,000 lines for the iSCSI driver. Note that
> SCST's iSCSI driver provides only basic iSCSI features. PyX's iSCSI
> target code implemenents more iSCSI features (like MC/S, ERL2, etc)
> and comprises about 60,000 lines and it still lacks some features like
> iSER, bidi, etc.
>
The PyX storage engine supports a scatterlist linked list algorithm that
maps any sector count + sector size combination down to contiguous
struct scatterlist arrays across (potentially) multiple Linux storage
subsystems from a single CDB received on a initiator port. This design
was a consequence of a requirement for running said engine on Linux v2.2
and v2.4 across non cache coherent systems (MIPS R5900-EE) using a
single contiguous memory block mapped into struct buffer_head for PATA
access, and struct scsi_cmnd access on USB storage. Note that this was
before struct bio and struct scsi_request existed..
The PyX storage engine as it exists at Linux-iSCSI.org today can be
thought of as a hybrid OSD processing engine, as it maps storage object
memory across a number of tasks from a received command CDB. The
ability to pass in pre allocated memory from an RDMA capable adapter, as
well as allocated internally (ie: traditional iSCSI without open_iscsi's
struct skbuff rx zero-copy) is inherient in the design of the storage
engine. The lacking Bidi support can be attributed to lack of greater
support (and hence user interest) in Bidi, but I am really glad to see
this getting into the SCSI ML and STGT, and is certainly of interest in
the long term. Another feature that is missing in the current engine is
> 16 Byte CDBs, which I would imagine alot of vendor folks would like to
see in Linux as well. This is pretty easy to add in iSCSI with an AHS
and in the engine and storage subsystems.
> I think that it's reasonable to say that we need more than 'dd'
> results before pushing about possible more than 60,000 lines to
> mainline.
>
> (*1) http://linux-iscsi.org/
> -
The 60k lines of code also includes functionality (the SE mirroring
comes to mind) that I do not plan to push towards mainline, along with
other legacy bits so we can build on earlier v2.6 embedded platforms.
The existing Target mode LIO-SE that provides linked list scatterlist
mapping algorithm that is similar to what Jens and Rusty have been
working on, and is under 14k lines including the switch(cdb[0]) +
function pointer assignment to per CDB specific structure that is called
potentially out-of-order in the RX side context of the CmdSN state
machine in RFC-3720. The current SE is also lacking the very SCSI
specific task management state machines that not a whole lot of iSCSI
implementions implement properly, and seem to be minimal interest to
users, and of moderate interest to vendors. Getting this implemented
generically in SCSI, as opposed to an transport specific mechanisim
would benefit the Linux SCSI target engine.
The pSCSI (struct scsi_cmnd), iBlock (struct bio) and FILE (struct file)
plugins together are a grand total of 3.5k lines using the v2.9 LIO-SE
interface. Assuming we have a single preferred data and control patch
for underlying physical and virtual block devices, this could also get
smaller. A quick check of the code puts the traditional kernel level
iSCSI statemachine at roughly 16k, which is pretty good for the complete
state machine. Also, having iSER and traditional iSCSI share MC/S and
ERL=2 common code will be of interest, as well as iSCSI login state
machines, which are identical minus the extra iSER specific keys and
requirement to transition from byte stream mode to RDMA accelerated
mode.
Since this particular code is located in a non-data path critical
section, the kernel vs. user discussion is a wash. If we are talking
about data path, yes, the relevance of DD tests in kernel designs are
suspect :p. For those IB testers who are interested, perhaps having a
look with disktest from the Linux Test Project would give a better
comparision between the two implementations on a RDMA capable fabric
like IB for best case performance. I think everyone is interested in
seeing just how much data path overhead exists between userspace and
kernel space in typical and heavy workloads, if if this overhead can be
minimized to make userspace a better option for some of this very
complex code.
--nab
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-01-31 13:25 ` Nicholas A. Bellinger
@ 2008-01-31 14:34 ` Bart Van Assche
2008-01-31 15:50 ` Vladislav Bolkhovitin
0 siblings, 1 reply; 29+ messages in thread
From: Bart Van Assche @ 2008-01-31 14:34 UTC (permalink / raw)
To: Nicholas A. Bellinger
Cc: FUJITA Tomonori, fujita.tomonori, rdreier, James.Bottomley,
torvalds, akpm, vst, linux-scsi, scst-devel, linux-kernel
On Jan 31, 2008 2:25 PM, Nicholas A. Bellinger <nab@linux-iscsi.org> wrote:
> Since this particular code is located in a non-data path critical
> section, the kernel vs. user discussion is a wash. If we are talking
> about data path, yes, the relevance of DD tests in kernel designs are
> suspect :p. For those IB testers who are interested, perhaps having a
> look with disktest from the Linux Test Project would give a better
> comparision between the two implementations on a RDMA capable fabric
> like IB for best case performance. I think everyone is interested in
> seeing just how much data path overhead exists between userspace and
> kernel space in typical and heavy workloads, if if this overhead can be
> minimized to make userspace a better option for some of this very
> complex code.
I can run disktest on the same setups I ran dd on. This will take some
time however.
Disktest is new to me -- any hints with regard to suitable
combinations of command line parameters are welcome. The most recent
version I could find on http://ltp.sourceforge.net/ is ltp-20071231.
Bart Van Assche.
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-01-31 14:34 ` Bart Van Assche
@ 2008-01-31 15:50 ` Vladislav Bolkhovitin
2008-01-31 16:25 ` [Scst-devel] " Joe Landman
0 siblings, 1 reply; 29+ messages in thread
From: Vladislav Bolkhovitin @ 2008-01-31 15:50 UTC (permalink / raw)
To: Bart Van Assche
Cc: Nicholas A. Bellinger, FUJITA Tomonori, fujita.tomonori, rdreier,
James.Bottomley, torvalds, akpm, linux-scsi, scst-devel,
linux-kernel
Bart Van Assche wrote:
> On Jan 31, 2008 2:25 PM, Nicholas A. Bellinger <nab@linux-iscsi.org> wrote:
>
>>Since this particular code is located in a non-data path critical
>>section, the kernel vs. user discussion is a wash. If we are talking
>>about data path, yes, the relevance of DD tests in kernel designs are
>>suspect :p. For those IB testers who are interested, perhaps having a
>>look with disktest from the Linux Test Project would give a better
>>comparision between the two implementations on a RDMA capable fabric
>>like IB for best case performance. I think everyone is interested in
>>seeing just how much data path overhead exists between userspace and
>>kernel space in typical and heavy workloads, if if this overhead can be
>>minimized to make userspace a better option for some of this very
>>complex code.
>
> I can run disktest on the same setups I ran dd on. This will take some
> time however.
Disktest was already referenced in the beginning of the performance
comparison thread, but its results are not very interesting if we are
going to find out, which implementation is more effective, because in
the modes, in which usually people run this utility, it produces latency
insensitive workload (multiple threads working in parallel). So, such
multithreaded disktests results will be different between STGT and SCST
only if STGT's implementation will get target CPU bound. If CPU on the
target is powerful enough, even extra busy loops in the STGT or SCST hot
path code will change nothing.
Additionally, multithreaded disktest over RAM disk is a good example of
a synthetic benchmark, which has almost no relation with real life
workloads. But people like it, because it produces nice looking results.
Actually, I don't know what kind of conclusions it is possible to make
from disktest's results (maybe only how throughput gets bigger or slower
with increasing number of threads?), it's a good stress test tool, but
not more.
> Disktest is new to me -- any hints with regard to suitable
> combinations of command line parameters are welcome. The most recent
> version I could find on http://ltp.sourceforge.net/ is ltp-20071231.
>
> Bart Van Assche.
> -
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-01-31 15:50 ` Vladislav Bolkhovitin
@ 2008-01-31 16:25 ` Joe Landman
2008-01-31 17:08 ` Bart Van Assche
0 siblings, 1 reply; 29+ messages in thread
From: Joe Landman @ 2008-01-31 16:25 UTC (permalink / raw)
To: Vladislav Bolkhovitin
Cc: Bart Van Assche, James.Bottomley, linux-scsi, rdreier,
linux-kernel, Nicholas A. Bellinger, fujita.tomonori, scst-devel,
akpm, FUJITA Tomonori, torvalds
Vladislav Bolkhovitin wrote:
> Bart Van Assche wrote:
[...]
>> I can run disktest on the same setups I ran dd on. This will take some
>> time however.
>
> Disktest was already referenced in the beginning of the performance
> comparison thread, but its results are not very interesting if we are
> going to find out, which implementation is more effective, because in
> the modes, in which usually people run this utility, it produces latency
> insensitive workload (multiple threads working in parallel). So, such
There are other issues with disktest, in that you can easily specify
option combinations that generate apparently 5+ GB/s of IO, though
actual traffic over the link to storage is very low. Caveat disktest
emptor.
> multithreaded disktests results will be different between STGT and SCST
> only if STGT's implementation will get target CPU bound. If CPU on the
> target is powerful enough, even extra busy loops in the STGT or SCST hot
> path code will change nothing.
>
> Additionally, multithreaded disktest over RAM disk is a good example of
> a synthetic benchmark, which has almost no relation with real life
> workloads. But people like it, because it produces nice looking results.
I agree. The backing store should be a disk for it to have meaning,
though please note my caveat above.
>
> Actually, I don't know what kind of conclusions it is possible to make
> from disktest's results (maybe only how throughput gets bigger or slower
> with increasing number of threads?), it's a good stress test tool, but
> not more.
Unfortunately, I agree. Bonnie++, dd tests, and a few others seem to
bear far closer to "real world" tests than disktest and iozone, the
latter of which does more to test the speed of RAM cache and system call
performance than actual IO.
>> Disktest is new to me -- any hints with regard to suitable
>> combinations of command line parameters are welcome. The most recent
>> version I could find on http://ltp.sourceforge.net/ is ltp-20071231.
>>
>> Bart Van Assche.
Here is what I have run:
disktest -K 8 -B 256k -I F -N 20000000 -P A -w /big/file
disktest -K 8 -B 64k -I F -N 20000000 -P A -w /big/file
disktest -K 8 -B 1k -I B -N 2000000 -P A /dev/sdb2
and many others.
Joe
--
Joseph Landman, Ph.D
Founder and CEO
Scalable Informatics LLC,
email: landman@scalableinformatics.com
web : http://www.scalableinformatics.com
http://jackrabbit.scalableinformatics.com
phone: +1 734 786 8423
fax : +1 866 888 3112
cell : +1 734 612 4615
^ permalink raw reply [flat|nested] 29+ messages in thread* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-01-31 16:25 ` [Scst-devel] " Joe Landman
@ 2008-01-31 17:08 ` Bart Van Assche
2008-01-31 17:13 ` Joe Landman
` (2 more replies)
0 siblings, 3 replies; 29+ messages in thread
From: Bart Van Assche @ 2008-01-31 17:08 UTC (permalink / raw)
To: landman
Cc: Vladislav Bolkhovitin, James.Bottomley, linux-scsi, rdreier,
linux-kernel, Nicholas A. Bellinger, fujita.tomonori, scst-devel,
akpm, FUJITA Tomonori, torvalds
On Jan 31, 2008 5:25 PM, Joe Landman <landman@scalableinformatics.com> wrote:
> Vladislav Bolkhovitin wrote:
> > Actually, I don't know what kind of conclusions it is possible to make
> > from disktest's results (maybe only how throughput gets bigger or slower
> > with increasing number of threads?), it's a good stress test tool, but
> > not more.
>
> Unfortunately, I agree. Bonnie++, dd tests, and a few others seem to
> bear far closer to "real world" tests than disktest and iozone, the
> latter of which does more to test the speed of RAM cache and system call
> performance than actual IO.
I have ran some tests with Bonnie++, but found out that on a fast
network like IB the filesystem used for the test has a really big
impact on the test results.
If anyone has a suggestion for a better test than dd to compare the
performance of SCSI storage protocols, please let it know.
Bart Van Assche.
^ permalink raw reply [flat|nested] 29+ messages in thread* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-01-31 17:08 ` Bart Van Assche
@ 2008-01-31 17:13 ` Joe Landman
2008-01-31 18:12 ` David Dillow
2008-02-01 11:50 ` Vladislav Bolkhovitin
2 siblings, 0 replies; 29+ messages in thread
From: Joe Landman @ 2008-01-31 17:13 UTC (permalink / raw)
To: Bart Van Assche
Cc: Vladislav Bolkhovitin, James.Bottomley, linux-scsi, rdreier,
linux-kernel, Nicholas A. Bellinger, fujita.tomonori, scst-devel,
akpm, FUJITA Tomonori, torvalds
Bart Van Assche wrote:
> I have ran some tests with Bonnie++, but found out that on a fast
> network like IB the filesystem used for the test has a really big
> impact on the test results.
This is true of the file systems when physically directly connected to
the unit as well. Some file systems are designed with high performance
in mind, some are not.
> If anyone has a suggestion for a better test than dd to compare the
> performance of SCSI storage protocols, please let it know.
Hmmm... if you care about the protocol side, I can't help. Our users
are more concerned with the file system side, so this is where we focus
our tuning attention.
>
> Bart Van Assche.
Joe
--
Joseph Landman, Ph.D
Founder and CEO
Scalable Informatics LLC,
email: landman@scalableinformatics.com
web : http://www.scalableinformatics.com
http://jackrabbit.scalableinformatics.com
phone: +1 734 786 8423
fax : +1 866 888 3112
cell : +1 734 612 4615
^ permalink raw reply [flat|nested] 29+ messages in thread* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-01-31 17:08 ` Bart Van Assche
2008-01-31 17:13 ` Joe Landman
@ 2008-01-31 18:12 ` David Dillow
2008-02-01 11:50 ` Vladislav Bolkhovitin
2008-02-01 11:50 ` Vladislav Bolkhovitin
2 siblings, 1 reply; 29+ messages in thread
From: David Dillow @ 2008-01-31 18:12 UTC (permalink / raw)
To: Bart Van Assche
Cc: landman, Vladislav Bolkhovitin, James.Bottomley, linux-scsi,
rdreier, linux-kernel, Nicholas A. Bellinger, fujita.tomonori,
scst-devel, akpm, FUJITA Tomonori, torvalds
On Thu, 2008-01-31 at 18:08 +0100, Bart Van Assche wrote:
> If anyone has a suggestion for a better test than dd to compare the
> performance of SCSI storage protocols, please let it know.
xdd on /dev/sda, sdb, etc. using -dio to do direct IO seems to work
decently, though it is hard (ie, impossible) to get a repeatable
sequence of IO when using higher queue depths, as it uses threads to
generate multiple requests.
You may also look at sgpdd_survey from Lustre's iokit, but I've not done
much with that -- it uses the sg devices to send lowlevel SCSI commands.
I've been playing around with some benchmark code using libaio, but it's
not in generally usable shape.
xdd:
http://www.ioperformance.com/products.htm
Lustre IO Kit:
http://manual.lustre.org/manual/LustreManual16_HTML/DynamicHTML-20-1.html
--
Dave Dillow
National Center for Computational Science
Oak Ridge National Laboratory
(865) 241-6602 office
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-01-31 18:12 ` David Dillow
@ 2008-02-01 11:50 ` Vladislav Bolkhovitin
0 siblings, 0 replies; 29+ messages in thread
From: Vladislav Bolkhovitin @ 2008-02-01 11:50 UTC (permalink / raw)
To: David Dillow
Cc: Bart Van Assche, landman, James.Bottomley, linux-scsi, rdreier,
linux-kernel, Nicholas A. Bellinger, fujita.tomonori, scst-devel,
akpm, FUJITA Tomonori, torvalds
David Dillow wrote:
> On Thu, 2008-01-31 at 18:08 +0100, Bart Van Assche wrote:
>
>>If anyone has a suggestion for a better test than dd to compare the
>>performance of SCSI storage protocols, please let it know.
>
>
> xdd on /dev/sda, sdb, etc. using -dio to do direct IO seems to work
> decently, though it is hard (ie, impossible) to get a repeatable
> sequence of IO when using higher queue depths, as it uses threads to
> generate multiple requests.
This utility seems to be a good one, but it's basically the same as
disktest, although much more advanced.
> You may also look at sgpdd_survey from Lustre's iokit, but I've not done
> much with that -- it uses the sg devices to send lowlevel SCSI commands.
Yes, it might be worth to try. Since fundamentally it's the same as
O_DIRECT dd, but with a bit less overhead on the initiator side (hence
less initiator side latency), most likely it will show ever bigger
difference, than it is with dd.
> I've been playing around with some benchmark code using libaio, but it's
> not in generally usable shape.
>
> xdd:
> http://www.ioperformance.com/products.htm
>
> Lustre IO Kit:
> http://manual.lustre.org/manual/LustreManual16_HTML/DynamicHTML-20-1.html
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-01-31 17:08 ` Bart Van Assche
2008-01-31 17:13 ` Joe Landman
2008-01-31 18:12 ` David Dillow
@ 2008-02-01 11:50 ` Vladislav Bolkhovitin
2008-02-01 12:25 ` Vladislav Bolkhovitin
2 siblings, 1 reply; 29+ messages in thread
From: Vladislav Bolkhovitin @ 2008-02-01 11:50 UTC (permalink / raw)
To: Bart Van Assche
Cc: landman, fujita.tomonori, linux-scsi, rdreier, linux-kernel,
Nicholas A. Bellinger, James.Bottomley, scst-devel, akpm,
FUJITA Tomonori, torvalds
Bart Van Assche wrote:
> On Jan 31, 2008 5:25 PM, Joe Landman <landman@scalableinformatics.com> wrote:
>
>>Vladislav Bolkhovitin wrote:
>>
>>>Actually, I don't know what kind of conclusions it is possible to make
>>>from disktest's results (maybe only how throughput gets bigger or slower
>>>with increasing number of threads?), it's a good stress test tool, but
>>>not more.
>>
>>Unfortunately, I agree. Bonnie++, dd tests, and a few others seem to
>>bear far closer to "real world" tests than disktest and iozone, the
>>latter of which does more to test the speed of RAM cache and system call
>>performance than actual IO.
>
>
> I have ran some tests with Bonnie++, but found out that on a fast
> network like IB the filesystem used for the test has a really big
> impact on the test results.
>
> If anyone has a suggestion for a better test than dd to compare the
> performance of SCSI storage protocols, please let it know.
I would suggest you to try something from real life, like:
- Copying large file tree over a single or multiple IB links
- Measure of some DB engine's TPC
- etc.
> Bart Van Assche.
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Scst-devel mailing list
> Scst-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/scst-devel
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-01 11:50 ` Vladislav Bolkhovitin
@ 2008-02-01 12:25 ` Vladislav Bolkhovitin
0 siblings, 0 replies; 29+ messages in thread
From: Vladislav Bolkhovitin @ 2008-02-01 12:25 UTC (permalink / raw)
To: Bart Van Assche
Cc: landman, fujita.tomonori, linux-scsi, rdreier, linux-kernel,
Nicholas A. Bellinger, James.Bottomley, scst-devel, akpm,
FUJITA Tomonori, torvalds
Vladislav Bolkhovitin wrote:
> Bart Van Assche wrote:
>
>> On Jan 31, 2008 5:25 PM, Joe Landman <landman@scalableinformatics.com>
>> wrote:
>>
>>> Vladislav Bolkhovitin wrote:
>>>
>>>> Actually, I don't know what kind of conclusions it is possible to make
>>>> from disktest's results (maybe only how throughput gets bigger or
>>>> slower
>>>> with increasing number of threads?), it's a good stress test tool, but
>>>> not more.
>>>
>>>
>>> Unfortunately, I agree. Bonnie++, dd tests, and a few others seem to
>>> bear far closer to "real world" tests than disktest and iozone, the
>>> latter of which does more to test the speed of RAM cache and system call
>>> performance than actual IO.
>>
>>
>>
>> I have ran some tests with Bonnie++, but found out that on a fast
>> network like IB the filesystem used for the test has a really big
>> impact on the test results.
>>
>> If anyone has a suggestion for a better test than dd to compare the
>> performance of SCSI storage protocols, please let it know.
>
>
> I would suggest you to try something from real life, like:
>
> - Copying large file tree over a single or multiple IB links
>
> - Measure of some DB engine's TPC
>
> - etc.
Forgot to mention. During those tests make sure that imported devices
from both SCST and STGT report in the kernel log the same write cache
and FUA capabilities, since they significantly affect initiator's
behavior. Like:
sd 4:0:0:5: [sdf] Write cache: enabled, read cache: enabled, supports
DPO and FUA
For SCST the fastest mode is NV_CACHE, refer to its README file for details.
>> Bart Van Assche.
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Microsoft
>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>> _______________________________________________
>> Scst-devel mailing list
>> Scst-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/scst-devel
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-01-29 20:42 ` James Bottomley
2008-01-29 21:31 ` Roland Dreier
@ 2008-01-30 8:29 ` Bart Van Assche
2008-01-30 16:22 ` James Bottomley
1 sibling, 1 reply; 29+ messages in thread
From: Bart Van Assche @ 2008-01-30 8:29 UTC (permalink / raw)
To: James Bottomley
Cc: Linus Torvalds, Andrew Morton, Vladislav Bolkhovitin,
FUJITA Tomonori, linux-scsi, scst-devel, linux-kernel
On Jan 29, 2008 9:42 PM, James Bottomley
<James.Bottomley@hansenpartnership.com> wrote:
> > As an SCST user, I would like to see the SCST kernel code integrated
> > in the mainstream kernel because of its excellent performance on an
> > InfiniBand network. Since the SCST project comprises about 14 KLOC,
> > reviewing the SCST code will take considerable time. Who will do this
> > reviewing work ? And with regard to the comments made by the
> > reviewers: Vladislav, do you have the time to carry out the
> > modifications requested by the reviewers ? I expect a.o. that
> > reviewers will ask to move SCST's configuration pseudofiles from
> > procfs to sysfs.
>
> The two target architectures perform essentially identical functions, so
> there's only really room for one in the kernel. Right at the moment,
> it's STGT. Problems in STGT come from the user<->kernel boundary which
> can be mitigated in a variety of ways. The fact that the figures are
> pretty much comparable on non IB networks shows this.
Are you saying that users who need an efficient iSCSI implementation
should switch to OpenSolaris ? The OpenSolaris COMSTAR project involves
the migration of the existing OpenSolaris iSCSI target daemon from
userspace to their kernel. The OpenSolaris developers are
spending time on this because they expect a significant performance
improvement.
> I really need a whole lot more evidence than at worst a 20% performance
> difference on IB to pull one implementation out and replace it with
> another. Particularly as there's no real evidence that STGT can't be
> tweaked to recover the 20% even on IB.
My measurements on a 1 GB/s InfiniBand network have shown that the current
SCST implementation is able to read data via direct I/O at a rate of 811 GB/s
(via SRP) and that the current STGT implementation is able to transfer data at a
rate of 589 MB/s (via iSER). That's a performance difference of 38%.
And even more important, the I/O latency of SCST is significantly
lower than that
of STGT. This is very important for database workloads -- the I/O pattern caused
by database software is close to random I/O, and database software needs low
latency I/O in order to run efficiently.
In the thread with the title "Performance of SCST versus STGT" on the
SCST-devel /
STGT-devel mailing lists not only the raw performance numbers were discussed but
also which further performance improvements are possible. It became clear that
the SCST performance can be improved further by implementing a well known
optimization (zero-copy I/O). Fujita Tomonori explained in the same
thread that it is
possible to improve the performance of STGT further, but that this would require
a lot of effort (implementing asynchronous I/O in the kernel and also
implementing
a new caching mechanism using pre-registered buffers).
See also:
http://sourceforge.net/mailarchive/forum.php?forum_name=scst-devel&viewmonth=200801&viewday=17
Bart Van Assche.
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-01-30 8:29 ` Bart Van Assche
@ 2008-01-30 16:22 ` James Bottomley
2008-02-05 7:14 ` [Scst-devel] " Tomasz Chmielewski
0 siblings, 1 reply; 29+ messages in thread
From: James Bottomley @ 2008-01-30 16:22 UTC (permalink / raw)
To: Bart Van Assche
Cc: Linus Torvalds, Andrew Morton, Vladislav Bolkhovitin,
FUJITA Tomonori, linux-scsi, scst-devel, linux-kernel
On Wed, 2008-01-30 at 09:29 +0100, Bart Van Assche wrote:
> On Jan 29, 2008 9:42 PM, James Bottomley
> <James.Bottomley@hansenpartnership.com> wrote:
> > > As an SCST user, I would like to see the SCST kernel code integrated
> > > in the mainstream kernel because of its excellent performance on an
> > > InfiniBand network. Since the SCST project comprises about 14 KLOC,
> > > reviewing the SCST code will take considerable time. Who will do this
> > > reviewing work ? And with regard to the comments made by the
> > > reviewers: Vladislav, do you have the time to carry out the
> > > modifications requested by the reviewers ? I expect a.o. that
> > > reviewers will ask to move SCST's configuration pseudofiles from
> > > procfs to sysfs.
> >
> > The two target architectures perform essentially identical functions, so
> > there's only really room for one in the kernel. Right at the moment,
> > it's STGT. Problems in STGT come from the user<->kernel boundary which
> > can be mitigated in a variety of ways. The fact that the figures are
> > pretty much comparable on non IB networks shows this.
>
> Are you saying that users who need an efficient iSCSI implementation
> should switch to OpenSolaris ?
I'd certainly say that's a totally unsupported conclusion.
> The OpenSolaris COMSTAR project involves
> the migration of the existing OpenSolaris iSCSI target daemon from
> userspace to their kernel. The OpenSolaris developers are
> spending time on this because they expect a significant performance
> improvement.
Just because Solaris takes a particular design decision doesn't
automatically make it the right course of action.
Microsoft once pulled huge gobs of the C library and their windowing
system into the kernel in the name of efficiency. It proved not only to
be less efficient, but also to degrade their security model.
Deciding what lives in userspace and what should be in the kernel lies
at the very heart of architectural decisions. However, the argument
that "it should be in the kernel because that would make it faster" is
pretty much a discredited one. To prevail on that argument, you have to
demonstrate that there's no way to enable user space to do the same
thing at the same speed. Further, it was the same argument used the
last time around when the STGT vs SCST investigation was done. Your own
results on non-IB networks show that both architectures perform at the
same speed. That tends to support the conclusion that there's something
specific about IB that needs to be tweaked or improved for STGT to get
it to perform correctly.
Furthermore, if you have already decided before testing that SCST is
right and that STGT is wrong based on the architectures, it isn't
exactly going to increase my confidence in your measurement methodology
claiming to show this, now is it?
> > I really need a whole lot more evidence than at worst a 20% performance
> > difference on IB to pull one implementation out and replace it with
> > another. Particularly as there's no real evidence that STGT can't be
> > tweaked to recover the 20% even on IB.
>
> My measurements on a 1 GB/s InfiniBand network have shown that the current
> SCST implementation is able to read data via direct I/O at a rate of 811 GB/s
> (via SRP) and that the current STGT implementation is able to transfer data at a
> rate of 589 MB/s (via iSER). That's a performance difference of 38%.
>
> And even more important, the I/O latency of SCST is significantly
> lower than that
> of STGT. This is very important for database workloads -- the I/O pattern caused
> by database software is close to random I/O, and database software needs low
> latency I/O in order to run efficiently.
>
> In the thread with the title "Performance of SCST versus STGT" on the
> SCST-devel /
> STGT-devel mailing lists not only the raw performance numbers were discussed but
> also which further performance improvements are possible. It became clear that
> the SCST performance can be improved further by implementing a well known
> optimization (zero-copy I/O). Fujita Tomonori explained in the same
> thread that it is
> possible to improve the performance of STGT further, but that this would require
> a lot of effort (implementing asynchronous I/O in the kernel and also
> implementing
> a new caching mechanism using pre-registered buffers).
These are both features being independently worked on, are they not?
Even if they weren't, the combination of the size of SCST in kernel plus
the problem of having to find a migration path for the current STGT
users still looks to me to involve the greater amount of work.
James
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-01-30 16:22 ` James Bottomley
@ 2008-02-05 7:14 ` Tomasz Chmielewski
2008-02-05 13:38 ` FUJITA Tomonori
0 siblings, 1 reply; 29+ messages in thread
From: Tomasz Chmielewski @ 2008-02-05 7:14 UTC (permalink / raw)
To: James Bottomley
Cc: Bart Van Assche, Vladislav Bolkhovitin, linux-scsi, linux-kernel,
FUJITA Tomonori, scst-devel, Andrew Morton, Linus Torvalds
James Bottomley schrieb:
> These are both features being independently worked on, are they not?
> Even if they weren't, the combination of the size of SCST in kernel plus
> the problem of having to find a migration path for the current STGT
> users still looks to me to involve the greater amount of work.
I don't want to be mean, but does anyone actually use STGT in
production? Seriously?
In the latest development version of STGT, it's only possible to stop
the tgtd target daemon using KILL / 9 signal - which also means all
iSCSI initiator connections are corrupted when tgtd target daemon is
started again (kernel upgrade, target daemon upgrade, server reboot etc.).
Imagine you have to reboot all your NFS clients when you reboot your NFS
server. Not only that - your data is probably corrupted, or at least the
filesystem deserves checking...
--
Tomasz Chmielewski
http://wpkg.org
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-05 7:14 ` [Scst-devel] " Tomasz Chmielewski
@ 2008-02-05 13:38 ` FUJITA Tomonori
2008-02-05 16:07 ` Tomasz Chmielewski
2008-02-05 17:09 ` Matteo Tescione
0 siblings, 2 replies; 29+ messages in thread
From: FUJITA Tomonori @ 2008-02-05 13:38 UTC (permalink / raw)
To: mangoo
Cc: James.Bottomley, bart.vanassche, vst, linux-scsi, linux-kernel,
fujita.tomonori, scst-devel, akpm, torvalds, fujita.tomonori
On Tue, 05 Feb 2008 08:14:01 +0100
Tomasz Chmielewski <mangoo@wpkg.org> wrote:
> James Bottomley schrieb:
>
> > These are both features being independently worked on, are they not?
> > Even if they weren't, the combination of the size of SCST in kernel plus
> > the problem of having to find a migration path for the current STGT
> > users still looks to me to involve the greater amount of work.
>
> I don't want to be mean, but does anyone actually use STGT in
> production? Seriously?
>
> In the latest development version of STGT, it's only possible to stop
> the tgtd target daemon using KILL / 9 signal - which also means all
> iSCSI initiator connections are corrupted when tgtd target daemon is
> started again (kernel upgrade, target daemon upgrade, server reboot etc.).
I don't know what "iSCSI initiator connections are corrupted"
mean. But if you reboot a server, how can an iSCSI target
implementation keep iSCSI tcp connections?
> Imagine you have to reboot all your NFS clients when you reboot your NFS
> server. Not only that - your data is probably corrupted, or at least the
> filesystem deserves checking...
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-05 13:38 ` FUJITA Tomonori
@ 2008-02-05 16:07 ` Tomasz Chmielewski
2008-02-05 16:21 ` Ming Zhang
2008-02-05 16:43 ` FUJITA Tomonori
2008-02-05 17:09 ` Matteo Tescione
1 sibling, 2 replies; 29+ messages in thread
From: Tomasz Chmielewski @ 2008-02-05 16:07 UTC (permalink / raw)
To: FUJITA Tomonori
Cc: James.Bottomley, bart.vanassche, vst, linux-scsi, linux-kernel,
fujita.tomonori, scst-devel, akpm, torvalds, stgt-devel
FUJITA Tomonori schrieb:
> On Tue, 05 Feb 2008 08:14:01 +0100
> Tomasz Chmielewski <mangoo@wpkg.org> wrote:
>
>> James Bottomley schrieb:
>>
>>> These are both features being independently worked on, are they not?
>>> Even if they weren't, the combination of the size of SCST in kernel plus
>>> the problem of having to find a migration path for the current STGT
>>> users still looks to me to involve the greater amount of work.
>> I don't want to be mean, but does anyone actually use STGT in
>> production? Seriously?
>>
>> In the latest development version of STGT, it's only possible to stop
>> the tgtd target daemon using KILL / 9 signal - which also means all
>> iSCSI initiator connections are corrupted when tgtd target daemon is
>> started again (kernel upgrade, target daemon upgrade, server reboot etc.).
>
> I don't know what "iSCSI initiator connections are corrupted"
> mean. But if you reboot a server, how can an iSCSI target
> implementation keep iSCSI tcp connections?
The problem with tgtd is that you can't start it (configured) in an
"atomic" way.
Usually, one will start tgtd and it's configuration in a script (I
replaced some parameters with "..." to make it shorter and more readable):
tgtd
tgtadm --op new ...
tgtadm --lld iscsi --op new ...
However, this won't work - tgtd goes immediately in the background as it
is still starting, and the first tgtadm commands will fail:
# bash -x tgtd-start
+ tgtd
+ tgtadm --op new --mode target ...
tgtadm: can't connect to the tgt daemon, Connection refused
tgtadm: can't send the request to the tgt daemon, Transport endpoint is
not connected
+ tgtadm --lld iscsi --op new --mode account ...
tgtadm: can't connect to the tgt daemon, Connection refused
tgtadm: can't send the request to the tgt daemon, Transport endpoint is
not connected
+ tgtadm --lld iscsi --op bind --mode account --tid 1 ...
tgtadm: can't find the target
+ tgtadm --op new --mode logicalunit --tid 1 --lun 1 ...
tgtadm: can't find the target
+ tgtadm --op bind --mode target --tid 1 -I ALL
tgtadm: can't find the target
+ tgtadm --op new --mode target --tid 2 ...
+ tgtadm --op new --mode logicalunit --tid 2 --lun 1 ...
+ tgtadm --op bind --mode target --tid 2 -I ALL
OK, if tgtd takes longer to start, perhaps it's a good idea to sleep a
second right after tgtd?
tgtd
sleep 1
tgtadm --op new ...
tgtadm --lld iscsi --op new ...
No, it is not a good idea - if tgtd listens on port 3260 *and* is
unconfigured yet, any reconnecting initiator will fail, like below:
end_request: I/O error, dev sdb, sector 7045192
Buffer I/O error on device sdb, logical block 880649
lost page write due to I/O error on sdb
Aborting journal on device sdb.
ext3_abort called.
EXT3-fs error (device sdb): ext3_journal_start_sb: Detected aborted journal
Remounting filesystem read-only
end_request: I/O error, dev sdb, sector 7045880
Buffer I/O error on device sdb, logical block 880735
lost page write due to I/O error on sdb
end_request: I/O error, dev sdb, sector 6728
Buffer I/O error on device sdb, logical block 841
lost page write due to I/O error on sdb
end_request: I/O error, dev sdb, sector 7045192
Buffer I/O error on device sdb, logical block 880649
lost page write due to I/O error on sdb
end_request: I/O error, dev sdb, sector 7045880
Buffer I/O error on device sdb, logical block 880735
lost page write due to I/O error on sdb
__journal_remove_journal_head: freeing b_frozen_data
__journal_remove_journal_head: freeing b_frozen_data
Ouch.
So the only way to start/restart tgtd reliably is to do hacks which are
needed with yet another iSCSI kernel implementation (IET): use iptables.
iptables <block iSCSI traffic>
tgtd
sleep 1
tgtadm --op new ...
tgtadm --lld iscsi --op new ...
iptables <unblock iSCSI traffic>
A bit ugly, isn't it?
Having to tinker with a firewall in order to start a daemon is by no
means a sign of a well-tested and mature project.
That's why I asked how many people use stgt in a production environment
- James was worried about a potential migration path for current users.
--
Tomasz Chmielewski
http://wpkg.org
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-05 16:07 ` Tomasz Chmielewski
@ 2008-02-05 16:21 ` Ming Zhang
2008-02-05 16:43 ` FUJITA Tomonori
1 sibling, 0 replies; 29+ messages in thread
From: Ming Zhang @ 2008-02-05 16:21 UTC (permalink / raw)
To: Tomasz Chmielewski
Cc: FUJITA Tomonori, vst, linux-scsi, linux-kernel, James.Bottomley,
scst-devel, stgt-devel, akpm, torvalds, fujita.tomonori
On Tue, 2008-02-05 at 17:07 +0100, Tomasz Chmielewski wrote:
> FUJITA Tomonori schrieb:
> > On Tue, 05 Feb 2008 08:14:01 +0100
> > Tomasz Chmielewski <mangoo@wpkg.org> wrote:
> >
> >> James Bottomley schrieb:
> >>
> >>> These are both features being independently worked on, are they not?
> >>> Even if they weren't, the combination of the size of SCST in kernel plus
> >>> the problem of having to find a migration path for the current STGT
> >>> users still looks to me to involve the greater amount of work.
> >> I don't want to be mean, but does anyone actually use STGT in
> >> production? Seriously?
> >>
> >> In the latest development version of STGT, it's only possible to stop
> >> the tgtd target daemon using KILL / 9 signal - which also means all
> >> iSCSI initiator connections are corrupted when tgtd target daemon is
> >> started again (kernel upgrade, target daemon upgrade, server reboot etc.).
> >
> > I don't know what "iSCSI initiator connections are corrupted"
> > mean. But if you reboot a server, how can an iSCSI target
> > implementation keep iSCSI tcp connections?
>
> The problem with tgtd is that you can't start it (configured) in an
> "atomic" way.
> Usually, one will start tgtd and it's configuration in a script (I
> replaced some parameters with "..." to make it shorter and more readable):
>
>
> tgtd
> tgtadm --op new ...
> tgtadm --lld iscsi --op new ...
>
>
> However, this won't work - tgtd goes immediately in the background as it
> is still starting, and the first tgtadm commands will fail:
this should be a easy fix. start tgtd, get port setup ready in forked
process, then signal its parent that ready to quit. or set port ready in
parent, fork and pass to daemon.
>
> # bash -x tgtd-start
> + tgtd
> + tgtadm --op new --mode target ...
> tgtadm: can't connect to the tgt daemon, Connection refused
> tgtadm: can't send the request to the tgt daemon, Transport endpoint is
> not connected
> + tgtadm --lld iscsi --op new --mode account ...
> tgtadm: can't connect to the tgt daemon, Connection refused
> tgtadm: can't send the request to the tgt daemon, Transport endpoint is
> not connected
> + tgtadm --lld iscsi --op bind --mode account --tid 1 ...
> tgtadm: can't find the target
> + tgtadm --op new --mode logicalunit --tid 1 --lun 1 ...
> tgtadm: can't find the target
> + tgtadm --op bind --mode target --tid 1 -I ALL
> tgtadm: can't find the target
> + tgtadm --op new --mode target --tid 2 ...
> + tgtadm --op new --mode logicalunit --tid 2 --lun 1 ...
> + tgtadm --op bind --mode target --tid 2 -I ALL
>
>
> OK, if tgtd takes longer to start, perhaps it's a good idea to sleep a
> second right after tgtd?
>
> tgtd
> sleep 1
> tgtadm --op new ...
> tgtadm --lld iscsi --op new ...
>
>
> No, it is not a good idea - if tgtd listens on port 3260 *and* is
> unconfigured yet, any reconnecting initiator will fail, like below:
this is another easy fix. tgtd started with unconfigured status and then
a tgtadm can configure it and turn it into ready status.
those are really minor usability issue. ( i know it is painful for user,
i agree)
the major problem here is to discuss in architectural wise, which one is
better... linux kernel should have one implementation that is good from
foundation...
>
> end_request: I/O error, dev sdb, sector 7045192
> Buffer I/O error on device sdb, logical block 880649
> lost page write due to I/O error on sdb
> Aborting journal on device sdb.
> ext3_abort called.
> EXT3-fs error (device sdb): ext3_journal_start_sb: Detected aborted journal
> Remounting filesystem read-only
> end_request: I/O error, dev sdb, sector 7045880
> Buffer I/O error on device sdb, logical block 880735
> lost page write due to I/O error on sdb
> end_request: I/O error, dev sdb, sector 6728
> Buffer I/O error on device sdb, logical block 841
> lost page write due to I/O error on sdb
> end_request: I/O error, dev sdb, sector 7045192
> Buffer I/O error on device sdb, logical block 880649
> lost page write due to I/O error on sdb
> end_request: I/O error, dev sdb, sector 7045880
> Buffer I/O error on device sdb, logical block 880735
> lost page write due to I/O error on sdb
> __journal_remove_journal_head: freeing b_frozen_data
> __journal_remove_journal_head: freeing b_frozen_data
>
>
> Ouch.
>
> So the only way to start/restart tgtd reliably is to do hacks which are
> needed with yet another iSCSI kernel implementation (IET): use iptables.
>
> iptables <block iSCSI traffic>
> tgtd
> sleep 1
> tgtadm --op new ...
> tgtadm --lld iscsi --op new ...
> iptables <unblock iSCSI traffic>
>
>
> A bit ugly, isn't it?
> Having to tinker with a firewall in order to start a daemon is by no
> means a sign of a well-tested and mature project.
>
> That's why I asked how many people use stgt in a production environment
> - James was worried about a potential migration path for current users.
>
>
>
> --
> Tomasz Chmielewski
> http://wpkg.org
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Scst-devel mailing list
> Scst-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/scst-devel
--
Ming Zhang
@#$%^ purging memory... (*!%
http://blackmagic02881.wordpress.com/
http://www.linkedin.com/in/blackmagic02881
--------------------------------------------
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-05 16:07 ` Tomasz Chmielewski
2008-02-05 16:21 ` Ming Zhang
@ 2008-02-05 16:43 ` FUJITA Tomonori
1 sibling, 0 replies; 29+ messages in thread
From: FUJITA Tomonori @ 2008-02-05 16:43 UTC (permalink / raw)
To: mangoo
Cc: tomof, James.Bottomley, bart.vanassche, vst, linux-scsi,
linux-kernel, fujita.tomonori, scst-devel, akpm, torvalds,
stgt-devel, fujita.tomonori
On Tue, 05 Feb 2008 17:07:07 +0100
Tomasz Chmielewski <mangoo@wpkg.org> wrote:
> FUJITA Tomonori schrieb:
> > On Tue, 05 Feb 2008 08:14:01 +0100
> > Tomasz Chmielewski <mangoo@wpkg.org> wrote:
> >
> >> James Bottomley schrieb:
> >>
> >>> These are both features being independently worked on, are they not?
> >>> Even if they weren't, the combination of the size of SCST in kernel plus
> >>> the problem of having to find a migration path for the current STGT
> >>> users still looks to me to involve the greater amount of work.
> >> I don't want to be mean, but does anyone actually use STGT in
> >> production? Seriously?
> >>
> >> In the latest development version of STGT, it's only possible to stop
> >> the tgtd target daemon using KILL / 9 signal - which also means all
> >> iSCSI initiator connections are corrupted when tgtd target daemon is
> >> started again (kernel upgrade, target daemon upgrade, server reboot etc.).
> >
> > I don't know what "iSCSI initiator connections are corrupted"
> > mean. But if you reboot a server, how can an iSCSI target
> > implementation keep iSCSI tcp connections?
>
> The problem with tgtd is that you can't start it (configured) in an
> "atomic" way.
> Usually, one will start tgtd and it's configuration in a script (I
> replaced some parameters with "..." to make it shorter and more readable):
Thanks for the details. So the way to stop the daemon is not related
with your problem.
It's easily fixable. Can you start a new thread about this on
stgt-devel mailing list? When we agree on the interface to start the
daemon, I'll implement it.
> tgtd
> tgtadm --op new ...
> tgtadm --lld iscsi --op new ...
(snip)
> So the only way to start/restart tgtd reliably is to do hacks which are
> needed with yet another iSCSI kernel implementation (IET): use iptables.
>
> iptables <block iSCSI traffic>
> tgtd
> sleep 1
> tgtadm --op new ...
> tgtadm --lld iscsi --op new ...
> iptables <unblock iSCSI traffic>
>
>
> A bit ugly, isn't it?
> Having to tinker with a firewall in order to start a daemon is by no
> means a sign of a well-tested and mature project.
>
> That's why I asked how many people use stgt in a production environment
> - James was worried about a potential migration path for current users.
I don't know how many people use stgt in a production environment but
I'm not sure that this problem prevents many people from using it in a
production environment.
You want to reboot a server running target devices while initiators
connect to it. Rebooting the target server behind the initiators
seldom works. System adminstorators in my workplace reboot storage
devices once a year and tell us to shut down the initiator machines
that use them before that.
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-05 13:38 ` FUJITA Tomonori
2008-02-05 16:07 ` Tomasz Chmielewski
@ 2008-02-05 17:09 ` Matteo Tescione
2008-02-06 1:29 ` FUJITA Tomonori
1 sibling, 1 reply; 29+ messages in thread
From: Matteo Tescione @ 2008-02-05 17:09 UTC (permalink / raw)
To: FUJITA Tomonori, mangoo
Cc: vst, linux-scsi, linux-kernel, James.Bottomley, scst-devel, akpm,
torvalds, fujita.tomonori
On 5-02-2008 14:38, "FUJITA Tomonori" <tomof@acm.org> wrote:
> On Tue, 05 Feb 2008 08:14:01 +0100
> Tomasz Chmielewski <mangoo@wpkg.org> wrote:
>
>> James Bottomley schrieb:
>>
>>> These are both features being independently worked on, are they not?
>>> Even if they weren't, the combination of the size of SCST in kernel plus
>>> the problem of having to find a migration path for the current STGT
>>> users still looks to me to involve the greater amount of work.
>>
>> I don't want to be mean, but does anyone actually use STGT in
>> production? Seriously?
>>
>> In the latest development version of STGT, it's only possible to stop
>> the tgtd target daemon using KILL / 9 signal - which also means all
>> iSCSI initiator connections are corrupted when tgtd target daemon is
>> started again (kernel upgrade, target daemon upgrade, server reboot etc.).
>
> I don't know what "iSCSI initiator connections are corrupted"
> mean. But if you reboot a server, how can an iSCSI target
> implementation keep iSCSI tcp connections?
>
>
>> Imagine you have to reboot all your NFS clients when you reboot your NFS
>> server. Not only that - your data is probably corrupted, or at least the
>> filesystem deserves checking...
Don't know if matters, but in my setup (iscsi on top of drbd+heartbeat)
rebooting the primary server doesn't affect my iscsi traffic, SCST correctly
manages stop/crash, by sending unit attention to clients on reconnect.
Drbd+heartbeat correctly manages those things too.
Still from an end-user POV, i was able to reboot/survive a crash only with
SCST, IETD still has reconnect problems and STGT are even worst.
Regards,
--matteo
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-05 17:09 ` Matteo Tescione
@ 2008-02-06 1:29 ` FUJITA Tomonori
2008-02-06 2:01 ` Nicholas A. Bellinger
0 siblings, 1 reply; 29+ messages in thread
From: FUJITA Tomonori @ 2008-02-06 1:29 UTC (permalink / raw)
To: matteo
Cc: tomof, mangoo, vst, linux-scsi, linux-kernel, James.Bottomley,
scst-devel, akpm, torvalds, fujita.tomonori
On Tue, 05 Feb 2008 18:09:15 +0100
Matteo Tescione <matteo@rmnet.it> wrote:
> On 5-02-2008 14:38, "FUJITA Tomonori" <tomof@acm.org> wrote:
>
> > On Tue, 05 Feb 2008 08:14:01 +0100
> > Tomasz Chmielewski <mangoo@wpkg.org> wrote:
> >
> >> James Bottomley schrieb:
> >>
> >>> These are both features being independently worked on, are they not?
> >>> Even if they weren't, the combination of the size of SCST in kernel plus
> >>> the problem of having to find a migration path for the current STGT
> >>> users still looks to me to involve the greater amount of work.
> >>
> >> I don't want to be mean, but does anyone actually use STGT in
> >> production? Seriously?
> >>
> >> In the latest development version of STGT, it's only possible to stop
> >> the tgtd target daemon using KILL / 9 signal - which also means all
> >> iSCSI initiator connections are corrupted when tgtd target daemon is
> >> started again (kernel upgrade, target daemon upgrade, server reboot etc.).
> >
> > I don't know what "iSCSI initiator connections are corrupted"
> > mean. But if you reboot a server, how can an iSCSI target
> > implementation keep iSCSI tcp connections?
> >
> >
> >> Imagine you have to reboot all your NFS clients when you reboot your NFS
> >> server. Not only that - your data is probably corrupted, or at least the
> >> filesystem deserves checking...
>
> Don't know if matters, but in my setup (iscsi on top of drbd+heartbeat)
> rebooting the primary server doesn't affect my iscsi traffic, SCST correctly
> manages stop/crash, by sending unit attention to clients on reconnect.
> Drbd+heartbeat correctly manages those things too.
> Still from an end-user POV, i was able to reboot/survive a crash only with
> SCST, IETD still has reconnect problems and STGT are even worst.
Please tell us on stgt-devel mailing list if you see problems. We will
try to fix them.
Thanks,
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-06 1:29 ` FUJITA Tomonori
@ 2008-02-06 2:01 ` Nicholas A. Bellinger
0 siblings, 0 replies; 29+ messages in thread
From: Nicholas A. Bellinger @ 2008-02-06 2:01 UTC (permalink / raw)
To: FUJITA Tomonori
Cc: matteo, tomof, mangoo, vst, linux-scsi, linux-kernel,
James.Bottomley, scst-devel, akpm, torvalds
On Wed, 2008-02-06 at 10:29 +0900, FUJITA Tomonori wrote:
> On Tue, 05 Feb 2008 18:09:15 +0100
> Matteo Tescione <matteo@rmnet.it> wrote:
>
> > On 5-02-2008 14:38, "FUJITA Tomonori" <tomof@acm.org> wrote:
> >
> > > On Tue, 05 Feb 2008 08:14:01 +0100
> > > Tomasz Chmielewski <mangoo@wpkg.org> wrote:
> > >
> > >> James Bottomley schrieb:
> > >>
> > >>> These are both features being independently worked on, are they not?
> > >>> Even if they weren't, the combination of the size of SCST in kernel plus
> > >>> the problem of having to find a migration path for the current STGT
> > >>> users still looks to me to involve the greater amount of work.
> > >>
> > >> I don't want to be mean, but does anyone actually use STGT in
> > >> production? Seriously?
> > >>
> > >> In the latest development version of STGT, it's only possible to stop
> > >> the tgtd target daemon using KILL / 9 signal - which also means all
> > >> iSCSI initiator connections are corrupted when tgtd target daemon is
> > >> started again (kernel upgrade, target daemon upgrade, server reboot etc.).
> > >
> > > I don't know what "iSCSI initiator connections are corrupted"
> > > mean. But if you reboot a server, how can an iSCSI target
> > > implementation keep iSCSI tcp connections?
> > >
> > >
> > >> Imagine you have to reboot all your NFS clients when you reboot your NFS
> > >> server. Not only that - your data is probably corrupted, or at least the
> > >> filesystem deserves checking...
> >
The TCP connection will drop, remember that the TCP connection state for
one side has completely vanished. Depending on iSCSI/iSER
ErrorRecoveryLevel that is set, this will mean:
1) Session Recovery, ERL=0 - Restarting the entire nexus and all
connections across all of the possible subnets or comm-links. All
outstanding un-StatSN acknowledged commands will be returned back to the
SCSI subsystem with RETRY status. Once a single connection has been
reestablished to start the nexus, the CDBs will be resent.
2) Connection Recovery, ERL=2 - CDBs from the failed connection(s) will
be retried (nothing changes in the PDU) to fill the iSCSI CmdSN ordering
gap, or be explictly retried with TMR TASK_REASSIGN for ones already
acknowledged by the ExpCmdSN that are returned to the initiator in
response packets or by way of unsolicited NopINs.
> > Don't know if matters, but in my setup (iscsi on top of drbd+heartbeat)
> > rebooting the primary server doesn't affect my iscsi traffic, SCST correctly
> > manages stop/crash, by sending unit attention to clients on reconnect.
> > Drbd+heartbeat correctly manages those things too.
> > Still from an end-user POV, i was able to reboot/survive a crash only with
> > SCST, IETD still has reconnect problems and STGT are even worst.
>
> Please tell us on stgt-devel mailing list if you see problems. We will
> try to fix them.
>
FYI, the LIO code also supports rmmoding iscsi_target_mod while at full
10 Gb/sec speed. I think it should be a requirement to be able to
control per initiator, per portal group, per LUN, per device, per HBA in
the design without restarting any other objects.
--nab
> Thanks,
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
@ 2008-02-04 16:25 ` Vladislav Bolkhovitin
2008-02-04 17:06 ` James Bottomley
0 siblings, 1 reply; 29+ messages in thread
From: Vladislav Bolkhovitin @ 2008-02-04 16:25 UTC (permalink / raw)
To: James Bottomley
Cc: Bart Van Assche, Linus Torvalds, Andrew Morton, FUJITA Tomonori,
linux-scsi, scst-devel, linux-kernel
James Bottomley wrote:
>>Vladislav Bolkhovitin wrote:
>>So, James, what is your opinion on the above? Or the overall SCSI target
>>project simplicity doesn't matter much for you and you think it's fine
>>to duplicate Linux page cache in the user space to keep the in-kernel
>>part of the project as small as possible?
>
>
> The answers were pretty much contained here
>
> http://marc.info/?l=linux-scsi&m=120164008302435
>
> and here:
>
> http://marc.info/?l=linux-scsi&m=120171067107293
>
> Weren't they?
No, sorry, it doesn't look so for me. They are about performance, but
I'm asking about the overall project's architecture, namely about one
part of it: simplicity. Particularly, what do you think about
duplicating Linux page cache in the user space to have zero-copy cached
I/O? Or can you suggest another architectural solution for that problem
in the STGT's approach?
Vlad
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 16:25 ` Vladislav Bolkhovitin
@ 2008-02-04 17:06 ` James Bottomley
2008-02-04 17:16 ` Vladislav Bolkhovitin
0 siblings, 1 reply; 29+ messages in thread
From: James Bottomley @ 2008-02-04 17:06 UTC (permalink / raw)
To: Vladislav Bolkhovitin
Cc: Bart Van Assche, Linus Torvalds, Andrew Morton, FUJITA Tomonori,
linux-scsi, scst-devel, linux-kernel
On Mon, 2008-02-04 at 19:25 +0300, Vladislav Bolkhovitin wrote:
> James Bottomley wrote:
> >>Vladislav Bolkhovitin wrote:
> >>So, James, what is your opinion on the above? Or the overall SCSI target
> >>project simplicity doesn't matter much for you and you think it's fine
> >>to duplicate Linux page cache in the user space to keep the in-kernel
> >>part of the project as small as possible?
> >
> >
> > The answers were pretty much contained here
> >
> > http://marc.info/?l=linux-scsi&m=120164008302435
> >
> > and here:
> >
> > http://marc.info/?l=linux-scsi&m=120171067107293
> >
> > Weren't they?
>
> No, sorry, it doesn't look so for me. They are about performance, but
> I'm asking about the overall project's architecture, namely about one
> part of it: simplicity. Particularly, what do you think about
> duplicating Linux page cache in the user space to have zero-copy cached
> I/O? Or can you suggest another architectural solution for that problem
> in the STGT's approach?
Isn't that an advantage of a user space solution? It simply uses the
backing store of whatever device supplies the data. That means it takes
advantage of the existing mechanisms for caching.
James
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 17:06 ` James Bottomley
@ 2008-02-04 17:16 ` Vladislav Bolkhovitin
2008-02-04 17:25 ` James Bottomley
0 siblings, 1 reply; 29+ messages in thread
From: Vladislav Bolkhovitin @ 2008-02-04 17:16 UTC (permalink / raw)
To: James Bottomley
Cc: Bart Van Assche, Linus Torvalds, Andrew Morton, FUJITA Tomonori,
linux-scsi, scst-devel, linux-kernel
James Bottomley wrote:
>>>>So, James, what is your opinion on the above? Or the overall SCSI target
>>>>project simplicity doesn't matter much for you and you think it's fine
>>>>to duplicate Linux page cache in the user space to keep the in-kernel
>>>>part of the project as small as possible?
>>>
>>>
>>>The answers were pretty much contained here
>>>
>>>http://marc.info/?l=linux-scsi&m=120164008302435
>>>
>>>and here:
>>>
>>>http://marc.info/?l=linux-scsi&m=120171067107293
>>>
>>>Weren't they?
>>
>>No, sorry, it doesn't look so for me. They are about performance, but
>>I'm asking about the overall project's architecture, namely about one
>>part of it: simplicity. Particularly, what do you think about
>>duplicating Linux page cache in the user space to have zero-copy cached
>>I/O? Or can you suggest another architectural solution for that problem
>>in the STGT's approach?
>
>
> Isn't that an advantage of a user space solution? It simply uses the
> backing store of whatever device supplies the data. That means it takes
> advantage of the existing mechanisms for caching.
No, please reread this thread, especially this message:
http://marc.info/?l=linux-kernel&m=120169189504361&w=2. This is one of
the advantages of the kernel space implementation. The user space
implementation has to have data copied between the cache and user space
buffer, but the kernel space one can use pages in the cache directly,
without extra copy.
Vlad
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 17:16 ` Vladislav Bolkhovitin
@ 2008-02-04 17:25 ` James Bottomley
2008-02-04 17:56 ` Vladislav Bolkhovitin
2008-02-04 18:29 ` Linus Torvalds
0 siblings, 2 replies; 29+ messages in thread
From: James Bottomley @ 2008-02-04 17:25 UTC (permalink / raw)
To: Vladislav Bolkhovitin
Cc: Bart Van Assche, Linus Torvalds, Andrew Morton, FUJITA Tomonori,
linux-scsi, scst-devel, linux-kernel
On Mon, 2008-02-04 at 20:16 +0300, Vladislav Bolkhovitin wrote:
> James Bottomley wrote:
> >>>>So, James, what is your opinion on the above? Or the overall SCSI target
> >>>>project simplicity doesn't matter much for you and you think it's fine
> >>>>to duplicate Linux page cache in the user space to keep the in-kernel
> >>>>part of the project as small as possible?
> >>>
> >>>
> >>>The answers were pretty much contained here
> >>>
> >>>http://marc.info/?l=linux-scsi&m=120164008302435
> >>>
> >>>and here:
> >>>
> >>>http://marc.info/?l=linux-scsi&m=120171067107293
> >>>
> >>>Weren't they?
> >>
> >>No, sorry, it doesn't look so for me. They are about performance, but
> >>I'm asking about the overall project's architecture, namely about one
> >>part of it: simplicity. Particularly, what do you think about
> >>duplicating Linux page cache in the user space to have zero-copy cached
> >>I/O? Or can you suggest another architectural solution for that problem
> >>in the STGT's approach?
> >
> >
> > Isn't that an advantage of a user space solution? It simply uses the
> > backing store of whatever device supplies the data. That means it takes
> > advantage of the existing mechanisms for caching.
>
> No, please reread this thread, especially this message:
> http://marc.info/?l=linux-kernel&m=120169189504361&w=2. This is one of
> the advantages of the kernel space implementation. The user space
> implementation has to have data copied between the cache and user space
> buffer, but the kernel space one can use pages in the cache directly,
> without extra copy.
Well, you've said it thrice (the bellman cried) but that doesn't make it
true.
The way a user space solution should work is to schedule mmapped I/O
from the backing store and then send this mmapped region off for target
I/O. For reads, the page gather will ensure that the pages are up to
date from the backing store to the cache before sending the I/O out.
For writes, You actually have to do a msync on the region to get the
data secured to the backing store. You also have to pull tricks with
the mmap region in the case of writes to prevent useless data being read
in from the backing store. However, none of this involves data copies.
James
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 17:25 ` James Bottomley
@ 2008-02-04 17:56 ` Vladislav Bolkhovitin
2008-02-04 18:22 ` James Bottomley
2008-02-04 18:29 ` Linus Torvalds
1 sibling, 1 reply; 29+ messages in thread
From: Vladislav Bolkhovitin @ 2008-02-04 17:56 UTC (permalink / raw)
To: James Bottomley
Cc: Bart Van Assche, Linus Torvalds, Andrew Morton, FUJITA Tomonori,
linux-scsi, scst-devel, linux-kernel
James Bottomley wrote:
> On Mon, 2008-02-04 at 20:16 +0300, Vladislav Bolkhovitin wrote:
>
>>James Bottomley wrote:
>>
>>>>>>So, James, what is your opinion on the above? Or the overall SCSI target
>>>>>>project simplicity doesn't matter much for you and you think it's fine
>>>>>>to duplicate Linux page cache in the user space to keep the in-kernel
>>>>>>part of the project as small as possible?
>>>>>
>>>>>
>>>>>The answers were pretty much contained here
>>>>>
>>>>>http://marc.info/?l=linux-scsi&m=120164008302435
>>>>>
>>>>>and here:
>>>>>
>>>>>http://marc.info/?l=linux-scsi&m=120171067107293
>>>>>
>>>>>Weren't they?
>>>>
>>>>No, sorry, it doesn't look so for me. They are about performance, but
>>>>I'm asking about the overall project's architecture, namely about one
>>>>part of it: simplicity. Particularly, what do you think about
>>>>duplicating Linux page cache in the user space to have zero-copy cached
>>>>I/O? Or can you suggest another architectural solution for that problem
>>>>in the STGT's approach?
>>>
>>>
>>>Isn't that an advantage of a user space solution? It simply uses the
>>>backing store of whatever device supplies the data. That means it takes
>>>advantage of the existing mechanisms for caching.
>>
>>No, please reread this thread, especially this message:
>>http://marc.info/?l=linux-kernel&m=120169189504361&w=2. This is one of
>>the advantages of the kernel space implementation. The user space
>>implementation has to have data copied between the cache and user space
>>buffer, but the kernel space one can use pages in the cache directly,
>>without extra copy.
>
>
> Well, you've said it thrice (the bellman cried) but that doesn't make it
> true.
>
> The way a user space solution should work is to schedule mmapped I/O
> from the backing store and then send this mmapped region off for target
> I/O. For reads, the page gather will ensure that the pages are up to
> date from the backing store to the cache before sending the I/O out.
> For writes, You actually have to do a msync on the region to get the
> data secured to the backing store.
James, have you checked how fast is mmaped I/O if work size > size of
RAM? It's several times slower comparing to buffered I/O. It was many
times discussed in LKML and, seems, VM people consider it unavoidable.
So, using mmaped IO isn't an option for high performance. Plus, mmaped
IO isn't an option for high reliability requirements, since it doesn't
provide a practical way to handle I/O errors.
> You also have to pull tricks with
> the mmap region in the case of writes to prevent useless data being read
> in from the backing store.
Can you be more exact and specify what kind of tricks should be done for
that?
> However, none of this involves data copies.
>
> James
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 17:56 ` Vladislav Bolkhovitin
@ 2008-02-04 18:22 ` James Bottomley
2008-02-04 18:38 ` Vladislav Bolkhovitin
0 siblings, 1 reply; 29+ messages in thread
From: James Bottomley @ 2008-02-04 18:22 UTC (permalink / raw)
To: Vladislav Bolkhovitin
Cc: Bart Van Assche, Linus Torvalds, Andrew Morton, FUJITA Tomonori,
linux-scsi, scst-devel, linux-kernel
On Mon, 2008-02-04 at 20:56 +0300, Vladislav Bolkhovitin wrote:
> James Bottomley wrote:
> > On Mon, 2008-02-04 at 20:16 +0300, Vladislav Bolkhovitin wrote:
> >
> >>James Bottomley wrote:
> >>
> >>>>>>So, James, what is your opinion on the above? Or the overall SCSI target
> >>>>>>project simplicity doesn't matter much for you and you think it's fine
> >>>>>>to duplicate Linux page cache in the user space to keep the in-kernel
> >>>>>>part of the project as small as possible?
> >>>>>
> >>>>>
> >>>>>The answers were pretty much contained here
> >>>>>
> >>>>>http://marc.info/?l=linux-scsi&m=120164008302435
> >>>>>
> >>>>>and here:
> >>>>>
> >>>>>http://marc.info/?l=linux-scsi&m=120171067107293
> >>>>>
> >>>>>Weren't they?
> >>>>
> >>>>No, sorry, it doesn't look so for me. They are about performance, but
> >>>>I'm asking about the overall project's architecture, namely about one
> >>>>part of it: simplicity. Particularly, what do you think about
> >>>>duplicating Linux page cache in the user space to have zero-copy cached
> >>>>I/O? Or can you suggest another architectural solution for that problem
> >>>>in the STGT's approach?
> >>>
> >>>
> >>>Isn't that an advantage of a user space solution? It simply uses the
> >>>backing store of whatever device supplies the data. That means it takes
> >>>advantage of the existing mechanisms for caching.
> >>
> >>No, please reread this thread, especially this message:
> >>http://marc.info/?l=linux-kernel&m=120169189504361&w=2. This is one of
> >>the advantages of the kernel space implementation. The user space
> >>implementation has to have data copied between the cache and user space
> >>buffer, but the kernel space one can use pages in the cache directly,
> >>without extra copy.
> >
> >
> > Well, you've said it thrice (the bellman cried) but that doesn't make it
> > true.
> >
> > The way a user space solution should work is to schedule mmapped I/O
> > from the backing store and then send this mmapped region off for target
> > I/O. For reads, the page gather will ensure that the pages are up to
> > date from the backing store to the cache before sending the I/O out.
> > For writes, You actually have to do a msync on the region to get the
> > data secured to the backing store.
>
> James, have you checked how fast is mmaped I/O if work size > size of
> RAM? It's several times slower comparing to buffered I/O. It was many
> times discussed in LKML and, seems, VM people consider it unavoidable.
Erm, but if you're using the case of work size > size of RAM, you'll
find buffered I/O won't help because you don't have the memory for
buffers either.
> So, using mmaped IO isn't an option for high performance. Plus, mmaped
> IO isn't an option for high reliability requirements, since it doesn't
> provide a practical way to handle I/O errors.
I think you'll find it does ... the page gather returns -EFAULT if
there's an I/O error in the gathered region. msync does something
similar if there's a write failure.
> > You also have to pull tricks with
> > the mmap region in the case of writes to prevent useless data being read
> > in from the backing store.
>
> Can you be more exact and specify what kind of tricks should be done for
> that?
Actually, just avoid touching it seems to do the trick with a recent
kernel.
James
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 18:22 ` James Bottomley
@ 2008-02-04 18:38 ` Vladislav Bolkhovitin
2008-02-04 18:54 ` James Bottomley
0 siblings, 1 reply; 29+ messages in thread
From: Vladislav Bolkhovitin @ 2008-02-04 18:38 UTC (permalink / raw)
To: James Bottomley
Cc: Bart Van Assche, Linus Torvalds, Andrew Morton, FUJITA Tomonori,
linux-scsi, scst-devel, linux-kernel
James Bottomley wrote:
> On Mon, 2008-02-04 at 20:56 +0300, Vladislav Bolkhovitin wrote:
>
>>James Bottomley wrote:
>>
>>>On Mon, 2008-02-04 at 20:16 +0300, Vladislav Bolkhovitin wrote:
>>>
>>>
>>>>James Bottomley wrote:
>>>>
>>>>
>>>>>>>>So, James, what is your opinion on the above? Or the overall SCSI target
>>>>>>>>project simplicity doesn't matter much for you and you think it's fine
>>>>>>>>to duplicate Linux page cache in the user space to keep the in-kernel
>>>>>>>>part of the project as small as possible?
>>>>>>>
>>>>>>>
>>>>>>>The answers were pretty much contained here
>>>>>>>
>>>>>>>http://marc.info/?l=linux-scsi&m=120164008302435
>>>>>>>
>>>>>>>and here:
>>>>>>>
>>>>>>>http://marc.info/?l=linux-scsi&m=120171067107293
>>>>>>>
>>>>>>>Weren't they?
>>>>>>
>>>>>>No, sorry, it doesn't look so for me. They are about performance, but
>>>>>>I'm asking about the overall project's architecture, namely about one
>>>>>>part of it: simplicity. Particularly, what do you think about
>>>>>>duplicating Linux page cache in the user space to have zero-copy cached
>>>>>>I/O? Or can you suggest another architectural solution for that problem
>>>>>>in the STGT's approach?
>>>>>
>>>>>
>>>>>Isn't that an advantage of a user space solution? It simply uses the
>>>>>backing store of whatever device supplies the data. That means it takes
>>>>>advantage of the existing mechanisms for caching.
>>>>
>>>>No, please reread this thread, especially this message:
>>>>http://marc.info/?l=linux-kernel&m=120169189504361&w=2. This is one of
>>>>the advantages of the kernel space implementation. The user space
>>>>implementation has to have data copied between the cache and user space
>>>>buffer, but the kernel space one can use pages in the cache directly,
>>>>without extra copy.
>>>
>>>
>>>Well, you've said it thrice (the bellman cried) but that doesn't make it
>>>true.
>>>
>>>The way a user space solution should work is to schedule mmapped I/O
>>>from the backing store and then send this mmapped region off for target
>>>I/O. For reads, the page gather will ensure that the pages are up to
>>>date from the backing store to the cache before sending the I/O out.
>>>For writes, You actually have to do a msync on the region to get the
>>>data secured to the backing store.
>>
>>James, have you checked how fast is mmaped I/O if work size > size of
>>RAM? It's several times slower comparing to buffered I/O. It was many
>>times discussed in LKML and, seems, VM people consider it unavoidable.
>
>
> Erm, but if you're using the case of work size > size of RAM, you'll
> find buffered I/O won't help because you don't have the memory for
> buffers either.
James, just check and you will see, buffered I/O is a lot faster.
>>So, using mmaped IO isn't an option for high performance. Plus, mmaped
>>IO isn't an option for high reliability requirements, since it doesn't
>>provide a practical way to handle I/O errors.
>
> I think you'll find it does ... the page gather returns -EFAULT if
> there's an I/O error in the gathered region.
Err, to whom return? If you try to read from a mmaped page, which can't
be populated due to I/O error, you will get SIGBUS or SIGSEGV, I don't
remember exactly. It's quite tricky to get back to the faulted command
from the signal handler.
Or do you mean mmap(MAP_POPULATE)/munmap() for each command? Do you
think that such mapping/unmapping is good for performance?
> msync does something
> similar if there's a write failure.
>
>>>You also have to pull tricks with
>>>the mmap region in the case of writes to prevent useless data being read
>>>in from the backing store.
>>
>>Can you be more exact and specify what kind of tricks should be done for
>>that?
>
> Actually, just avoid touching it seems to do the trick with a recent
> kernel.
Hmm, how can one write to an mmaped page and don't touch it?
> James
>
>
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 18:38 ` Vladislav Bolkhovitin
@ 2008-02-04 18:54 ` James Bottomley
2008-02-05 18:59 ` Vladislav Bolkhovitin
0 siblings, 1 reply; 29+ messages in thread
From: James Bottomley @ 2008-02-04 18:54 UTC (permalink / raw)
To: Vladislav Bolkhovitin
Cc: Bart Van Assche, Linus Torvalds, Andrew Morton, FUJITA Tomonori,
linux-scsi, scst-devel, linux-kernel
On Mon, 2008-02-04 at 21:38 +0300, Vladislav Bolkhovitin wrote:
> James Bottomley wrote:
> > On Mon, 2008-02-04 at 20:56 +0300, Vladislav Bolkhovitin wrote:
> >
> >>James Bottomley wrote:
> >>
> >>>On Mon, 2008-02-04 at 20:16 +0300, Vladislav Bolkhovitin wrote:
> >>>
> >>>
> >>>>James Bottomley wrote:
> >>>>
> >>>>
> >>>>>>>>So, James, what is your opinion on the above? Or the overall SCSI target
> >>>>>>>>project simplicity doesn't matter much for you and you think it's fine
> >>>>>>>>to duplicate Linux page cache in the user space to keep the in-kernel
> >>>>>>>>part of the project as small as possible?
> >>>>>>>
> >>>>>>>
> >>>>>>>The answers were pretty much contained here
> >>>>>>>
> >>>>>>>http://marc.info/?l=linux-scsi&m=120164008302435
> >>>>>>>
> >>>>>>>and here:
> >>>>>>>
> >>>>>>>http://marc.info/?l=linux-scsi&m=120171067107293
> >>>>>>>
> >>>>>>>Weren't they?
> >>>>>>
> >>>>>>No, sorry, it doesn't look so for me. They are about performance, but
> >>>>>>I'm asking about the overall project's architecture, namely about one
> >>>>>>part of it: simplicity. Particularly, what do you think about
> >>>>>>duplicating Linux page cache in the user space to have zero-copy cached
> >>>>>>I/O? Or can you suggest another architectural solution for that problem
> >>>>>>in the STGT's approach?
> >>>>>
> >>>>>
> >>>>>Isn't that an advantage of a user space solution? It simply uses the
> >>>>>backing store of whatever device supplies the data. That means it takes
> >>>>>advantage of the existing mechanisms for caching.
> >>>>
> >>>>No, please reread this thread, especially this message:
> >>>>http://marc.info/?l=linux-kernel&m=120169189504361&w=2. This is one of
> >>>>the advantages of the kernel space implementation. The user space
> >>>>implementation has to have data copied between the cache and user space
> >>>>buffer, but the kernel space one can use pages in the cache directly,
> >>>>without extra copy.
> >>>
> >>>
> >>>Well, you've said it thrice (the bellman cried) but that doesn't make it
> >>>true.
> >>>
> >>>The way a user space solution should work is to schedule mmapped I/O
> >>>from the backing store and then send this mmapped region off for target
> >>>I/O. For reads, the page gather will ensure that the pages are up to
> >>>date from the backing store to the cache before sending the I/O out.
> >>>For writes, You actually have to do a msync on the region to get the
> >>>data secured to the backing store.
> >>
> >>James, have you checked how fast is mmaped I/O if work size > size of
> >>RAM? It's several times slower comparing to buffered I/O. It was many
> >>times discussed in LKML and, seems, VM people consider it unavoidable.
> >
> >
> > Erm, but if you're using the case of work size > size of RAM, you'll
> > find buffered I/O won't help because you don't have the memory for
> > buffers either.
>
> James, just check and you will see, buffered I/O is a lot faster.
So in an out of memory situation the buffers you don't have are a lot
faster than the pages I don't have?
> >>So, using mmaped IO isn't an option for high performance. Plus, mmaped
> >>IO isn't an option for high reliability requirements, since it doesn't
> >>provide a practical way to handle I/O errors.
> >
> > I think you'll find it does ... the page gather returns -EFAULT if
> > there's an I/O error in the gathered region.
>
> Err, to whom return? If you try to read from a mmaped page, which can't
> be populated due to I/O error, you will get SIGBUS or SIGSEGV, I don't
> remember exactly. It's quite tricky to get back to the faulted command
> from the signal handler.
>
> Or do you mean mmap(MAP_POPULATE)/munmap() for each command? Do you
> think that such mapping/unmapping is good for performance?
>
> > msync does something
> > similar if there's a write failure.
> >
> >>>You also have to pull tricks with
> >>>the mmap region in the case of writes to prevent useless data being read
> >>>in from the backing store.
> >>
> >>Can you be more exact and specify what kind of tricks should be done for
> >>that?
> >
> > Actually, just avoid touching it seems to do the trick with a recent
> > kernel.
>
> Hmm, how can one write to an mmaped page and don't touch it?
I meant from user space ... the writes are done inside the kernel.
However, as Linus has pointed out, this discussion is getting a bit off
topic. There's no actual evidence that copy problems are causing any
performatince issues issues for STGT. In fact, there's evidence that
they're not for everything except IB networks.
James
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 18:54 ` James Bottomley
@ 2008-02-05 18:59 ` Vladislav Bolkhovitin
2008-02-05 19:13 ` James Bottomley
0 siblings, 1 reply; 29+ messages in thread
From: Vladislav Bolkhovitin @ 2008-02-05 18:59 UTC (permalink / raw)
To: James Bottomley
Cc: FUJITA Tomonori, linux-scsi, linux-kernel, scst-devel,
Andrew Morton, Linus Torvalds
James Bottomley wrote:
> On Mon, 2008-02-04 at 21:38 +0300, Vladislav Bolkhovitin wrote:
>
>>James Bottomley wrote:
>>
>>>On Mon, 2008-02-04 at 20:56 +0300, Vladislav Bolkhovitin wrote:
>>>
>>>
>>>>James Bottomley wrote:
>>>>
>>>>
>>>>>On Mon, 2008-02-04 at 20:16 +0300, Vladislav Bolkhovitin wrote:
>>>>>
>>>>>
>>>>>
>>>>>>James Bottomley wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>>>>>So, James, what is your opinion on the above? Or the overall SCSI target
>>>>>>>>>>project simplicity doesn't matter much for you and you think it's fine
>>>>>>>>>>to duplicate Linux page cache in the user space to keep the in-kernel
>>>>>>>>>>part of the project as small as possible?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>The answers were pretty much contained here
>>>>>>>>>
>>>>>>>>>http://marc.info/?l=linux-scsi&m=120164008302435
>>>>>>>>>
>>>>>>>>>and here:
>>>>>>>>>
>>>>>>>>>http://marc.info/?l=linux-scsi&m=120171067107293
>>>>>>>>>
>>>>>>>>>Weren't they?
>>>>>>>>
>>>>>>>>No, sorry, it doesn't look so for me. They are about performance, but
>>>>>>>>I'm asking about the overall project's architecture, namely about one
>>>>>>>>part of it: simplicity. Particularly, what do you think about
>>>>>>>>duplicating Linux page cache in the user space to have zero-copy cached
>>>>>>>>I/O? Or can you suggest another architectural solution for that problem
>>>>>>>>in the STGT's approach?
>>>>>>>
>>>>>>>
>>>>>>>Isn't that an advantage of a user space solution? It simply uses the
>>>>>>>backing store of whatever device supplies the data. That means it takes
>>>>>>>advantage of the existing mechanisms for caching.
>>>>>>
>>>>>>No, please reread this thread, especially this message:
>>>>>>http://marc.info/?l=linux-kernel&m=120169189504361&w=2. This is one of
>>>>>>the advantages of the kernel space implementation. The user space
>>>>>>implementation has to have data copied between the cache and user space
>>>>>>buffer, but the kernel space one can use pages in the cache directly,
>>>>>>without extra copy.
>>>>>
>>>>>
>>>>>Well, you've said it thrice (the bellman cried) but that doesn't make it
>>>>>true.
>>>>>
>>>>>The way a user space solution should work is to schedule mmapped I/O
>>>>
>>>>>from the backing store and then send this mmapped region off for target
>>>>
>>>>>I/O. For reads, the page gather will ensure that the pages are up to
>>>>>date from the backing store to the cache before sending the I/O out.
>>>>>For writes, You actually have to do a msync on the region to get the
>>>>>data secured to the backing store.
>>>>
>>>>James, have you checked how fast is mmaped I/O if work size > size of
>>>>RAM? It's several times slower comparing to buffered I/O. It was many
>>>>times discussed in LKML and, seems, VM people consider it unavoidable.
>>>
>>>
>>>Erm, but if you're using the case of work size > size of RAM, you'll
>>>find buffered I/O won't help because you don't have the memory for
>>>buffers either.
>>
>>James, just check and you will see, buffered I/O is a lot faster.
>
> So in an out of memory situation the buffers you don't have are a lot
> faster than the pages I don't have?
There isn't OOM in both cases. Just pages reclamation/readahead work
much better in the buffered case.
>>>>So, using mmaped IO isn't an option for high performance. Plus, mmaped
>>>>IO isn't an option for high reliability requirements, since it doesn't
>>>>provide a practical way to handle I/O errors.
>>>
>>>I think you'll find it does ... the page gather returns -EFAULT if
>>>there's an I/O error in the gathered region.
>>
>>Err, to whom return? If you try to read from a mmaped page, which can't
>>be populated due to I/O error, you will get SIGBUS or SIGSEGV, I don't
>>remember exactly. It's quite tricky to get back to the faulted command
>>from the signal handler.
>>
>>Or do you mean mmap(MAP_POPULATE)/munmap() for each command? Do you
>>think that such mapping/unmapping is good for performance?
>>
>>
>>>msync does something
>>>similar if there's a write failure.
>>>
>>>
>>>>>You also have to pull tricks with
>>>>>the mmap region in the case of writes to prevent useless data being read
>>>>>in from the backing store.
>>>>
>>>>Can you be more exact and specify what kind of tricks should be done for
>>>>that?
>>>
>>>Actually, just avoid touching it seems to do the trick with a recent
>>>kernel.
>>
>>Hmm, how can one write to an mmaped page and don't touch it?
>
> I meant from user space ... the writes are done inside the kernel.
Sure, the mmap() approach agreed to be unpractical, but could you
elaborate more on this anyway, please? I'm just curious. Do you think
about implementing a new syscall, which would put pages with data in the
mmap'ed area?
> However, as Linus has pointed out, this discussion is getting a bit off
> topic.
No, that isn't off topic. We've just proved that there is no good way to
implement zero-copy cached I/O for STGT. I see the only practical way
for that, proposed by FUJITA Tomonori some time ago: duplicating Linux
page cache in the user space. But will you like it?
> There's no actual evidence that copy problems are causing any
> performatince issues issues for STGT. In fact, there's evidence that
> they're not for everything except IB networks.
The zero-copy cached I/O has not yet been implemented in SCST, I simply
so far have not had time for that. Currently SCST performs better STGT,
because of simpler processing path and less context switches per
command. Memcpy() speed on modern systems is about the same as
throughput of 20Gbps link (1600MB/s), so when the zero-copy will be
implemented, I won't be surprised by more 50-70% SCST advantage.
> James
>
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Scst-devel mailing list
> Scst-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/scst-devel
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-05 18:59 ` Vladislav Bolkhovitin
@ 2008-02-05 19:13 ` James Bottomley
2008-02-07 13:13 ` [Scst-devel] " Bart Van Assche
0 siblings, 1 reply; 29+ messages in thread
From: James Bottomley @ 2008-02-05 19:13 UTC (permalink / raw)
To: Vladislav Bolkhovitin
Cc: FUJITA Tomonori, linux-scsi, linux-kernel, scst-devel,
Andrew Morton, Linus Torvalds
On Tue, 2008-02-05 at 21:59 +0300, Vladislav Bolkhovitin wrote:
> >>Hmm, how can one write to an mmaped page and don't touch it?
> >
> > I meant from user space ... the writes are done inside the kernel.
>
> Sure, the mmap() approach agreed to be unpractical, but could you
> elaborate more on this anyway, please? I'm just curious. Do you think
> about implementing a new syscall, which would put pages with data in the
> mmap'ed area?
No, it has to do with the way invalidation occurs. When you mmap a
region from a device or file, the kernel places page translations for
that region into your vm_area. The regions themselves aren't backed
until faulted. For write (i.e. incoming command to target) you specify
the write flag and send the area off to receive the data. The gather,
expecting the pages to be overwritten, backs them with pages marked
dirty but doesn't fault in the contents (unless it already exists in the
page cache). The kernel writes the data to the pages and the dirty
pages go back to the user. msync() flushes them to the device.
The disadvantage of all this is that the handle for the I/O if you will
is a virtual address in a user process that doesn't actually care to see
the data. non-x86 architectures will do flushes/invalidates on this
address space as the I/O occurs.
> > However, as Linus has pointed out, this discussion is getting a bit off
> > topic.
>
> No, that isn't off topic. We've just proved that there is no good way to
> implement zero-copy cached I/O for STGT. I see the only practical way
> for that, proposed by FUJITA Tomonori some time ago: duplicating Linux
> page cache in the user space. But will you like it?
Well, there's no real evidence that zero copy or lack of it is a problem
yet.
James
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-05 19:13 ` James Bottomley
@ 2008-02-07 13:13 ` Bart Van Assche
2008-02-07 15:38 ` Nicholas A. Bellinger
0 siblings, 1 reply; 29+ messages in thread
From: Bart Van Assche @ 2008-02-07 13:13 UTC (permalink / raw)
To: James Bottomley, Nicholas A. Bellinger, Vladislav Bolkhovitin,
FUJITA Tomonori
Cc: linux-scsi, linux-kernel, scst-devel, Andrew Morton, Linus Torvalds
Since the focus of this thread shifted somewhat in the last few
messages, I'll try to summarize what has been discussed so far:
- There was a number of participants who joined this discussion
spontaneously. This suggests that there is considerable interest in
networked storage and iSCSI.
- It has been motivated why iSCSI makes sense as a storage protocol
(compared to ATA over Ethernet and Fibre Channel over Ethernet).
- The direct I/O performance results for block transfer sizes below 64
KB are a meaningful benchmark for storage target implementations.
- It has been discussed whether an iSCSI target should be implemented
in user space or in kernel space. It is clear now that an
implementation in the kernel can be made faster than a user space
implementation (http://kerneltrap.org/mailarchive/linux-kernel/2008/2/4/714804).
Regarding existing implementations, measurements have a.o. shown that
SCST is faster than STGT (30% with the following setup: iSCSI via
IPoIB and direct I/O block transfers with a size of 512 bytes).
- It has been discussed which iSCSI target implementation should be in
the mainstream Linux kernel. There is no agreement on this subject
yet. The short-term options are as follows:
1) Do not integrate any new iSCSI target implementation in the
mainstream Linux kernel.
2) Add one of the existing in-kernel iSCSI target implementations to
the kernel, e.g. SCST or PyX/LIO.
3) Create a new in-kernel iSCSI target implementation that combines
the advantages of the existing iSCSI kernel target implementations
(iETD, STGT, SCST and PyX/LIO).
As an iSCSI user, I prefer option (3). The big question is whether the
various storage target authors agree with this ?
Bart Van Assche.
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-07 13:13 ` [Scst-devel] " Bart Van Assche
@ 2008-02-07 15:38 ` Nicholas A. Bellinger
2008-02-07 20:37 ` Luben Tuikov
0 siblings, 1 reply; 29+ messages in thread
From: Nicholas A. Bellinger @ 2008-02-07 15:38 UTC (permalink / raw)
To: Bart Van Assche
Cc: James Bottomley, Vladislav Bolkhovitin, FUJITA Tomonori,
linux-scsi, linux-kernel, scst-devel, Andrew Morton,
Linus Torvalds, Ming Zhang
On Thu, 2008-02-07 at 14:13 +0100, Bart Van Assche wrote:
> Since the focus of this thread shifted somewhat in the last few
> messages, I'll try to summarize what has been discussed so far:
> - There was a number of participants who joined this discussion
> spontaneously. This suggests that there is considerable interest in
> networked storage and iSCSI.
> - It has been motivated why iSCSI makes sense as a storage protocol
> (compared to ATA over Ethernet and Fibre Channel over Ethernet).
> - The direct I/O performance results for block transfer sizes below 64
> KB are a meaningful benchmark for storage target implementations.
> - It has been discussed whether an iSCSI target should be implemented
> in user space or in kernel space. It is clear now that an
> implementation in the kernel can be made faster than a user space
> implementation (http://kerneltrap.org/mailarchive/linux-kernel/2008/2/4/714804).
> Regarding existing implementations, measurements have a.o. shown that
> SCST is faster than STGT (30% with the following setup: iSCSI via
> IPoIB and direct I/O block transfers with a size of 512 bytes).
> - It has been discussed which iSCSI target implementation should be in
> the mainstream Linux kernel. There is no agreement on this subject
> yet. The short-term options are as follows:
> 1) Do not integrate any new iSCSI target implementation in the
> mainstream Linux kernel.
> 2) Add one of the existing in-kernel iSCSI target implementations to
> the kernel, e.g. SCST or PyX/LIO.
> 3) Create a new in-kernel iSCSI target implementation that combines
> the advantages of the existing iSCSI kernel target implementations
> (iETD, STGT, SCST and PyX/LIO).
>
> As an iSCSI user, I prefer option (3). The big question is whether the
> various storage target authors agree with this ?
>
I think the other data point here would be that final target design
needs to be as generic as possible. Generic in the sense that the
engine eventually needs to be able to accept NDB and other ethernet
based target mode storage configurations to an abstracted device object
(struct scsi_device, struct block_device, or struct file) just as it
would for an IP Storage based request.
We know that NDB and *oE will have their own naming and discovery, and
the first set of IO tasks to be completed would be those using
(iscsi_cmd_t->cmd_flags & ICF_SCSI_DATA_SG_IO_CDB) in
iscsi_target_transport.c in the current code. These are single READ_*
and WRITE_* codepaths that perform DMA memory pre-proceessing in v2.9
LIO-SE.
Also, being able to tell the engine to accelerate to DMA ring operation
(say to underlying struct scsi_device or struct block_device) instead of
fileio in some cases you will see better performance when using hardware
(ie: not a underlying kernel thread queueing IO into block). But I have
found FILEIO with sendpage with MD to be faster in single threaded tests
than struct block_device. I am currently using IBLOCK for LVM for core
LIO operation (which actually sits on software MD raid6). I do this
because using submit_bio() with se_mem_t mapped arrays of struct
scatterlist -> struct bio_vec can handle power failures properly, and
not send back StatSN Acks to the Initiator who thinks that everything
has already made it to disk. This is the case with doing IO to struct
file in the kernel today without a kernel level O_DIRECT.
Also for proper kernel-level target mode support, using struct file with
O_DIRECT for storage blocks and emulating control path CDBS is one of
the work items. This can be made generic or obtained from the
underlying storage object (anything that can be exported from LIO
Subsystem TPI) For real hardware (struct scsi_device in just about all
the cases these days). Last time I looked this was due to
fs/direct-io.c:dio_refill_pages() using get_user_pages()...
For really transport specific CDB and control code, which in good amount
of cases, we are going eventually be expected to emulate in software.
I really like how STGT breaks this up into per device type code
segments; spc.c sbc.c mmc.c ssc.c smc.c etc. Having all of these split
out properly is one strong point of STGT IMHO, and really makes learning
things much easier. Also, being able to queue these IOs into a
userspace and receive a asynchronous response back up the storage stack.
I think this is actually a pretty interesting potential for passing
storage protocol packets into userspace apps and leave the protocol
state machines and recovery paths in the kernel with a generic target
engine.
Also, I know that the SCST folks have put alot of time into getting the
very SCSI hardware specific target mode control modes to work. I
personally own a bunch of this adapters, and would really like to see
better support for target mode on non iSCSI type adapters with a single
target mode storage engine that abstracts storage subsystems and wire
protocol fabrics.
--nab
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-07 15:38 ` Nicholas A. Bellinger
@ 2008-02-07 20:37 ` Luben Tuikov
2008-02-08 11:53 ` Nicholas A. Bellinger
0 siblings, 1 reply; 29+ messages in thread
From: Luben Tuikov @ 2008-02-07 20:37 UTC (permalink / raw)
To: Bart Van Assche, Nicholas A. Bellinger
Cc: James Bottomley, Vladislav Bolkhovitin, FUJITA Tomonori,
linux-scsi, linux-kernel, scst-devel, Andrew Morton,
Linus Torvalds, Ming Zhang
Is there an open iSCSI Target implementation which does NOT
issue commands to sub-target devices via the SCSI mid-layer, but
bypasses it completely?
Luben
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-07 20:37 ` Luben Tuikov
@ 2008-02-08 11:53 ` Nicholas A. Bellinger
0 siblings, 0 replies; 29+ messages in thread
From: Nicholas A. Bellinger @ 2008-02-08 11:53 UTC (permalink / raw)
To: ltuikov
Cc: Bart Van Assche, James Bottomley, Vladislav Bolkhovitin,
FUJITA Tomonori, linux-scsi, linux-kernel, scst-devel,
Andrew Morton, Linus Torvalds, Ming Zhang
On Thu, 2008-02-07 at 12:37 -0800, Luben Tuikov wrote:
> Is there an open iSCSI Target implementation which does NOT
> issue commands to sub-target devices via the SCSI mid-layer, but
> bypasses it completely?
>
> Luben
>
Hi Luben,
I am guessing you mean futher down the stack, which I don't know this to
be the case. Going futher up the layers is the design of v2.9 LIO-SE.
There is a diagram explaining the basic concepts from a 10,000 foot
level.
http://linux-iscsi.org/builds/user/nab/storage-engine-concept.pdf
Note that only traditional iSCSI target is currently implemented in v2.9
LIO-SE codebase in the list of target mode fabrics on left side of the
layout. The API between the protocol headers that does
encoding/decoding target mode storage packets is probably the least
mature area of the LIO stack (because it has always been iSCSI looking
towards iSER :). I don't know who has the most mature API between the
storage engine and target storage protocol for doing this between SCST
and STGT, I am guessing SCST because of the difference in age of the
projects. Could someone be so kind to fill me in on this..?
Also note, the storage engine plugin for doing userspace passthrough on
the right is also currently not implemented. Userspace passthrough in
this context is an target engine I/O that is enforcing max_sector and
sector_size limitiations, and encodes/decodes target storage protocol
packets all out of view of userspace. The addressing will be completely
different if we are pointing SE target packets at non SCSI target ports
in userspace.
--nab
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 17:25 ` James Bottomley
2008-02-04 17:56 ` Vladislav Bolkhovitin
@ 2008-02-04 18:29 ` Linus Torvalds
1 sibling, 0 replies; 29+ messages in thread
From: Linus Torvalds @ 2008-02-04 18:29 UTC (permalink / raw)
To: James Bottomley
Cc: Vladislav Bolkhovitin, Bart Van Assche, Andrew Morton,
FUJITA Tomonori, linux-scsi, scst-devel, linux-kernel
On Mon, 4 Feb 2008, James Bottomley wrote:
>
> The way a user space solution should work is to schedule mmapped I/O
> from the backing store and then send this mmapped region off for target
> I/O.
mmap'ing may avoid the copy, but the overhead of a mmap operation is
quite often much *bigger* than the overhead of a copy operation.
Please do not advocate the use of mmap() as a way to avoid memory copies.
It's not realistic. Even if you can do it with a single "mmap()" system
call (which is not at all a given, considering that block devices can
easily be much larger than the available virtual memory space), the fact
is that page table games along with the fault (and even just TLB miss)
overhead is easily more than the cost of copying a page in a nice
streaming manner.
Yes, memory is "slow", but dammit, so is mmap().
> You also have to pull tricks with the mmap region in the case of writes
> to prevent useless data being read in from the backing store. However,
> none of this involves data copies.
"data copies" is irrelevant. The only thing that matters is performance.
And if avoiding data copies is more costly (or even of a similar cost)
than the copies themselves would have been, there is absolutely no upside,
and only downsides due to extra complexity.
If you want good performance for a service like this, you really generally
*do* need to in kernel space. You can play games in user space, but you're
fooling yourself if you think you can do as well as doing it in the
kernel. And you're *definitely* fooling yourself if you think mmap()
solves performance issues. "Zero-copy" does not equate to "fast". Memory
speeds may be slower that core CPU speeds, but not infinitely so!
(That said: there *are* alternatives to mmap, like "splice()", that really
do potentially solve some issues without the page table and TLB overheads.
But while splice() avoids the costs of paging, I strongly suspect it would
still have easily measurable latency issues. Switching between user and
kernel space multiple times is definitely not going to be free, although
it's probably not a huge issue if you have big enough requests).
Linus
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 18:29 ` Linus Torvalds
(?)
(?)
@ 2008-02-04 19:06 ` Nicholas A. Bellinger
2008-02-04 19:44 ` Linus Torvalds
-1 siblings, 1 reply; 29+ messages in thread
From: Nicholas A. Bellinger @ 2008-02-04 19:06 UTC (permalink / raw)
To: Linus Torvalds
Cc: James Bottomley, Vladislav Bolkhovitin, Bart Van Assche,
Andrew Morton, FUJITA Tomonori, linux-scsi, scst-devel,
linux-kernel, Mike Christie
On Mon, 2008-02-04 at 10:29 -0800, Linus Torvalds wrote:
>
> On Mon, 4 Feb 2008, James Bottomley wrote:
> >
> > The way a user space solution should work is to schedule mmapped I/O
> > from the backing store and then send this mmapped region off for target
> > I/O.
>
> mmap'ing may avoid the copy, but the overhead of a mmap operation is
> quite often much *bigger* than the overhead of a copy operation.
>
> Please do not advocate the use of mmap() as a way to avoid memory copies.
> It's not realistic. Even if you can do it with a single "mmap()" system
> call (which is not at all a given, considering that block devices can
> easily be much larger than the available virtual memory space), the fact
> is that page table games along with the fault (and even just TLB miss)
> overhead is easily more than the cost of copying a page in a nice
> streaming manner.
>
> Yes, memory is "slow", but dammit, so is mmap().
>
> > You also have to pull tricks with the mmap region in the case of writes
> > to prevent useless data being read in from the backing store. However,
> > none of this involves data copies.
>
> "data copies" is irrelevant. The only thing that matters is performance.
> And if avoiding data copies is more costly (or even of a similar cost)
> than the copies themselves would have been, there is absolutely no upside,
> and only downsides due to extra complexity.
>
The iSER spec (RFC-5046) quotes the following in the TCP case for direct
data placement:
" Out-of-order TCP segments in the Traditional iSCSI model have to be
stored and reassembled before the iSCSI protocol layer within an end
node can place the data in the iSCSI buffers. This reassembly is
required because not every TCP segment is likely to contain an iSCSI
header to enable its placement, and TCP itself does not have a
built-in mechanism for signaling Upper Level Protocol (ULP) message
boundaries to aid placement of out-of-order segments. This TCP
reassembly at high network speeds is quite counter-productive for the
following reasons: wasted memory bandwidth in data copying, the need
for reassembly memory, wasted CPU cycles in data copying, and the
general store-and-forward latency from an application perspective."
While this does not have anything to do directly with the kernel vs. user discussion
for target mode storage engine, the scaling and latency case is easy enough
to make if we are talking about scaling TCP for 10 Gb/sec storage fabrics.
> If you want good performance for a service like this, you really generally
> *do* need to in kernel space. You can play games in user space, but you're
> fooling yourself if you think you can do as well as doing it in the
> kernel. And you're *definitely* fooling yourself if you think mmap()
> solves performance issues. "Zero-copy" does not equate to "fast". Memory
> speeds may be slower that core CPU speeds, but not infinitely so!
>
>From looking at this problem from a kernel space perspective for a
number of years, I would be inclined to believe this is true for
software and hardware data-path cases. The benefits of moving various
control statemachines for something like say traditional iSCSI to
userspace has always been debateable. The most obvious ones are things
like authentication, espically if something more complex than CHAP are
the obvious case for userspace. However, I have thought recovery for
failures caused from communication path (iSCSI connections) or entire
nexuses (iSCSI sessions) failures was very problematic to expect to have
to potentially push down IOs state to userspace.
Keeping statemachines for protocol and/or fabric specific statemachines
(CSM-E and CSM-I from connection recovery in iSCSI and iSER are the
obvious ones) are the best canidates for residing in kernel space.
> (That said: there *are* alternatives to mmap, like "splice()", that really
> do potentially solve some issues without the page table and TLB overheads.
> But while splice() avoids the costs of paging, I strongly suspect it would
> still have easily measurable latency issues. Switching between user and
> kernel space multiple times is definitely not going to be free, although
> it's probably not a huge issue if you have big enough requests).
>
Most of the SCSI OS storage subsystems that I have worked with in the
context of iSCSI have used 256 * 512 byte setctor requests, which the
default traditional iSCSI PDU data payload (MRDSL) being 64k to hit the
sweet spot with crc32c checksum calculations. I am assuming this is
going to be the case for other fabrics as well.
--nab
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 19:06 ` Nicholas A. Bellinger
@ 2008-02-04 19:44 ` Linus Torvalds
2008-02-04 20:06 ` [Scst-devel] " 4news
2008-02-04 22:43 ` Alan Cox
0 siblings, 2 replies; 29+ messages in thread
From: Linus Torvalds @ 2008-02-04 19:44 UTC (permalink / raw)
To: Nicholas A. Bellinger
Cc: James Bottomley, Vladislav Bolkhovitin, Bart Van Assche,
Andrew Morton, FUJITA Tomonori, linux-scsi, scst-devel,
Linux Kernel Mailing List, Mike Christie
On Mon, 4 Feb 2008, Nicholas A. Bellinger wrote:
>
> While this does not have anything to do directly with the kernel vs.
> user discussion for target mode storage engine, the scaling and latency
> case is easy enough to make if we are talking about scaling TCP for 10
> Gb/sec storage fabrics.
I would like to point out that while I think there is no question that the
basic data transfer engine would perform better in kernel space, there
stll *are* questions whether
- iSCSI is relevant enough for us to even care ...
- ... and the complexity is actually worth it.
That said, I also tend to believe that trying to split things up between
kernel and user space is often more complex than just keeping things in
one place, because the trade-offs of which part goes where wll inevitably
be wrong in *some* area, and then you're really screwed.
So from a purely personal standpoint, I'd like to say that I'm not really
interested in iSCSI (and I don't quite know why I've been cc'd on this
whole discussion) and think that other approaches are potentially *much*
better. So for example, I personally suspect that ATA-over-ethernet is way
better than some crazy SCSI-over-TCP crap, but I'm biased for simple and
low-level, and against those crazy SCSI people to begin with.
So take any utterances of mine with a big pinch of salt.
Historically, the only split that has worked pretty well is "connection
initiation/setup in user space, actual data transfers in kernel space".
Pure user-space solutions work, but tend to eventually be turned into
kernel-space if they are simple enough and really do have throughput and
latency considerations (eg nfsd), and aren't quite complex and crazy
enough to have a large impedance-matching problem even for basic IO stuff
(eg samba).
And totally pure kernel solutions work only if there are very stable
standards and no major authentication or connection setup issues (eg local
disks).
So just going by what has happened in the past, I'd assume that iSCSI
would eventually turn into "connecting/authentication in user space" with
"data transfers in kernel space". But only if it really does end up
mattering enough. We had a totally user-space NFS daemon for a long time,
and it was perfectly fine until people really started caring.
Linus
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-04 19:44 ` Linus Torvalds
@ 2008-02-04 20:06 ` 4news
2008-02-04 22:43 ` Alan Cox
1 sibling, 0 replies; 29+ messages in thread
From: 4news @ 2008-02-04 20:06 UTC (permalink / raw)
To: scst-devel
Cc: Linus Torvalds, Nicholas A. Bellinger, Mike Christie,
Vladislav Bolkhovitin, linux-scsi, Linux Kernel Mailing List,
James Bottomley, Andrew Morton, FUJITA Tomonori
On lunedì 4 febbraio 2008, Linus Torvalds wrote:
> So from a purely personal standpoint, I'd like to say that I'm not really
> interested in iSCSI (and I don't quite know why I've been cc'd on this
> whole discussion) and think that other approaches are potentially *much*
> better. So for example, I personally suspect that ATA-over-ethernet is way
> better than some crazy SCSI-over-TCP crap, but I'm biased for simple and
> low-level, and against those crazy SCSI people to begin with.
surely aoe is better than iscsi almost on performance because of the lesser
protocol stack:
iscsi -> scsi - ip - eth
aoe -> ata - eth
but surely iscsi is more a standard than aoe and is more actively used by
real-world .
Other really useful feature are that:
- iscsi is capable to move to a ip based san scsi devices by routing that (
i've some tape changer routed by scst to some system that don't have other
way to see a tape).
- because it work on the ip layer it can be routed between long distance , so
having needed bandwidth you can have a really remote block device spoking a
standard protocol between non ethereogenus systems.
- iscsi is now the cheapest san avaible.
bye,
marco.
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 19:44 ` Linus Torvalds
2008-02-04 20:06 ` [Scst-devel] " 4news
@ 2008-02-04 22:43 ` Alan Cox
2008-02-04 17:30 ` Douglas Gilbert
2008-02-04 23:04 ` Jeff Garzik
1 sibling, 2 replies; 29+ messages in thread
From: Alan Cox @ 2008-02-04 22:43 UTC (permalink / raw)
To: Linus Torvalds
Cc: Nicholas A. Bellinger, James Bottomley, Vladislav Bolkhovitin,
Bart Van Assche, Andrew Morton, FUJITA Tomonori, linux-scsi,
scst-devel, Linux Kernel Mailing List, Mike Christie
> better. So for example, I personally suspect that ATA-over-ethernet is way
> better than some crazy SCSI-over-TCP crap, but I'm biased for simple and
> low-level, and against those crazy SCSI people to begin with.
Current ATAoE isn't. It can't support NCQ. A variant that did NCQ and IP
would probably trash iSCSI for latency if nothing else.
Alan
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 22:43 ` Alan Cox
@ 2008-02-04 17:30 ` Douglas Gilbert
2008-02-05 2:07 ` [Scst-devel] " Chris Weiss
2008-02-04 23:04 ` Jeff Garzik
1 sibling, 1 reply; 29+ messages in thread
From: Douglas Gilbert @ 2008-02-04 17:30 UTC (permalink / raw)
To: Alan Cox
Cc: Linus Torvalds, Nicholas A. Bellinger, James Bottomley,
Vladislav Bolkhovitin, Bart Van Assche, Andrew Morton,
FUJITA Tomonori, linux-scsi, scst-devel,
Linux Kernel Mailing List, Mike Christie
Alan Cox wrote:
>> better. So for example, I personally suspect that ATA-over-ethernet is way
>> better than some crazy SCSI-over-TCP crap, but I'm biased for simple and
>> low-level, and against those crazy SCSI people to begin with.
>
> Current ATAoE isn't. It can't support NCQ. A variant that did NCQ and IP
> would probably trash iSCSI for latency if nothing else.
And a variant that doesn't do ATA or IP:
http://www.fcoe.com/
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-04 17:30 ` Douglas Gilbert
@ 2008-02-05 2:07 ` Chris Weiss
2008-02-05 14:19 ` FUJITA Tomonori
0 siblings, 1 reply; 29+ messages in thread
From: Chris Weiss @ 2008-02-05 2:07 UTC (permalink / raw)
To: dougg
Cc: Alan Cox, Mike Christie, Vladislav Bolkhovitin, linux-scsi,
Linux Kernel Mailing List, Nicholas A. Bellinger,
James Bottomley, scst-devel, Andrew Morton, Linus Torvalds,
FUJITA Tomonori
On Feb 4, 2008 11:30 AM, Douglas Gilbert <dougg@torque.net> wrote:
> Alan Cox wrote:
> >> better. So for example, I personally suspect that ATA-over-ethernet is way
> >> better than some crazy SCSI-over-TCP crap, but I'm biased for simple and
> >> low-level, and against those crazy SCSI people to begin with.
> >
> > Current ATAoE isn't. It can't support NCQ. A variant that did NCQ and IP
> > would probably trash iSCSI for latency if nothing else.
>
> And a variant that doesn't do ATA or IP:
> http://www.fcoe.com/
>
however, and interestingly enough, the open-fcoe software target
depends on scst (for now anyway)
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-05 2:07 ` [Scst-devel] " Chris Weiss
@ 2008-02-05 14:19 ` FUJITA Tomonori
0 siblings, 0 replies; 29+ messages in thread
From: FUJITA Tomonori @ 2008-02-05 14:19 UTC (permalink / raw)
To: cweiss
Cc: dougg, alan, michaelc, vst, linux-scsi, linux-kernel, nab,
James.Bottomley, scst-devel, akpm, torvalds, fujita.tomonori,
fujita.tomonori
On Mon, 4 Feb 2008 20:07:01 -0600
"Chris Weiss" <cweiss@gmail.com> wrote:
> On Feb 4, 2008 11:30 AM, Douglas Gilbert <dougg@torque.net> wrote:
> > Alan Cox wrote:
> > >> better. So for example, I personally suspect that ATA-over-ethernet is way
> > >> better than some crazy SCSI-over-TCP crap, but I'm biased for simple and
> > >> low-level, and against those crazy SCSI people to begin with.
> > >
> > > Current ATAoE isn't. It can't support NCQ. A variant that did NCQ and IP
> > > would probably trash iSCSI for latency if nothing else.
> >
> > And a variant that doesn't do ATA or IP:
> > http://www.fcoe.com/
> >
>
> however, and interestingly enough, the open-fcoe software target
> depends on scst (for now anyway)
STGT also supports software FCoE target driver though it's still
experimental stuff.
http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg12705.html
It works in user space like STGT's iSCSI (and iSER) target driver
(i.e. no kernel/user space interaction).
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 22:43 ` Alan Cox
2008-02-04 17:30 ` Douglas Gilbert
@ 2008-02-04 23:04 ` Jeff Garzik
2008-02-05 19:01 ` Vladislav Bolkhovitin
1 sibling, 1 reply; 29+ messages in thread
From: Jeff Garzik @ 2008-02-04 23:04 UTC (permalink / raw)
To: Alan Cox
Cc: Linus Torvalds, Nicholas A. Bellinger, James Bottomley,
Vladislav Bolkhovitin, Bart Van Assche, Andrew Morton,
FUJITA Tomonori, linux-scsi, scst-devel,
Linux Kernel Mailing List, Mike Christie
Alan Cox wrote:
>> better. So for example, I personally suspect that ATA-over-ethernet is way
>> better than some crazy SCSI-over-TCP crap, but I'm biased for simple and
>> low-level, and against those crazy SCSI people to begin with.
>
> Current ATAoE isn't. It can't support NCQ. A variant that did NCQ and IP
> would probably trash iSCSI for latency if nothing else.
AoE is truly a thing of beauty. It has a two/three page RFC (say no more!).
But quite so... AoE is limited to MTU size, which really hurts. Can't
really do tagged queueing, etc.
iSCSI is way, way too complicated. It's an Internet protocol designed
by storage designers, what do you expect?
For years I have been hoping that someone will invent a simple protocol
(w/ strong auth) that can transit ATA and SCSI commands and responses.
Heck, it would be almost trivial if the kernel had a TLS/SSL implementation.
Jeff
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-04 23:04 ` Jeff Garzik
@ 2008-02-05 19:01 ` Vladislav Bolkhovitin
2008-02-05 19:12 ` Jeff Garzik
0 siblings, 1 reply; 29+ messages in thread
From: Vladislav Bolkhovitin @ 2008-02-05 19:01 UTC (permalink / raw)
To: Jeff Garzik
Cc: Alan Cox, Mike Christie, linux-scsi, Linux Kernel Mailing List,
Nicholas A. Bellinger, James Bottomley, scst-devel,
Andrew Morton, Linus Torvalds, FUJITA Tomonori
Jeff Garzik wrote:
> Alan Cox wrote:
>
>>>better. So for example, I personally suspect that ATA-over-ethernet is way
>>>better than some crazy SCSI-over-TCP crap, but I'm biased for simple and
>>>low-level, and against those crazy SCSI people to begin with.
>>
>>Current ATAoE isn't. It can't support NCQ. A variant that did NCQ and IP
>>would probably trash iSCSI for latency if nothing else.
>
>
> AoE is truly a thing of beauty. It has a two/three page RFC (say no more!).
>
> But quite so... AoE is limited to MTU size, which really hurts. Can't
> really do tagged queueing, etc.
>
>
> iSCSI is way, way too complicated.
I fully agree. From one side, all that complexity is unavoidable for
case of multiple connections per session, but for the regular case of
one connection per session it must be a lot simpler.
And now think about iSER, which brings iSCSI on the whole new complexity
level ;)
> It's an Internet protocol designed
> by storage designers, what do you expect?
>
> For years I have been hoping that someone will invent a simple protocol
> (w/ strong auth) that can transit ATA and SCSI commands and responses.
> Heck, it would be almost trivial if the kernel had a TLS/SSL implementation.
>
> Jeff
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-05 19:01 ` Vladislav Bolkhovitin
@ 2008-02-05 19:12 ` Jeff Garzik
2008-02-05 19:21 ` Vladislav Bolkhovitin
0 siblings, 1 reply; 29+ messages in thread
From: Jeff Garzik @ 2008-02-05 19:12 UTC (permalink / raw)
To: Vladislav Bolkhovitin
Cc: Alan Cox, Mike Christie, linux-scsi, Linux Kernel Mailing List,
Nicholas A. Bellinger, James Bottomley, scst-devel,
Andrew Morton, Linus Torvalds, FUJITA Tomonori
Vladislav Bolkhovitin wrote:
> Jeff Garzik wrote:
>> iSCSI is way, way too complicated.
>
> I fully agree. From one side, all that complexity is unavoidable for
> case of multiple connections per session, but for the regular case of
> one connection per session it must be a lot simpler.
Actually, think about those multiple connections... we already had to
implement fast-failover (and load bal) SCSI multi-pathing at a higher
level. IMO that portion of the protocol is redundant: You need the
same capability elsewhere in the OS _anyway_, if you are to support
multi-pathing.
Jeff
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-05 19:12 ` Jeff Garzik
@ 2008-02-05 19:21 ` Vladislav Bolkhovitin
2008-02-06 0:11 ` Nicholas A. Bellinger
0 siblings, 1 reply; 29+ messages in thread
From: Vladislav Bolkhovitin @ 2008-02-05 19:21 UTC (permalink / raw)
To: Jeff Garzik
Cc: Alan Cox, Mike Christie, linux-scsi, Linux Kernel Mailing List,
Nicholas A. Bellinger, James Bottomley, scst-devel,
Andrew Morton, Linus Torvalds, FUJITA Tomonori
Jeff Garzik wrote:
>>> iSCSI is way, way too complicated.
>>
>> I fully agree. From one side, all that complexity is unavoidable for
>> case of multiple connections per session, but for the regular case of
>> one connection per session it must be a lot simpler.
>
> Actually, think about those multiple connections... we already had to
> implement fast-failover (and load bal) SCSI multi-pathing at a higher
> level. IMO that portion of the protocol is redundant: You need the
> same capability elsewhere in the OS _anyway_, if you are to support
> multi-pathing.
I'm thinking about MC/S as about a way to improve performance using
several physical links. There's no other way, except MC/S, to keep
commands processing order in that case. So, it's really valuable
property of iSCSI, although with a limited application.
Vlad
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Integration of SCST in the mainstream Linux kernel
2008-02-05 19:21 ` Vladislav Bolkhovitin
@ 2008-02-06 0:11 ` Nicholas A. Bellinger
2008-02-12 16:05 ` [Scst-devel] " Bart Van Assche
0 siblings, 1 reply; 29+ messages in thread
From: Nicholas A. Bellinger @ 2008-02-06 0:11 UTC (permalink / raw)
To: Vladislav Bolkhovitin
Cc: Jeff Garzik, Alan Cox, Mike Christie, linux-scsi,
Linux Kernel Mailing List, James Bottomley, scst-devel,
Andrew Morton, Linus Torvalds, FUJITA Tomonori, Julian Satran
On Tue, 2008-02-05 at 22:21 +0300, Vladislav Bolkhovitin wrote:
> Jeff Garzik wrote:
> >>> iSCSI is way, way too complicated.
> >>
> >> I fully agree. From one side, all that complexity is unavoidable for
> >> case of multiple connections per session, but for the regular case of
> >> one connection per session it must be a lot simpler.
> >
> > Actually, think about those multiple connections... we already had to
> > implement fast-failover (and load bal) SCSI multi-pathing at a higher
> > level. IMO that portion of the protocol is redundant: You need the
> > same capability elsewhere in the OS _anyway_, if you are to support
> > multi-pathing.
>
> I'm thinking about MC/S as about a way to improve performance using
> several physical links. There's no other way, except MC/S, to keep
> commands processing order in that case. So, it's really valuable
> property of iSCSI, although with a limited application.
>
> Vlad
>
Greetings,
I have always observed the case with LIO SE/iSCSI target mode (as well
as with other software initiators we can leave out of the discussion for
now, and congrats to the open/iscsi on folks recent release. :-) that
execution core hardware thread and inter-nexus per 1 Gb/sec ethernet
port performance scales up to 4x and 2x core x86_64 very well with
MC/S). I have been seeing 450 MB/sec using 2x socket 4x core x86_64 for
a number of years with MC/S. Using MC/S on 10 Gb/sec (on PCI-X v2.0
266mhz as well, which was the first transport that LIO Target ran on
that was able to reach handle duplex ~1200 MB/sec with 3 initiators and
MC/S. In the point to point 10 GB/sec tests on IBM p404 machines, the
initiators where able to reach ~910 MB/sec with MC/S. Open/iSCSI was
able to go a bit faster (~950 MB/sec) because it uses struct sk_buff
directly.
A good rule to keep in mind here while considering performance is that
context switching overhead and pipeline <-> bus stalling (along with
other legacy OS specific storage stack limitations with BLOCK and VFS
with O_DIRECT, et al and I will leave out of the discussion for iSCSI
and SE engine target mode) is that a initiator will scale roughly 1/2 as
well as a target, given comparable hardware and virsh output. The
software target case target case also depends, in great regard in many
cases, if we are talking about something something as simple as doing
contiguous DMA memory allocations in from a SINGLE kernel thread, and
handling direction execution to a storage hardware DMA ring that may
have not been allocated in the current kernel thread. In MC/S mode this
breaks down to:
1) Sorting logic that handles pre execution statemachine for transport
from local RDMA memory and OS specific data buffers. TCP application
data buffer, struct sk_buff, or RDMA struct page or SG. This should be
generic between iSCSI and iSER.
2) Allocation of said memory buffers to OS subsystem dependent code that
can be queued up to these drivers. It breaks down to what you can get
drivers and OS subsystem folks to agree to implement, and can be made
generic in a Transport / BLOCK / VFS layered storage stack. In the
"allocate thread DMA ring and use OS supported software and vendor
available hardware" I don't think the kernel space requirement will
every completely be able to go away.
Without diving into RFC-3720 specifics, the statemachine for MC/S side
for memory allocation, login and logout generic to iSCSi and ISER, and
ERL=2 recovery. My plan is to post the locations in the LIO code where
this has been implemented, and where we where can make this easier, etc.
In the early in the development of what eventually became LIO Target
code, ERL was broken into separete files and separete function
prefixes.
iscsi_target_erl0, iscsi_target_erl1 and iscsi_target_erl2.
The statemachine for ERL=0 and ERL=2 is pretty simple in RFC-3720 (have
a look for those interested in the discussion)
7.1.1. State Descriptions for Initiators and Targets
The LIO target code is also pretty simple for this:
[root@ps3-cell target]# wc -l iscsi_target_erl*
1115 iscsi_target_erl0.c
45 iscsi_target_erl0.h
526 iscsi_target_erl0.o
1426 iscsi_target_erl1.c
51 iscsi_target_erl1.h
1253 iscsi_target_erl1.o
605 iscsi_target_erl2.c
45 iscsi_target_erl2.h
447 iscsi_target_erl2.o
5513 total
erl1.c is a bit larger than the others because it contains the MC/S
statemachine functions. iscsi_target_erl1.c:iscsi_execute_cmd() and
iscsi_target_util.c:iscsi_check_received_cmdsn() do most of the work for
LIO MC/S state machine. I would probably benefit from being in broken
up into say iscsi_target_mcs.c. Note that all of this code is MC/S
safe, with the exception of the specific SCSI TMR functions. For the
SCSI TMR pieces, I have always hoped to use SCST code for doing this...
Most of the login/logout code is done in iscsi_target.c, which is could
probably also benefit fot getting broken out...
--nab
^ permalink raw reply [flat|nested] 29+ messages in thread* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-06 0:11 ` Nicholas A. Bellinger
@ 2008-02-12 16:05 ` Bart Van Assche
2008-02-13 3:44 ` Nicholas A. Bellinger
0 siblings, 1 reply; 29+ messages in thread
From: Bart Van Assche @ 2008-02-12 16:05 UTC (permalink / raw)
To: Nicholas A. Bellinger
Cc: Vladislav Bolkhovitin, FUJITA Tomonori, Mike Christie,
linux-scsi, Linux Kernel Mailing List, James Bottomley,
scst-devel, Andrew Morton
On Feb 6, 2008 1:11 AM, Nicholas A. Bellinger <nab@linux-iscsi.org> wrote:
> I have always observed the case with LIO SE/iSCSI target mode ...
Hello Nicholas,
Are you sure that the LIO-SE kernel module source code is ready for
inclusion in the mainstream Linux kernel ? As you know I tried to test
the LIO-SE iSCSI target. Already while configuring the target I
encountered a kernel crash that froze the whole system. I can
reproduce this kernel crash easily, and I reported it 11 days ago on
the LIO-SE mailing list (February 4, 2008). One of the call stacks I
posted shows a crash in mempool_alloc() called from jbd. Or: the crash
is most likely the result of memory corruption caused by LIO-SE.
Because I was curious to know why it took so long to fix such a severe
crash, I started browsing through the LIO-SE source code. Analysis of
the LIO-SE kernel module source code learned me that this crash is not
a coincidence. Dynamic memory allocation (kmalloc()/kfree()) in the
LIO-SE kernel module is complex and hard to verify. There are 412
memory allocation/deallocation calls in the current version of the
LIO-SE kernel module source code, which is a lot. Additionally,
because of the complexity of the memory handling in LIO-SE, it is not
possible to verify the correctness of the memory handling by analyzing
a single function at a time. In my opinion this makes the LIO-SE
source code hard to maintain.
Furthermore, the LIO-SE kernel module source code does not follow
conventions that have proven their value in the past like grouping all
error handling at the end of a function. As could be expected, the
consequence is that error handling is not correct in several
functions, resulting in memory leaks in case of an error. Some
examples of functions in which error handling is clearly incorrect:
* transport_allocate_passthrough().
* iscsi_do_build_list().
Bart Van Assche.
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel
2008-02-12 16:05 ` [Scst-devel] " Bart Van Assche
@ 2008-02-13 3:44 ` Nicholas A. Bellinger
0 siblings, 0 replies; 29+ messages in thread
From: Nicholas A. Bellinger @ 2008-02-13 3:44 UTC (permalink / raw)
To: Bart Van Assche
Cc: Vladislav Bolkhovitin, FUJITA Tomonori, Mike Christie,
linux-scsi, Linux Kernel Mailing List, James Bottomley,
scst-devel, Andrew Morton, Christoph Hellwig, Rik van Riel,
Chris Weiss, Linus Torvalds
Greetings all,
On Tue, 2008-02-12 at 17:05 +0100, Bart Van Assche wrote:
> On Feb 6, 2008 1:11 AM, Nicholas A. Bellinger <nab@linux-iscsi.org> wrote:
> > I have always observed the case with LIO SE/iSCSI target mode ...
>
> Hello Nicholas,
>
> Are you sure that the LIO-SE kernel module source code is ready for
> inclusion in the mainstream Linux kernel ? As you know I tried to test
> the LIO-SE iSCSI target. Already while configuring the target I
> encountered a kernel crash that froze the whole system. I can
> reproduce this kernel crash easily, and I reported it 11 days ago on
> the LIO-SE mailing list (February 4, 2008). One of the call stacks I
> posted shows a crash in mempool_alloc() called from jbd. Or: the crash
> is most likely the result of memory corruption caused by LIO-SE.
>
So I was able to FINALLY track this down to:
-# CONFIG_SLUB_DEBUG is not set
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
+CONFIG_SLAB=y
in both your and Chris Weiss's configs that was causing the
reproduceable general protection faults. I also disabled
CONFIG_RELOCATABLE and crash dump because I was debugging using kdb in
x86_64 VM on 2.6.24 with your config. I am pretty sure you can leave
this (crash dump) in your config for testing.
This can take a while to compile and take up alot of space, esp. with
all of the kernel debug options enabled, which on 2.6.24, really amounts
to alot of CPU time when building. Also with your original config, I
was seeing some strange undefined module objects after Stage 2 Link with
iscsi_target_mod with modpost with the SLUB the lockups (which are not
random btw, and are tracked back to __kmalloc()).. Also, at module load
time with the original config, there where some warning about symbol
objects (I believe it was SCSI related, same as the ones with modpost).
In any event, the dozen 1000 loop discovery test is now working fine (as
well as IPoIB) with the above config change, and you should be ready to
go for your testing.
Tomo, Vlad, Andrew and Co:
Do you have any ideas why this would be the case with LIO-Target..? Is
anyone else seeing something similar to this with their target mode
(mabye its all out of tree code..?) that is having an issue..? I am
using Debian x86_64 and Bart and Chris are using Ubuntu x86_64 and we
both have this problem with CONFIG_SLUB on >= 2.6.22 kernel.org
kernels.
Also, I will recompile some of my non x86 machines with the above
enabled and see if I can reproduce.. Here the Bart's config again:
http://groups.google.com/group/linux-iscsi-target-dev/browse_thread/thread/30835aede1028188
> Because I was curious to know why it took so long to fix such a severe
> crash, I started browsing through the LIO-SE source code. Analysis of
> the LIO-SE kernel module source code learned me that this crash is not
> a coincidence. Dynamic memory allocation (kmalloc()/kfree()) in the
> LIO-SE kernel module is complex and hard to verify.
What the LIO-SE Target module does is complex. :P Sorry for taking so
long, I had to start tracking this down by CONFIG_ option with your
config on an x86_64 VM.
> There are 412
> memory allocation/deallocation calls in the current version of the
> LIO-SE kernel module source code, which is a lot. Additionally,
> because of the complexity of the memory handling in LIO-SE, it is not
> possible to verify the correctness of the memory handling by analyzing
> a single function at a time. In my opinion this makes the LIO-SE
> source code hard to maintain.
> Furthermore, the LIO-SE kernel module source code does not follow
> conventions that have proven their value in the past like grouping all
> error handling at the end of a function. As could be expected, the
> consequence is that error handling is not correct in several
> functions, resulting in memory leaks in case of an error.
I would be more than happy to point the release paths for iSCSI Target
and LIO-SE to show they are not actual memory leaks (as I mentioned,
this code has been stable for a number of years) for some particular SE
or iSCSI Target logic if you are interested..
Also, if we are talking about target mode storage engine that should be
going upstream, the API to the current stable and future storage
systems, and of course the Mem->SG and SG->Mem that handles all possible
cases of max_sectors and sector_size to past, present, and future. I
really glad that you have been taking a look at this, because some of
the code (as you mention) can get very complex to make this a reality as
it has been with LIO-Target since v2.2.
> Some
> examples of functions in which error handling is clearly incorrect:
> * transport_allocate_passthrough().
> * iscsi_do_build_list().
>
You did find the one in transport_allocate_passthrough() and the
strncpy() + strlen() in userspace. Also, thanks for pointing me to the
missing sg_init_table() and sg_mark_end() usage for 2.6.24. I will post
an update to my thread about how to do this for other drivers..
I will have a look at your new changes and post them on LIO-Target-Dev
for your review. Please feel free to Ack them when I post.
(Thanks Bart !!)
PS: Sometimes it takes a while when you are on the bleeding edge of
development to track these types of issues down. :-)
--nab
^ permalink raw reply [flat|nested] 29+ messages in thread
end of thread, other threads:[~2008-02-13 3:58 UTC | newest]
Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-09 7:44 [Scst-devel] Integration of SCST in the mainstream Linux kernel Luben Tuikov
-- strict thread matches above, loose matches on Subject: below --
2008-02-05 0:24 Linus Torvalds
2008-02-05 4:43 ` [Scst-devel] " Matteo Tescione
2008-02-05 5:07 ` James Bottomley
2008-02-05 13:38 ` FUJITA Tomonori
2008-01-23 14:22 Bart Van Assche
2008-01-29 20:42 ` James Bottomley
2008-01-29 21:31 ` Roland Dreier
2008-01-29 23:32 ` FUJITA Tomonori
2008-01-30 1:15 ` [Scst-devel] " Vu Pham
2008-01-30 8:38 ` Bart Van Assche
2008-01-30 10:56 ` FUJITA Tomonori
2008-01-31 13:25 ` Nicholas A. Bellinger
2008-01-31 14:34 ` Bart Van Assche
2008-01-31 15:50 ` Vladislav Bolkhovitin
2008-01-31 16:25 ` [Scst-devel] " Joe Landman
2008-01-31 17:08 ` Bart Van Assche
2008-01-31 17:13 ` Joe Landman
2008-01-31 18:12 ` David Dillow
2008-02-01 11:50 ` Vladislav Bolkhovitin
2008-02-01 11:50 ` Vladislav Bolkhovitin
2008-02-01 12:25 ` Vladislav Bolkhovitin
2008-01-30 8:29 ` Bart Van Assche
2008-01-30 16:22 ` James Bottomley
2008-02-05 7:14 ` [Scst-devel] " Tomasz Chmielewski
2008-02-05 13:38 ` FUJITA Tomonori
2008-02-05 16:07 ` Tomasz Chmielewski
2008-02-05 16:21 ` Ming Zhang
2008-02-05 16:43 ` FUJITA Tomonori
2008-02-05 17:09 ` Matteo Tescione
2008-02-06 1:29 ` FUJITA Tomonori
2008-02-06 2:01 ` Nicholas A. Bellinger
2008-02-04 16:25 ` Vladislav Bolkhovitin
2008-02-04 17:06 ` James Bottomley
2008-02-04 17:16 ` Vladislav Bolkhovitin
2008-02-04 17:25 ` James Bottomley
2008-02-04 17:56 ` Vladislav Bolkhovitin
2008-02-04 18:22 ` James Bottomley
2008-02-04 18:38 ` Vladislav Bolkhovitin
2008-02-04 18:54 ` James Bottomley
2008-02-05 18:59 ` Vladislav Bolkhovitin
2008-02-05 19:13 ` James Bottomley
2008-02-07 13:13 ` [Scst-devel] " Bart Van Assche
2008-02-07 15:38 ` Nicholas A. Bellinger
2008-02-07 20:37 ` Luben Tuikov
2008-02-08 11:53 ` Nicholas A. Bellinger
2008-02-04 18:29 ` Linus Torvalds
2008-02-04 19:06 ` Nicholas A. Bellinger
2008-02-04 19:44 ` Linus Torvalds
2008-02-04 20:06 ` [Scst-devel] " 4news
2008-02-04 22:43 ` Alan Cox
2008-02-04 17:30 ` Douglas Gilbert
2008-02-05 2:07 ` [Scst-devel] " Chris Weiss
2008-02-05 14:19 ` FUJITA Tomonori
2008-02-04 23:04 ` Jeff Garzik
2008-02-05 19:01 ` Vladislav Bolkhovitin
2008-02-05 19:12 ` Jeff Garzik
2008-02-05 19:21 ` Vladislav Bolkhovitin
2008-02-06 0:11 ` Nicholas A. Bellinger
2008-02-12 16:05 ` [Scst-devel] " Bart Van Assche
2008-02-13 3:44 ` Nicholas A. Bellinger
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®