New Middleware Technology Quadruples SSD Speed?
techon.nikkeibp.co.jp
techon.nikkeibp.co.jp
The linked graphs show the big improvement in just one of many workloads and only in the case where the SSD is near-full, and don't show what disk/ftl they're comparing against. But even then these are their own hand picked benchmarks. (presumably the details will be published along with the paper at some point)
The trick itself is that they scramble the LBA addresses of blocks with some 1:1 function. But it raises the question why the FTL doesn't already do this. Which is a reason to suspect they're benchmarking against some el cheapo SSD with a dumb FTL.
[1] http://easyco.com/usb-sc.htm
[2] http://www.amazon.com/Patriot-Xporter-Boost-Flash-PEF8GUSB/d...
http://www.techsupportalert.com/content/how-optimize-usb-dri...
There's nothing on http://easyco.com/usb-sc.htm which would assure me they are doing something special.
They also mention on their page "when the light stops blinking it's over" which means exactly this: the software already consider everything copied, but the movement from the RAM to the device still goes on -- and that is not measured. Moreover, the OS can combine more writes to the same area to one to the device so you can actually observe less writes to the device. I still suspect that software to be a kind of snake oil.
Fun fact: you can get some of the same effect by using something like TrueCrypt containers on flash media as you wind up with a bit of the same behavior. The downside is that you can then only use it on a machine you have admin rights on or a machine where TrueCrypt is already installed and traveler mode enabled.
Source: I created Portable Firefox and run PortableApps.com.
This seems to be clumping many small random writes into one big linear write.
Another, much more impressive hack was TurboUSB/TurboHDD USB. +30% read speed. I think it was a custom driver that modified bulk transfer chink size.
http://www.ece.eng.wayne.edu/~sjiang/pubs/papers/ouyang14-SD...
SDF: Software-Defined Flash for Web-Scale Internet Storage Systems
Working with/as Baidu, they are using an FPGA as a custom flash controller that exposes the underlying "channels" more directly.
And IBM has maintained almost 40 years of backwards compatibility with System360.
Certain things never die.
our software to be aware of the true characteristics of the underlying hardware.
Ewww, no.That's a terrible goal, and a poor understanding of how things currently work.
Traditional spinning disks aren't dumb devices. There is a lot of stuff happening at the firmware level. Address translation, remapping of bad sectors to spare sectors, command queuing, etc.
It's complicated stuff, to put it mildly, and you're suggesting that we ought to duplicate these tasks across every app and/or driver and/or OS?
Even if (to choose a single, arbitrary application) Postgres had some kind of really specialized code that bypassed the SATA protocol and had direct access to the physical flash memory cells of a single manufacturer's SSD firmware, the odds of achieving a performance win are pretty low and the complexity of Postgres is sure to have increased sharply.
Maybe you could move up a level, and have that kind of specialization at the driver level and not the application level, but still: yuck. Hardware and software creators should focus on kicking ass at implementing protocols, not on ignoring protocols and creating compatibility nightmares.
I was thinking the filesystem layer.
> Hardware and software creators should focus on kicking ass at implementing protocols, not on ignoring protocols and creating compatibility nightmares.
I didn't mean that protocols should be ignored. I did mean that the protocols should evolve. Of course the transition period might be bit painful.
Some existing work:
Open NAND Flash Interface Working Group http://en.wikipedia.org/wiki/Open_NAND_Flash_Interface_Worki... (note the "Block Abstracted NAND" which is an example of the kind of mid-way solution I'm thinking of)
UBIFS http://en.wikipedia.org/wiki/UBIFS this also has layered approach, UBI layer for managing the raw flash and then on top of it the proper FS.
I think you really do raise an interesting point, and thank you for the links!
Promising news! Essentially removing fragmentation on the fly instead of just accepting it as a done deal on SSD
You also want to spread out your writes anyway, because each NAND cell has a limited number of program/erase cycles before it stops accepting writes.
This is why TRIM support was such a big deal a few years ago, since it let the OS communicate when a filesystem block was no longer in use, simplifying the above to erase-then-write or in some cases, just write.
[1] https://en.wikipedia.org/wiki/Write_amplification#Basic_SSD_...