problem statement a solid-state drive (ssd) is a non-volatile storage device that uses flash memory...

Post on 14-Dec-2015

212 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PROBLEM STATEMENT

A solid-state drive (SSD) is a non-volatile storage device that uses flash memory rather than a magnetic disk to store data. SSDs provide vastly improved read latency and random read/write access times relative to their mechanical hard disk counterparts. Unfortunately, SSDs must read and erase large blocks of data before performing any write to that block, leading to reduced write performance. Most modern file systems are optimized based on assumptions about the backing storage device that are poorly matched to SSDs.

Henry Cook, Jon Ellithorpe, Laura Keys, Andrew Waterman

RELATED WORK

Previous file systems for Linux targeting NAND Flash devices have assumed a MTD driver interface, whereas modern SSDs expose a SATA interface. Sun Microsystems’s ZFS allows hybrid storage pools with both types of drives, and Btrfs will provide SSD optimizations when completed.

METHODOLOGY

We made a variety of modifications to the baseline file system in order to leverage the improved latency and random access performance of the SSDs. We then evaluated each of these improvements using both a synthetic and a realistic workload. We also demonstrate the effect of SSD awareness by testing our file system on an HDD as well.

SDD OPTIMIZATIONS

FUTURE WORK

• Additional targeted benchmarks• SSD-targeted logging for improved performance on restart after failure• Comparison with Btrfs SSD optimizations when the file system has been completed

IotaFS: Exploring File System Optimizations for SSDs

ERASE BLOCK AWARENESS

LARGER DISK BLOCKS WRITE THROUGH BUFFER

COPY-ON-WRITE

BENCHMARK RESULTS

Bonnie++ Random Seek Speed (seeks/sec)

Bonnie++ Sequential Reads and Writes (KB/s)

SSD PARAMETERS

Size: 32 GBRead BW: up to 250 MB/sWrite BW: up to 170 MB/sRead Latency: 75 sErase Block Size: 128KBActive Power: 2.4W

BENCHMARKS

Bonnie++: Tests sequential/random reads/writes to 16 1GB files

Tarballing Linux kernel: Many random reads,one large sequential write

Tarballing the Linux Kernel (time to complete)

Bonnie++ CPU Utilization

Lines of source code

Many file systems buffer writes in order to mitigate the seek penalty paid when accessing an HDD. We force the buffer to flush to the backing SSD on every write, since there is no seek penalty paid for random writes to an SSD.

Some file systems use only small disk blocks. Doing so may be detrimental to SSD performance depending on the block size of the device. We are testing a variety of block sizes to measure the impact of this parameter.

SSDs can only write data by erasing entire 100KB+ blocks and then rewriting them. We allocate disk blocks to files so as to localize writes to the same file within one erase block, in the hope that locality results in fewer erases.

This policy creates a new copy of a block every time one is written. By coalescing pending writes and writing copies to a single block limit the number of erases required. Fragmentation should have a limited impact on SSD performance.

IotaFS INODE TREE

IotaFS DISK LAYOUT

top related