Jeong-Uk Kang* , Jeeseok Hyun, Hyunjoo Maeng, and Sangyeun Cho
Memory Solutions Lab. Memory Division, Samsung Electronics Co., Ltd
The Multi-streamed Solid-State Drive Jeong-Uk Kang* , Jeeseok Hyun, - - PowerPoint PPT Presentation
The Multi-streamed Solid-State Drive Jeong-Uk Kang* , Jeeseok Hyun, Hyunjoo Maeng, and Sangyeun Cho Memory Solutions Lab. Memory Division, Samsung Electronics Co., Ltd SSD as a Drop-in Replacement of HDD SSD shares a common interface with HDD
Jeong-Uk Kang* , Jeeseok Hyun, Hyunjoo Maeng, and Sangyeun Cho
Memory Solutions Lab. Memory Division, Samsung Electronics Co., Ltd
Generic Block Layer Generic Block Layer Generic Block Layer Generic Block Layer
Application OS File System
Application OS File System
SATA Logical Block Address
Read_Page() Write_Page() Erase_Block() Copy_Page()
Read_Page() Write_Page() Erase_Block() Copy_Page()
Read_Sector() Write_Sector()
Read_Sector() Write_Sector()
Generic Block Layer Generic Block Layer Generic Block Layer Generic Block Layer
Application OS File System
Application OS File System
Sector base Logical Block Address
NAND Flash Memory NAND Flash Memory
Disk
NAND Flash Memory
?
NAND Flash Memory
…
Page Page Page Page
Block
Page Page Page Page
Block
Page Write Page Read Block Erase
Application OS (Sector based) File System
FTL Generic Block Layer Generic Block Layer
Valid data1 Valid data2 Invalid data Invalid data
Block A
Invalid data Invalid data Valid data3 Valid data4
Block B
Valid data1 Valid data2 Valid data3 Valid data4
Page Page Page Page Block A Page Page Page Page Block B
ERASED ERASED ERASED ERASED ERASED ERASED ERASED ERASED
0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1 2 3 4 5 6 7 8 9 10111213141516171819202122232425262728293031323334353637383940
Cassandra Update Throughput (ops/sec) Time
Throughput
0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1 2 3 4 5 6 7 8 9 10111213141516171819202122232425262728293031323334353637383940
Cassandra Update Throughput (ops/sec) Time
0.5 1 1.5 2 2.5 3 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1 2 3 4 5 6 7 8 9 10111213141516171819202122232425262728293031323334353637383940
Valid Pages copied (ops/sec) Cassandra Update Throughput (ops/sec)
Throughput GC overhead
(Minutes)
Application OS File System
Generic Block Layer Generic Block Layer
NAND Flash memory FTL
Co‐exists with the existing block layer General & concrete interface Multi‐streaming Interface Host‐provided stream information guides desirable data placement within SSD!
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Update Throughput (ops/sec)
Time (Minutes)
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Update Throughput (ops/sec)
Time (Minutes)
Proposed Traditional SSD
Write optimization in SSD
Our approach Case study
Experimental setup Results
Page Page Page Page
Block
Page Page Page Page
Block
Page Page Page Page
Block
Page Page Page Page
Block
Page Page Page Page
Block
Page Page Page Page
Block
Page Page Page Page
Block
Page Page Page Page
Block
Page Page Page Page
Block
Write to stream 1 Write to stream 2 Write to stream 3
Data Lifetime? Lifetime 1 Lifetime 2 Lifetime 3
Generic Block Layer Generic Block Layer
NAND Flash Memory
Data1 Data3 Page Page Block Data2 Data7 Data9 Page Block
FTL
Stream ID = 1
Data10 Data12 Data13 Page Block
Stream ID = 3 Stream ID = 2 Application Data2 Data1 Data3 Data4 Data5 Data10
Provide information about data lifetime
StreamID
Place data with similar lifetime into the same erase unit
Data13 1 1 2 2 3 3 3 2
1 20 100 21 1
Block 0 Block 1 Block 2
1 20 100 1 21 1 20 22 1 20 22 1 1 20 1 20 100 21 1
Block 0 Block 1 Block 2
22 1 20 1 20 100 1 21 1 20 22 1 20 1
1 1 1 1 1 1
Write Request
Memory
Commit Log
Memtable
SSTable 1
K1 K2
SSTable 2
K1 K3
SSTable 3
K2 K3
SSTable 4
K1 K3
SSTable 5
K1 K2 K3
SSTable 6 SSTable 7 SSTable 21
Flushing
Memory
Commit Log
Memtable
SSTable 1
K1 K2
SSTable 2
K1 K3
SSTable 3
K2 K3
SSTable 4
K1 K3
SSTable 5
K1 K2 K3
SSTable 6 SSTable 7 SSTable 21
metadata, journal … System
System data Write Commit‐log Write Compaction data write Flushing data
Memory
Commit Log
Memtable
SSTable 1
K1 K2
SSTable 2
K1 K3
SSTable 3
K2 K3
SSTable 4
K1 K3
SSTable 5
K1 K2 K3
SSTable 6 SSTable 7 SSTable 21
metadata, journal … System
System data Write Commit‐log Write Compaction data write Flushing data
Memory
Commit Log
Memtable
SSTable 1
K1 K2
SSTable 2
K1 K3
SSTable 3
K2 K3
SSTable 4
K1 K3
SSTable 5
K1 K2 K3
SSTable 6 SSTable 7 SSTable 21
metadata, journal … System
System data Write Commit‐log Write Compaction data write Flushing data
1 1 1
Memory
Commit Log
Memtable
SSTable 1
K1 K2
SSTable 2
K1 K3
SSTable 3
K2 K3
SSTable 4
K1 K3
SSTable 5
K1 K2 K3
SSTable 6 SSTable 7 SSTable 21
metadata, journal … System
System data Write Commit‐log Write Compaction data write Flushing data
1 2 2
Memory
Commit Log
Memtable
SSTable 1
K1 K2
SSTable 2
K1 K3
SSTable 3
K2 K3
SSTable 4
K1 K3
SSTable 5
K1 K2 K3
SSTable 6 SSTable 7 SSTable 21
metadata, journal … System
System data Write Commit‐log Write Compaction data write Flushing data
1 2 3
Compaction data write
4
Application VFS EXT4 Device fadvise (fd, Stream ID) inode field = Stream ID Store Stream ID In buffer head SSD
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Update Throughput (ops/sec)
Time (Minutes)
Conventional (TRIM off)
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Update Throughput (ops/sec)
Time (Minutes)
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Update Throughput (ops/sec)
Time (Minutes)
Conventional (TRIM off)
Conventional (TRIM on)
TRIM gives non‐trivial improvement
But still far from ideal
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Update Throughput (ops/sec)
Time (Minutes)
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Update Throughput (ops/sec)
Time (Minutes)
Conventional (TRIM off) Conventional (TRIM on)
Multi‐App
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Update Throughput (ops/sec)
Time (Minutes)
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Update Throughput (ops/sec)
Time (Minutes)
Conventional (TRIM off) Conventional (TRIM on) Multi‐App
Multi‐Log
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Update Throughput (ops/sec)
Time (Minutes)
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Update Throughput (ops/sec)
Time (Minutes)
Conventional (TRIM off) Conventional (TRIM on) Multi‐App Multi‐Log
Multi‐Data
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Time (Minutes)
Conventional (TRIM off)
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Time (Minutes)
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Valid page copied (ops/sec)
Time (Minutes)
Conventional (TRIM off)
Conventional (TRIM on)
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Time (Minutes)
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Valid page copied (ops/sec)
Time (Minutes)
Conventional (TRIM off) Conventional (TRIM on)
Multi‐App
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Time (Minutes)
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Valid page copied (ops/sec)
Time (Minutes)
Conventional (TRIM off) Conventional (TRIM on) Multi‐App
Multi‐Log
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Valid page copied (ops/sec)
Time (Minutes)
0.2 0.4 0.6 0.8 1 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Time (Minutes)
Conventional (TRIM off) Conventional (TRIM on) Multi‐App Multi‐Log
Multi‐Data
99 99.1 99.2 99.3 99.4 99.5 99.6 99.7 99.8 99.9 100 25 50 75 100 125 150 175
Cumulated distribution (%)
Latency (us)
99 99.1 99.2 99.3 99.4 99.5 99.6 99.7 99.8 99.9 100 25 50 75 100 125 150 175
Cumulated distribution (%)
Latency (us)
Conventional (TRIM on) Multi‐App Multi‐Log
Multi‐Data
Multi‐stream enhanced Block Layer Multi‐stream enhanced Block Layer
NAND Flash memory FTL