AniFilter: Parallel and Failure-Atomic Cuckoo Filter for Non-Volatile Memories
1
Hyungjun Oh1, Bongki Cho1, Changdae Kim2, Heejin Park1, Jiwon Seo1
1 2
AniFilter: Parallel and Failure-Atomic Cuckoo Filter for - - PowerPoint PPT Presentation
AniFilter: Parallel and Failure-Atomic Cuckoo Filter for Non-Volatile Memories Hyungjun Oh 1 , Bongki Cho 1 , Changdae Kim 2 , Heejin Park 1 , Jiwon Seo 1 1 2 1 Ou Outline NVM and AMQs Cuckoo Filter Optimizations in AniFilter
1
1 2
2
3
4
5
6
05A 0F2 0E9 000 600 27D 000 000 2F0 000 000 000 12D A15 1EF AFE 14A FA0 5B0 000 1AA 5B0 000 000 1 2 3 4 5
7
05A 0F2 0E9 000 600 27D 000 000 2F0 000 000 000 12D A15 1EF AFE 14A FA0 5B0 000 1AA 5B0 000 000
Bucket
1 2 3 4 5
Slots
8
H1(x)
05A 0F2 0E9 000 600 27D 000 000 2F0 000 000 000 12D A15 1EF AFE 14A FA0 5B0 000 1AA 5B0 000 000 1 2 3 4 5
Key x
9
H1(x)
05A 0F2 0E9 AC0 600 27D 000 000 2F0 000 000 000 12D A15 1EF AFE 14A FA0 5B0 000 1AA 5B0 000 000 1 2 3 4 5
Key x
10
H1(x)
05A 0F2 0E9 AC0 600 27D 000 000 2F0 000 000 000 12D A15 1EF AFE 14A FA0 5B0 000 1AA 5B0 000 000 1 2 3 4 5
H2(x) Key x
11
H1(x)
05A 0F2 0E9 AC0 600 27D 000 000 2F0 000 000 000 12D A15 1EF AFE 14A FA0 5B0 000 1AA 5B0 000 000 1 2 3 4 5
H2(x) Key x
AFE
evicted
12
H1(x)
05A 0F2 0E9 AC0 600 27D 000 000 2F0 000 000 000 12D A15 1EF FPX 14A FA0 5B0 000 1AA 5B0 000 000 1 2 3 4 5
H2(x) Key x
AFE
evicted
13
H1(x)
05A 0F2 0E9 AC0 600 27D 000 000 2F0 000 000 000 12D A15 1EF AFE 14A FA0 5B0 000 1AA 5B0 000 000 1 2 3 4 5
Key x H2(x)
14
H1(x)
05A 0F2 0E9 AC0 600 27D 000 000 2F0 000 000 000 12D A15 1EF AFE 14A FA0 5B0 000 1AA 5B0 000 000 1 2 3 4 5
Key x H2(x)
15
05A 0F2 0E9 AC0 600 27D 000 000 2F0 000 000 000 12D A15 1EF AFE 1 2 3
16
05A 0F2 0E9 AC0 600 27D 000 000 2F0 000 000 000 12D A15 1EF AFE 1 2 3
8 byte boundaries
17
* Anis are in the cuckoo family and have communal nests.
18
A0F D1F E49 F8A 000 27D 2A0 F09 000 000 000 000 000 A15 1EF AFE A4A DA1 EC0 F02 000 5B0 B8A CAC
19
H1 (x)
A0F D1F E49 F8A 000 27D 2A0 F09 000 000 000 000 000 A15 1EF AFE A4A DA1 EC0 F02 000 5B0 B8A CAC
Key x
20
Swapped to encode spill
A0F D1F E49 F8A 000 27D 2A0 F09 000 000 000 000 000 A15 1EF AFE A4A DA1 EC0 F02 080 B8A 5B0 CAC
Spill FPx Key x
21
22
23
24
25
Cuckoo Filter AniFilter
26
A0F D1F E49 F8A 000 27D 2A0 F09 000 000 000 000 000 A15 1EF AFE A4A DA1 EC0 F02 080 B8A 5B0 CAC 1 1 1
Occupancy flags
27
A0F D1F F8A E49 1A0 27D 2A0 F09 000 000 000 000 000 A15 1EF AFE A4A DA1 F02 EC0 080 B8A 5B0 CAC
Swapped to encode overflow
Buckets previously not overflown
28
A0F D1F F8A E49 2A0 27D 000 000 AC7 000 000 000 009 A15 1EF AFE
Type A Type B Type C Type A
29
30
0 0 8 E A 1 F 0 1 0 F 0
17 F A 1
FP(insert)
31
0 0 8 E A 1 F 0 1 0 F 0
17 F A 1
FP(insert) 17
32
0 0 8 E A 1 F 0 1 0 F 0
17 F A 1
FP(insert) 17 F A 1
33
0 0 8 E A 1 F 0 1 0 F 0
17 F A 1
FP(insert) 17 F A 1 E A 1
34
0 0 8 E A 1 F 0 1 0 F 0
17 F A 1
FP(insert) 17 F A 1 E A 1 E
35
0 0 8 E A 1 F 0 1 0 F 0
17 F A 1
FP(insert) 17 F A 1 E A 1 E 00
36
37
17 FA1 EA1 E 00 0 0 8 E A 1 F 0 1 0 F 0
Write a log record
1
38
Update high 16 bit
17 FA1 EA1 E 00 0 0 8 E A 1 F 0 1 0 F 0 0 0 8 F A 1 F 0 1 0 F 0
2
Write a log record
1
39
Crash
17 FA1 EA1 E 00 0 0 8 E A 1 F 0 1 0 F 0 0 0 8 F A 1 F 0 1 0 F 0
3 2
Write a log record
1
Update high 16 bit
40
Crash
17 FA1 EA1 E 00 0 0 8 E A 1 F 0 1 0 F 0 0 0 8 F A 1 F 0 1 0 F 0
3 2
Write a log record
1
Update high 16 bit
0 0 8 F A 1 F 0 1 0 F 0
Recovery
4
41
Crash
17 FA1 EA1 E 00 0 0 8 E A 1 F 0 1 0 F 0 0 0 8 F A 1 F 0 1 0 F 0
3 2
Write a log record
1
Update high 16 bit
0 0 8 F A 1 F 0 1 0 F 0
Recovery
4
42
Crash
17 FA1 EA1 E 00 0 0 8 E A 1 F 0 1 0 F 0 0 0 8 F A 1 F 0 1 0 F 0
3 2
Write a log record
1
Update high 16 bit
0 0 8 F A 1 F 0 1 0 F 0
Recovery
4
43
Crash
17 FA1 EA1 E 00 0 0 8 E A 1 F 0 1 0 F 0 0 0 8 F A 1 F 0 1 0 F 0
3 2
Write a log record
1
Update high 16 bit
0 0 8 F A 1 F 0 1 0 F 0
FP1 > FP2 ≠ spill status bit è Incomplete update detected
Recovery
4
44
Crash
17 FA1 EA1 E 00 0 0 8 E A 1 F 0 1 0 F 0 0 0 8 F A 1 F 0 1 0 F 0
3 2
Write a log record
1
Update high 16 bit
0 0 8 F A 1 F 0 1 0 F 0
Recovery
4
FP1 > FP2 ≠ spill status bit è Incomplete update detected
0 0 8 E A 1 F 0 1 0 F 0
45
46
lock0 lock1 lock2 8 byte boundaries
47
H1(x) Key x H2(x) lock0 lock1 lock2
48
49
50
*Used AppDirect mode
51
52
*Intel Optane DC PM, 10 threads
Insertion Successful Lookup Random Lookup
AniFilter upto 10.7x faster (2.6x faster on avg) for insertion
AniFilter Cuckoo Filter
53
*Intel Optane DC PM
Insertion Successful Lookup Random Lookup
54
*Quartz emulation, 75% load factor
Insertion Successful Lookup Random Lookup
read/write latency read/write latency read/write latency
55
56
57
58