Soft Updates Made Simple and Fast
- n Non-volatile Memory
Mingkai Dong, Haibo Chen Institute of Parallel and Distributed Systems, Shanghai Jiao Tong University
@ NVMW ‘18
Soft Updates Made Simple and Fast on Non-volatile Memory Mingkai - - PowerPoint PPT Presentation
Soft Updates Made Simple and Fast on Non-volatile Memory Mingkai Dong , Haibo Chen Institute of Parallel and Distributed Systems, Shanghai Jiao Tong University @ NVMW 18 Non-volatile Memory (NVM) Non-volatile Byte-addressable High
@ NVMW ‘18
2
3
A B C E D E’ C’ A’ File System Metadata Journal Area inode inode
4
A B C E D E’ C’ A’ File System Metadata Journal Area inode inode
DISK
5
DRAM (Page cache) Traditional Soft Updates
6
inode new data block block bitmap
7
inode new data block block bitmap Figures from Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem, ATC ’99
8
Inode #6 inode #4 inode #5 Inode #7 <--, #0> <A, #4> <E, #7> inode Block Directory Block inode #6 inode #4 inode #5 inode #7
inode block (in page cache)
inode #6 inode #4 inode #5 inode #7
inode block
inode #6 inode #4 inode #5 inode #7
inode block
inode #6 inode #4 inode #5 inode #7
inode block
Rollback inode #6 Rollforward inode #6 Flush block to disks
9
10
§ No false sharing
§ No synchronous cache flushes
§ Simple dependency tracking/enforcement
11
12
13
14
Directory inode indirect block 1.TxT|32 .TxT|38 2 fs-long-lon g.exe|512 l+f.dir|12
Filename Pointer inode Pointer Consistent Next Latest Next Buckets Directory inode inode Hash Len Filename
15
1 2 3 4 …
16
17
DISK DRAM (Page cache) Traditional Soft Updates
18
DISK NVM DRAM (Page cache) Soft Updates on NVM
19
NVM DRAM Soft Updates on NVM
20
Data Structures In Consistent View In Latest View inode SoupFS inode VFS inode dentry consistent next pointer latest next pointer hash table bucket latest bucket if exists B-tree root/height in SoupFS inode root/height in VFS inode
21
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM Dir File A File B File C File D
Latest Next Consistent Next
C B A
inode Filename
Dir File A File B File C File D
Latest View Consistent View
22
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM Dir File A File B File C File D
Latest Next Consistent Next
C B A
inode Filename
Dir File A File B File C File D
Latest View Consistent View
File E
23
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM
Latest Next Consistent Next
C B A
inode Filename
Latest Buckets
Dir File A File B File C File D Dir File A File B File C File D
Latest View Consistent View
File E
24
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM
Latest Next Consistent Next
C B A
inode Filename
Latest Buckets
Dir File A File B File C File D Dir File A File B File C File D
Latest View Consistent View
File E E
25
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM
Latest Next Consistent Next
C B A
inode Filename
Latest Buckets 3
Dir File A File B File C File D Dir File A File B File C File D
Latest View Consistent View
File E E
26
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM
Latest Next Consistent Next
C B A
inode Filename
Latest Buckets 3
Dir File A File B File C File D Dir File A File B File C File D
Latest View Consistent View
File E E
27
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM
Latest Next Consistent Next
C B A
inode Filename
Latest Buckets 3
Dir File A File B File C File D Dir File A File B File C File D
Latest View Consistent View
File E E
28
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM
Latest Next Consistent Next
C B A
inode Filename
Latest Buckets 3
Dir File A File B File C File D Dir File A File B File C File D
Latest View Consistent View
File E E
29
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM
Latest Next Consistent Next
C B A
inode Filename
Latest Buckets 3
Dir File A File B File C File D Dir File A File B File C File D
Latest View Consistent View
File E E
30
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM
Latest Next Consistent Next
C B A
inode Filename
Latest Buckets 3 Dir File A File B File C File D Dir File A File B File C File D
Latest View Consistent View
File E E Directory inode
31
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM
Latest Next Consistent Next
C B A
inode Filename
Latest Buckets 3 Dir File A File B File C File D Dir File A File B File C File D
Latest View Consistent View
File E E
Directory VFS inode Directory inode
32
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM
Latest Next Consistent Next
C B A
inode Filename
Latest Buckets 3 Dir File A File B File C File D Dir File A File B File C File D
Latest View Consistent View
File E E
33
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM Dir File A File B File C File D
Latest Next Consistent Next
C B A
inode Filename
Dir File A File B File C File D
Latest View Consistent View
File E Latest Buckets 3 E
34
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM Dir File A File B File C File D
Latest Next Consistent Next
C B A
inode Filename
Dir File A File B File C File D
Latest View Consistent View
File E Latest Buckets 3 E File E
35
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM Dir File A File B File C File D
Latest Next Consistent Next
C B A
inode Filename
Dir File A File B File C File D
Latest View Consistent View
File E Latest Buckets 3 E File E
36
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM Dir File A File B File C File D
Latest Next Consistent Next
C B A
inode Filename
Dir File A File B File C File D
Latest View Consistent View
File E Latest Buckets 3 E File E
37
Buckets Directory inode D 1 2 3 4 … Directory VFS inode Volatile in DRAM Updates to NVM w/o persistence guarantee Persisted in NVM Dir File A File C File D
Latest Next Consistent Next
C A
inode Filename
Dir File A File C File D
Latest View Consistent View
File E Latest Buckets 3 E File E
38
NVM DRAM Soft Updates on NVM
39
40
41
42
Operation Type Complementary Information (pointers/integers) diradd added dentry, source directory∗, overwritten inode∗ dirrem removed dentry, destination directory∗ sizechg the old and new file size attrchg nothing
Information tagged with ∗ is for rename operation.
43
dirty inode list VFS inode list next
list list next
Complimentary information VFS inode list next
list VFS inode list next
list
44
dirty inode list VFS inode list next
list list next
Complimentary information VFS inode list next
list VFS inode list next
list
45
§ Intel Xeon E5 server with two 8-core processors § 48 GB DRAM and 64 GB NVDIMM
§ SoupFS, PMFS, NOVA, Ext4-DAX, Ext4
§ ndelay() after clflush
§ Micro-benchmarks: 100 iterations of 104 create/unlink/mkdir/rmdir § Filebench and Postmark
46
57.5 57.7 5 10 15 20 create unlink mkdir rmdir Latency (us/op) Ext4 Ext4-DAX PMFS NOVA SoupFS
47
Inefficient Directory Organization
0.2 0.4 0.6 0.8 1 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 CDF Latency (us) EXT4 Ext4-DAX PMFS NOVA SoupFS
5 10 15 200 400 600 800 Latency(us) Delay (ns)
Create
NOVA SoupFS 4 8 12 16 20 200 400 600 800 Latency (us) Delay (ns)
Unlink
PMFS NOVA SoupFS
48
No effect
55 60 65 70 PMFS
↑~200% ↑~250%
50 100 150 200 250 300 350 Read Write Throughput (MB/s)
Postmark
Ext4 Ext4-DAX PMFS NOVA SoupFS
49
200 400 600 800 1000 1200 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Throughput (x1000 ops/s) Threads
Fileserver-1K
Ext4 Ext4-DAX PMFS NOVA SoupFS
50
51
52