[Beowulf] SSD caching for parallel filesystems

Ellis H. Wilson III ellis at cse.psu.edu
Sat Feb 9 07:16:40 PST 2013


On 02/09/13 13:16, Mark Hahn wrote:
>> They buy a controller design from one place (some
>> make this component), SSD packages from someplace else, some channel
>> controllers, etc, etc, and strap it all together.  Which is totally
>
> well, I only pay attention to the SATA SSD market, but the media
> controller is in the same chip as the flash controler, wear logic, etc.

Of course -- there is no reason to have to translate to PCIe.  You are 
already getting things encoded for SATA from the NAND flash, so 
everything is easy.  It's only when you use a different protocol outside 
that you need to translate, and this is the case I'm referring to. 
Pardon my snipping the previous aspects of this conversation -- for SATA 
SSDs this entire conversation is moot.  The NAND packages there are as 
good as they could be relative to the overhead I'm discussing.

> so yes, there is some shopping around of flash components, but having
> industry-wide flash interface standards is hardly a bad thing.

I like standards too, and this is why these guys made a standard for the 
PCIe protocol:
http://www.nvmexpress.org/

I'm going to make a bold statement here, and you can take it or leave 
it, but I truly believe SATA is on it's way out for NVM devices.  [I 
believe] We have to stop thinking about these things as "disks" and 
start thinking about them as slow, huge memory.  Just another step in 
that hierarchy (reg, L1, L2, DRAM, NVM).  Obviously we have some hurdles 
to overcome before it's totally usable as plain-ol' OS-managed memory, 
but we're getting there.  I think PCIe is a step in the right direction, 
and does a service to these devices in that it allows them to really 
perform (NVM memories are out-pacing SATA by a lot, at least right now). 
  But ultimately, these things need to either be on-board or in DIMMs. 
Just my opinion of course.

>> fine, but the problem arises because the volume for NAND flash packages
>> are for SATA based drives.  This results in most of the NAND packages
>> within to export a SATA protocol.
>
> that confuses me.  flash chips have a generic interface which I can't
> really see as being at all specific to a particular blockdev interface.

I'm obviously doing a horrible job explaining this -- my apologies! 
Please see page 4 of this whitepaper and the diagram at the top of page 
5 for what I think must be clear enough for me to convey this overhead:

http://www.marvell.com/storage/system-solutions/native-pcie-ssd-controller/assets/Marvell-Native-PCIe-SSD-Controllers-WP.pdf

Getting more technical than I was willing to earlier to summarize this: 
there's a conversion going on between protocol encoding between the SATA 
controller and the HBA controller in bridge-oriented PCIe-based SSDs 
that can incur as high as 25% overheads in the bandwidth.  Is this a 
game-ender for the end-user?  No.  Is this something to keep in mind? 
Sure.  That's all I was angling at.  It was just a suggestion for 
Prentice to research up on prior to committing to a bunch of PCIe 
drives.  I don't work for Micron, Samsung, Intel, or any other company 
in this space.  No tomfoolery going on here :D.

> no, it doesn't.  Micron has simply invented their own
> flash-to-disk-interface.  if you're saying "skipping SATA is important",
> well, maybe.  it looks from Micron's whitepapers that they are focused
> almost entirely on small random reads (not unreasonable).  but that's a
> workload that doesn't stress the oddity of flash (managing pre-erased
> blocks and wear levelling).  maybe I'm being picking at semantics, but

Small random reads are actually the toughest things to deal with for 
properly burnt-in SSDs.  Sure, the underlying NAND prefers reads to 
writes, but ultimately, load-leveling across channels, packages, dies, 
and planes is much tougher for reads that are destined for specific data 
that already "lives" somewhere.  This is particularly true for the tiny 
queues available for SATA drives, where request reordering is extremely 
limited.  OTOH, small writes can easily be spread out over all of the 
internal storage in parallel because the device can "choose" where they 
go.  Anyhow, I think we are running into overly detailed, semantics 
issues here though.  The take-away is that, because of very different 
encoding between PCIe and SATA, it's inane to have SATA-controllered 
NAND in a PCIe-based flash device and transcode all the time.  Just fix 
the damn bug.  That's my story and I'm sticking to it ;).

>> Managing the raw flash at the filesystem or driver level is an option,
>> but not what I was talking about (nor what is currently in vogue right
>> now, to my knowledge).
>
> well, it's interesting that some people are talking about adding flash
> to dram dimms - very unclear to me how that would work.  but maybe they're
> merely using the dimm form-factor and proposing a new interface.

Who are these folks?  I'd love to read what they are saying -- this is 
where my next research is geared, so this is exciting to hear!

> I guess I have more respect for SATA than you do.  the Micron thing is

Oh, don't get me wrong, I love SATA...for disks.  I just am increasingly 
seeing these devices less as disks than giant, slow memory.  I just 
worry if we force SATA to keep up with these things as they rapidly 
improve we may hurt things for magnetic storage, which still has a very 
real and valuable place in the storage hierarchy.  This is a new tier, 
and we've treated it so far like a tier in storage.  Maybe now that it's 
so dang fast, it's time to rethink that.

> still just a disk interface - block shuffling.  it arguably removes one
> level of protocol reformatting, but I'm not sure how much difference
> that would make to the consumer.  a raid0 across SATA channels does a
> pretty good job of piling up IOPs...

This encoding issue takes a bigger hit on bandwidth than IOPs, fwiw. 
You're probably correct about SATA working (in the short-term at least) 
for IOPs.

> OTOH, a PCIe card that really did map flash blocks directly into the
> memory space would be quite interesting.  it just sounds tricky to get

I agree completely.  Obviously from my previous ramblings, I'm hoping we 
see more in this direction in the near future.  Sure there are hurdles, 
but I do not believe they are any harder than those we've surmounted 
with making it a disk-like device.

Best,

ellis



More information about the Beowulf mailing list