Ask an Intel Solid State Drive Engineer

Intel recently offered our readers the opportunity to ask one of its engineers questions about Intel Solid State drives. You guys obliged with a more than enough questions. Today we get the answers.

continued...

Q. Do SSDs need to be defragmented?

A. Unfortunately this answer isn't exactly straightforward. Solid state drives generally do not organize data the way that HDDs do, or the way the operating system is expecting them to. This is done to overcome the limitations of flash memory (eg. wear leveling). For that reason, standard defrag tools will not make correct decisions about how to optimize the file system layout on an SSD. I would cautiously suggest that anyone using any SSD should disable automatic defrag on that drive and don't bother running it manually. SSDs are exceedingly fast at seeking, so fetching a seemingly scattered file is going to be nearly as fast as fetching a file that is written sequentially. A traditional HDD will fetch that same scattered file drastically slower, which was the original motivation for defragmentation.

That said, there certainly are best and worst case layouts for data organization on SSD media. Currently the firmware is responsible for keeping everything as organized as possible. There might be a new opportunity for tools to be developed that will "defragment" an SSD, but they may need inside knowledge of how each SSD works. The magnitude of the fragmentation problem is reduced though, because the performance difference between an optimal layout and worst case isn't nearly as crippling as with a HDD.

Q. Do SSDs get slower as they get older?

A. This is a complicated issue. Multiple factors can contribute to performance degradation during the life span of a SSD. Most significant is the internal fragmentation of the data stored on the flash media. Unfortunately, there is currently no way to measure it externally. Like I said above, fragmentation is not crippling to a SSD to the extent that it is for HDDs. Benchmark programs might be able to quantify the difference between optimal and fragmented internal layouts, however the user experience should not degrade substantially (at least, not with our drives). Normal usage also should not cause worst case internal fragmentation the way a benchmark program might. There are several ways that SSD optimized file systems should be able to partially alleviate this problem (see later question on file systems).

Q. Can Intel SSDs be hot swapped?

A. Yes, they fully support hot plug/unplug according to the SATA specification.

Q. What process technology is used on the Intel SSD?

A. The X18-M and X25-M drives use Intel 50nm MLC NAND flash memory, while the X25-E drive uses 50nm SLC flash.

Q. Can you comment on PCIe flash cards, like Fusion IO?

A. I can't talk about products from other companies, or potential future Intel products. However I will point out that Intel already has a PCIe flash product called Intel Turbo Memory (Robson).

Q. Is it a problem to use an SSD that is mostly full? Will it run slower?

A. Good question and a good example of a rumor that I'd like to put to rest. The actual amount of data you have stored is largely unimportant. The flash endurance management algorithms will work similarly regardless of how full the disk is. You may find that many common file systems (NTFS, FAT32, etc) don't perform very well when they get close to full, but that is a software issue and is not specific to SSDs. The only way we will start to see performance differences between mostly empty and mostly full SSDs is with SSD-aware file systems.

Q. What file system is best to use with an SSD?

A. Current file systems are pretty much equally unoptimized for SSDs. The computer industry has spent decades optimizing access patterns and file system layouts for traditional rotational magnetic media, and unfortunately SSDs change everything. Thankfully, an SSD is typically fast enough that it can behave as if it were a HDD without too much penalty. In the near future, I would like to see more focus on developing SSD-aware file systems, but it is going to require some openness from the SSD manufacturers. Microsoft is already working on SSD optimizations for Windows 7, which I find promising (link: http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/COR-T558_WH08.pptx). I especially like the new ATA "trim" command, which is being leveraged to notify the drive when a sector is no longer in use, and that storage can be reclaimed by the SSD as additional spare area for wear leveling.

Someone asked about the SSD optimization mode in btrfs, so I should take a moment here to discuss it. It would seem that their SSD optimizations are more like HDD optimizations and are actually somewhat backwards for SSDs. I would like to have that discussion (elsewhere) with the developers, but I'm not really a file system expert so I might not be the right person for that job. Hopefully someone will straighten them out. I appreciate their efforts so far.

An easy thing you can do to optimize for SSDs if you are using Linux is to disable the kernel disk IO scheduler. SSDs don't have "heads" like HDDs do so the IO reordering (elevator algorithm) is useless and probably just slows things down. I suspect Microsoft will do something similar with the Windows 7 disk scheduler, although I didn't see any mention of it in that WinHEC presentation. They did mention that Windows 7 will disable automatic defragmentation for SSDs, which supports my claim that you should disable it manually if you are using XP or Vista.

Q. How well does RAID-0 work with SSDs? Can RAID-0 be done inside the drive?

A. Let me answer the second question first and point out that SSDs are already massively parallel. The current Intel SSDs use 10 parallel channels to access the flash media, so in a way, it's already a 10-way RAID-0 on the drive.

Doing RAID-0 with multiple SSDs works very well, but make sure your RAID card is up to the task. SSDs are individually capable of enormous amounts of throughput, potentially much more than the RAID controller was designed to handle.

Q. What determines SSD performance? What are the current bottlenecks?

A. The performance of any given SSD is going to be a function of the raw flash media bandwidth, efficiency of endurance algorithms (firmware), and the host interface (SATA, PCIe, etc). It is the job of the engineers to optimize those factors to produce the best product at the lowest cost. There would be no point in building up enormous amounts of flash media bandwidth, only to be constrained by the SATA link. As with everything else in the computer industry, we will continue to see increased SSD performance as time goes on. I don't think that SSDs are necessarily "driving" SATA-III development, but you can bet that they will take advantage of SATA-III once it is available.