From 6ace656a0a9d4173e7364f7ff07fde2c97172b2d Mon Sep 17 00:00:00 2001 From: yzr95924 Date: Wed, 25 Sep 2024 01:53:07 +0800 Subject: [PATCH] UPDATE: update new paper --- README.md | 145 +++++++++---- paper_figure/image-20240805014222417.png | Bin 0 -> 80683 bytes paper_figure/image-20240807011652739.png | Bin 0 -> 60397 bytes .../deduplication/post_dedup/IDEA-FAST'24.md | 195 ++++++++++++++++++ .../OC_ZNS/ZNS_SSD_Cache-HotStorage'24.md | 140 +++++++++++++ 5 files changed, 435 insertions(+), 45 deletions(-) create mode 100644 paper_figure/image-20240805014222417.png create mode 100644 paper_figure/image-20240807011652739.png create mode 100644 storage_paper_note/deduplication/post_dedup/IDEA-FAST'24.md create mode 100644 storage_paper_note/general_storage/OC_ZNS/ZNS_SSD_Cache-HotStorage'24.md diff --git a/README.md b/README.md index bea343c..609f2f7 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ A reading list related to storage systems, including data deduplication, erasure 22. *The Dilemma between Deduplication and Locality: Can Both be Achieved?*---FAST'21 ([link](https://www.usenix.org/system/files/fast21-zou.pdf)) [summary](https://yzr95924.github.io/paper_summary/MFDedup-FAST'21.html) 23. *SLIMSTORE: A Cloud-based Deduplication System for Multi-version Backups*----ICDE'21 ([link](http://www.cs.utah.edu/~lifeifei/papers/slimstore-icde21.pdf)) 24. *Improving the Performance of Deduplication-Based Backup Systems via Container Utilization Based Hot Fingerprint Entry Distilling*----ACM TOS'21 ([link](https://dl.acm.org/doi/full/10.1145/3459626)) +25. *BURST: A Chunk-Based Data Deduplication System with Burst-Encoded Fingerprint Matching*----MSST'24 ([link](https://www.msstconference.org/MSST-history/2024/Papers/msst24-1.2.pdf)) ### Restore Performances @@ -158,6 +159,7 @@ A reading list related to storage systems, including data deduplication, erasure 22. *Palantir: Hierarchical Similarity Detection for Post-Deduplication Delta Compression*----ASPLOS'24 ([link](https://qiangsu97.github.io/files/asplos24spring-final6.pdf)) 23. *DedupSearch: Two-Phase Deduplication Aware Keyword Search*----FAST'22 ([link](https://www.usenix.org/system/files/fast22-elias.pdf)) [summary](https://yzr95924.github.io/paper_summary/DedupSearch-FAST'22.html) 24. *Physical vs. Logical Indexing with IDEA: Inverted Deduplication-Aware Index*----FAST'24 ([link](https://www.usenix.org/system/files/fast24-levi.pdf)) [summary](https://yzr95924.github.io/paper_summary/IDEA-FAST'24.html) +25. *Is Low Similarity Threshold A Bad Idea in Delta Compression?*----HotStorage'24 ([link](https://henryhxu.github.io/share/hongming-hotstorage24.pdf)) ### Memory && Block-Layer Deduplication @@ -361,6 +363,11 @@ A reading list related to storage systems, including data deduplication, erasure 1. *How the Great Firewall of China Detects and Blocks Fully Encrypted Traffic*----USENIX Security'23 ([link](https://people.cs.umass.edu/~amir/papers/UsenixSecurity23_Encrypted_Censorship.pdf)) ## General Storage + +### HDD, SMR + +1. *Revisiting HDD Rules of Thumb: 1/3 Is Not (Quite) the Average Seek Distance*----MSST'24 ([link](https://www.msstconference.org/MSST-history/2024/Papers/msst24-1.1.pdf)) + ### Distributed Storage System 1. *MapReduce: Simplified Data Processing on Large Clusters*----OSDI'04 ([link](https://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf)) 2. *Cumulus: Filesystem Backup to the Cloud*----FAST'09 ([link](https://www.usenix.org/legacy/event/fast09/tech/full_papers/vrable/vrable.pdf)) [summary](https://yzr95924.github.io/paper_summary/Cumulus-FAST'09.html) @@ -381,14 +388,15 @@ A reading list related to storage systems, including data deduplication, erasure 1. *TinyLFU: A Highly Efficient Cache Admission Policy*----ACM TOS'17 ([link](https://arxiv.org/pdf/1512.00727.pdf)) 2. *Hyperbolic Caching: Flexible Caching for Web Applications*----USENIX ATC'17 ([link](https://www.cs.princeton.edu/~mfreed/docs/hyperbolic-atc17.pdf)) -3. *It’s Time to Revisit LRU vs. FIFO*----HotStorage'20 ([link](https://www.usenix.org/system/files/hotstorage20_paper_eytan.pdf)) [summary](https://yzr95924.github.io/paper_summary/Cache-HotStorage'20.html) [trace](http://iotta.snia.org/traces/key-value) -4. *The CacheLib Caching Engine: Design and Experiences at Scale*----OSDI'20 ([link](https://www.usenix.org/system/files/osdi20-berg.pdf)) -5. *Unifying the Data Center Caching Layer — Feasible? Profitable?*----HotStorage'21 ([link](https://dl.acm.org/doi/pdf/10.1145/3465332.3470884)) -6. *Learning Cache Replacement with Cacheus*----FAST'21 ([link](https://www.usenix.org/system/files/fast21-rodriguez.pdf)) -7. *Kangaroo: Caching Billions of Tiny Objects on Flash*----SOSP'21 ([link](https://jasony.me/publications/sosp21-kangaroo.pdf)) -8. *Segcache: a Memory-efficient and Scalable In-memory Key-value Cache for Small Objects*----NSDI'21 ([link](https://jasony.me/publications/nsdi21-segcache.pdf)) -9. *FarReach: Write-back Caching in Programmable Switches*----USENIX ATC'23 ([link](http://www.cse.cuhk.edu.hk/~pclee/www/pubs/atc23.pdf)) -10. *FIFO can be Better than LRU: the Power of Lazy Promotion and Quick Demotion*----HotOS'23 ([link](https://www.pdl.cmu.edu/PDL-FTP/Storage/Yang-FIFO-HotOS23.pdf)) +3. *Flashield: a Hybrid Key-value Cache that Controls Flash Write Amplification*----USENIX NSDI'19 ([link]()) +4. *It’s Time to Revisit LRU vs. FIFO*----HotStorage'20 ([link](https://www.usenix.org/system/files/hotstorage20_paper_eytan.pdf)) [summary](https://yzr95924.github.io/paper_summary/Cache-HotStorage'20.html) [trace](http://iotta.snia.org/traces/key-value) +5. *The CacheLib Caching Engine: Design and Experiences at Scale*----OSDI'20 ([link](https://www.usenix.org/system/files/osdi20-berg.pdf)) +6. *Unifying the Data Center Caching Layer — Feasible? Profitable?*----HotStorage'21 ([link](https://dl.acm.org/doi/pdf/10.1145/3465332.3470884)) +7. *Learning Cache Replacement with Cacheus*----FAST'21 ([link](https://www.usenix.org/system/files/fast21-rodriguez.pdf)) +8. *Kangaroo: Caching Billions of Tiny Objects on Flash*----SOSP'21 ([link](https://jasony.me/publications/sosp21-kangaroo.pdf)) +9. *Segcache: a Memory-efficient and Scalable In-memory Key-value Cache for Small Objects*----NSDI'21 ([link](https://jasony.me/publications/nsdi21-segcache.pdf)) +10. *FarReach: Write-back Caching in Programmable Switches*----USENIX ATC'23 ([link](http://www.cse.cuhk.edu.hk/~pclee/www/pubs/atc23.pdf)) +11. *FIFO can be Better than LRU: the Power of Lazy Promotion and Quick Demotion*----HotOS'23 ([link](https://www.pdl.cmu.edu/PDL-FTP/Storage/Yang-FIFO-HotOS23.pdf)) ### Hash @@ -402,18 +410,15 @@ A reading list related to storage systems, including data deduplication, erasure 1. *A Lock-Free, Cache-Efficient Multi-Core Synchronization Mechanism for Line-Rate Network Traffic Monitoring*----IPDPS'10 ([link](https://www.cse.cuhk.edu.hk/~pclee/www/pubs/ipdps10.pdf)) 2. *Lock-Free Collaboration Support for Cloud Storage Services with Operation Inference and Transformation*----FAST'20 ([link](https://www.usenix.org/system/files/fast20-chen_jian.pdf)) -### SSD, NVMe +### SSD, Flash 1. *Design Tradeoffs for SSD Performance*----USENIX ATC'08 ([link](https://www.usenix.org/legacy/events/usenix08/tech/full_papers/agrawal/agrawal.pdf)) 1. *Design Tradeoffs for SSD Reliability*----USENIX ATC'19 ([link](https://www.usenix.org/system/files/fast19-kim-bryan.pdf)) 1. *The Tail at Store: A Revelation from Millions of Hours of Disk and SSD Deployments*----FAST'16 ([link](https://www.usenix.org/system/files/conference/fast16/fast16-papers-hao.pdf)) 1. *The Unwritten Contract of Solid State Drives*----EuroSys'17 ([link](https://dl.acm.org/doi/pdf/10.1145/3064176.3064187)) -1. *ZNS: Avoiding the Block Interface Tax for Flash-based SSDs*----USENIX ATC'21 ([link](https://www.usenix.org/system/files/atc21-bjorling.pdf)) [code](https://github.com/westerndigitalcorporation/zenfs) -1. *ZNS+: Advanced Zoned Namespace Interface for Supporting In-Storage Zone Compaction*----OSDI'21 ([link](https://www.usenix.org/system/files/osdi21-han.pdf)) 1. *The CASE of FEMU: Cheap, Accurate, Scalable and Extensible Flash Emulator*----FAST'18 ([link](https://www.usenix.org/system/files/conference/fast18/fast18-li.pdf)) [summary](https://yzr95924.github.io/paper_summary/FEMU-FAST'18.html) 1. *From blocks to rocks: a natural extension of zoned namespaces*----HotStorage'21 ([link](https://dl.acm.org/doi/pdf/10.1145/3465332.3470870)) 1. *Don’t Be a Blockhead: Zoned Namespaces Make Work on Conventional SSDs Obsolete*----HotOS'21 ([link](https://sigops.org/s/conferences/hotos/2021/papers/hotos21-s07-stavrinos.pdf)) [summary](https://yzr95924.github.io/paper_summary/BlockHead-HotOS'21.html) -1. Zone Append: A New Way of Writing to Zoned Storage----Vault'20 ([link](https://www.usenix.org/system/files/vault20_slides_bjorling.pdf)) 1. *What Systems Researchers Need to Know about NAND Flash*----HotStorage'13 ([link](https://www.usenix.org/system/files/conference/hotstorage13/hotstorage13-desnoyers.pdf)) 1. *Caveat-Scriptor: Write Anywhere Shingled Disks*----HotStorage'15 ([link](https://www.usenix.org/system/files/conference/hotstorage15/hotstorage15-kadekodi.pdf)) 1. *Towards an Unwritten Contract of Intel Optane SSD*----HotStorage'19 ([link](https://www.usenix.org/system/files/hotstorage19-paper-wu-kan.pdf)) @@ -428,28 +433,21 @@ A reading list related to storage systems, including data deduplication, erasure 1. *NVMeVirt: A Versatile Software-defined Virtual NVMe Device*----FAST'23 ([link](https://www.usenix.org/system/files/fast23-kim.pdf)) 1. *Excessive SSD-Internal Parallelism Considered Harmful*----HotStorage'23 ([link](https://dl.acm.org/doi/pdf/10.1145/3599691.3603412)) 1. *Is Garbage Collection Overhead Gone? Case study of F2FS on ZNS SSDs*----HotStorage'23 ([link](https://dl.acm.org/doi/pdf/10.1145/3599691.3603409)) - -### File system - -1. *Scale and Concurrency of GIGA+: File System Directories with Millions of Files*----FAST''11 ([link](https://www.usenix.org/legacy/event/fast11/tech/full_papers/PatilNew.pdf)) -2. *Journaling of Journal Is (Almost) Free*----FAST'14 ([link](https://www.usenix.org/system/files/conference/fast14/fast14-paper_shen.pdf)) -3. *F2FS: A New File System for Flash Storage*----FAST'15 ([link](https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf)) -4. *POSIX is Dead! Long Live... errr... What Exactly?*----HotStorage'15 ([link](https://www.fsl.cs.stonybrook.edu/docs/cosy-hotos/hotstorage17posux.pdf)) -5. *BetrFS: A Right-Optimized Write-Optimized File System*----FAST'15 ([link](https://www.usenix.org/system/files/conference/fast15/fast15-paper-jannen_william.pdf)) -6. *File Systems Fated for Senescence? Nonsense, Says Science!*----FAST'17 ([link](https://www.usenix.org/system/files/conference/fast17/fast17-conway.pdf)) -7. *To FUSE or Not to FUSE: Performance of User-Space File Systems*----FAST'17 ([link](https://www.usenix.org/system/files/conference/fast17/fast17-vangoor.pdf)) -8. *iJournaling: Fine-Grained Journaling for Improving the Latency of Fsync System Call*----USENIX ATC'17 ([link](https://www.usenix.org/system/files/conference/atc17/atc17-park.pdf)) -9. *The Full Path to Full-Path Indexing*----FAST'18 ([link](https://www.usenix.org/system/files/conference/fast18/fast18-zhan.pdf)) -10. *SplitFS: persistent-memory file system that reduces software overhead*----SOSP'19 ([link](https://www.cs.utexas.edu/~vijay/papers/sosp19-splitfs.pdf)) -11. *EROFS: A Compression-friendly Readonly File System for Resource-scarce Devices*----USENIX ATC'19 ([link](https://www.usenix.org/system/files/atc19-gao.pdf)) -12. *Performance and Resource Utilization of FUSE User-Space File Systems*----ACM TOS'19 ([link](https://dl.acm.org/doi/10.1145/3310148)) -13. *Filesystem Aging: It's more Usage than Fullness*----HotStorage'19 ([link](https://www.cs.unc.edu/~porter/pubs/hotstorage19-paper-conway.pdf)) -14. *How to Copy Files*----FAST'20 ([link](https://www.usenix.org/system/files/fast20-zhan.pdf)) -15. *XFUSE: An Infrastructure for Running Filesystem Services in User Space*----USENIX ATC'21 ([link](https://www.usenix.org/system/files/atc21-huai.pdf)) -16. *WineFS: a hugepage-aware file system for persistent memory that ages gracefully*----SOSP'21 ([link](https://www.cs.utexas.edu/~vijay/papers/winefs-sosp21.pdf)) -17. *LineFS: Efficient SmartNIC Offload of a Distributed File System with Pipeline Parallelism*----SOSP'21 ([link](https://dl.acm.org/doi/pdf/10.1145/3477132.3483565)) -18. *BetrFS: A Compleat File System for Commodity SSDs*----EuroSys'22 ([link](https://dl.acm.org/doi/pdf/10.1145/3492321.3519571)) -19. *Survey of Distributed File System Design Choices*----ACM TOS'22 ([link](https://dl.acm.org/doi/pdf/10.1145/3465405)) +1. *ZapRAID: Toward High-Performance RAID for ZNS SSDs via Zone Append*----ApSys'23 ([link](https://www.cse.cuhk.edu.hk/~pclee/www/pubs/apsys23.pdf)) +1. *BypassD: Enabling fast userspace access to shared SSDs*----ASPLOS'24 ([link](https://dl.acm.org/doi/pdf/10.1145/3617232.3624854)) + +### Open-Channel SSD, ZNS, SMR + +1. *LightNVM: The Linux Open-Channel SSD Subsystem*----USENIX FAST'17 ([link](https://www.usenix.org/system/files/conference/fast17/fast17-bjorling.pdf)) +2. *ZoneAlloy: Elastic Data and Space Management for Hybrid SMR Drives*----HotStorage'19 ([link](https://www.usenix.org/system/files/hotstorage19-paper-wu-fenggang.pdf)) +3. *Zone Append: A New Way of Writing to Zoned Storage*----Vault'20 ([link](https://www.usenix.org/system/files/vault20_slides_bjorling.pdf)) +4. *ZNS: Avoiding the Block Interface Tax for Flash-based SSDs*----USENIX ATC'21 ([link](https://www.usenix.org/system/files/atc21-bjorling.pdf)) [code](https://github.com/westerndigitalcorporation/zenfs) +5. *ZNS+: Advanced Zoned Namespace Interface for Supporting In-Storage Zone Compaction*----OSDI'21 ([link](https://www.usenix.org/system/files/osdi21-han.pdf)) +6. *RAIZN: Redundant Array of Independent Zoned Namespaces*----ASPLOS'23 ([link](https://dl.acm.org/doi/pdf/10.1145/3575693.3575746)) +7. *An Efficient Order-Preserving Recovery for F2FS with ZNS SSD*----HotStorage'23 ([link](https://www.hotstorage.org/2023/papers/hotstorage23-final108.pdf)) +8. *Is Garbage Collection Overhead Gone? Case study of F2FS on ZNS SSDs*----HotStorage'23 ([link](https://huaicheng.github.io/p/hotstorage23-zgc.pdf)) +9. *A Free-Space Adaptive Runtime Zone-Reset Algorithm for Enhanced ZNS Efficiency*----HotStorage'23 ([link](https://discos.sogang.ac.kr/file/2023/intl_conf/HotStorage_2023_S_Byeon.pdf)) +10. *Can ZNS SSDs be Better Storage Devices for Persistent Cache?*----HotStorage'24 ([link](https://dl.acm.org/doi/pdf/10.1145/3655038.3665946)) [summary](https://yzr95924.github.io/paper_summary/ZNS_SSD_Cache-HotStorage'24.html) ### Non-volatile Memory @@ -518,14 +516,71 @@ A reading list related to storage systems, including data deduplication, erasure 1. *GPFS: A Shared-Disk File System for Large Computing Clusters*----FAST'02 ([link](https://www.usenix.org/legacy/publications/library/proceedings/fast02/full_papers/schmuck/schmuck.pdf)) 2. *Efficient Object Storage Journaling in a Distributed Parallel File System*----FAST'10 ([link](https://www.usenix.org/legacy/events/fast10/tech/full_papers/oral.pdf)) -3. *Taking back control of HPC file systems with Robinhood Policy Engine*----arxiv'15 ([link](https://arxiv.org/abs/1505.01448)) -4. *Lustre Lockahead: Early Experience and Performance using Optimized Locking*----CUG'17 ([link](https://cug.org/proceedings/cug2017_proceedings/includes/files/pap141s2-file1.pdf)) -5. *LPCC: Hierarchical Persistent Client Caching for Lustre*----SC'19 ([link](https://dl.acm.org/doi/pdf/10.1145/3295500.3356139)) [slides](https://sc19.supercomputing.org/proceedings/tech_paper/tech_paper_files/pap112s5.pdf) -6. *A Performance Study of Lustre File System Checker: Bottlenecks and Potentials*----MSST'19 ([link](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8890077&casa_token=uy7uU5C8DQ4AAAAA:9Sp-zG-QWKhgkn5QkmpxDTuHmGljhJJEoq_c9bzVSYb9gUD5eXk2orJYhnvLdQE0HY3RaIRG_9zDYA)) -7. *I/O Characterization and Performance Evaluation of BeeGFS for Deep Learning*----ICPP'19 ([link](https://dl.acm.org/doi/pdf/10.1145/3337821.3337902)) -8. *HadaFS: A File System Bridging the Local and Shared Burst Buffer for Exascale Supercomputers*----FAST'23 ([link](https://www.usenix.org/system/files/fast23-he.pdf)) -9. *Accelerating I/O performance of ZFS-based Lustre file system in HPC environment*----Journal of Supercomputing'23 ([link](https://link.springer.com/article/10.1007/s11227-022-04966-7)) -10. *MetaWBC: POSIX-compliant Metadata Write-back Caching for Distributed File Systems*----SC'22 ([link](https://dl.acm.org/doi/pdf/10.5555/3571885.3571959)) -11. *Xfast: Extreme File Attribute Stat Acceleration for Lustre*----SC'23 ([link](https://dl.acm.org/doi/10.1145/3581784.3607080)) [slides](http://lustrefs.cn/wp-content/uploads/2023/11/CLUG2023_12_Emoly_Liu_Qian_Yingjin_Xfast_Extreme_File_Attribute_Stat_Acceleration_for_Lustre.pdf) -12. *The I/O Trace Initiative: Building a Collaborative I/O Archive to Advance HPC*----SC-workshop'23 ([link](https://salkhordeh.de/publication/trace-pdsw/trace-pdsw.pdf)) -13. *Combining Buffered I/O and Direct I/O in Distributed File Systems*----FAST'24 ([link](https://www.usenix.org/system/files/fast24-qian.pdf)) [slides](https://www.usenix.org/system/files/fast24_slides-qian.pdf) [summary](https://yzr95924.github.io/paper_summary/Lustre_BIO_DIO-FAST'24.html) +3. *Tips and Tricks for Diagnosing Lustre Problems on Cray Systems*----CUG'11 ([link](https://cug.org/5-publications/proceedings_attendee_lists/CUG11CD/pages/1-program/final_program/Wednesday/12A-Spitz-Paper.pdf)) +4. *Lustre Resiliency: Understanding Lustre Message Loss and Tuning for Resiliency*----CUG'15 ([link](https://cug.org/proceedings/cug2015_proceedings/includes/files/pap101.pdf)) +5. *Taking back control of HPC file systems with Robinhood Policy Engine*----arxiv'15 ([link](https://arxiv.org/abs/1505.01448)) +6. *Lustre Lockahead: Early Experience and Performance using Optimized Locking*----CUG'17 ([link](https://cug.org/proceedings/cug2017_proceedings/includes/files/pap141s2-file1.pdf)) +7. *LPCC: Hierarchical Persistent Client Caching for Lustre*----SC'19 ([link](https://dl.acm.org/doi/pdf/10.1145/3295500.3356139)) [slides](https://sc19.supercomputing.org/proceedings/tech_paper/tech_paper_files/pap112s5.pdf) +8. *A Performance Study of Lustre File System Checker: Bottlenecks and Potentials*----MSST'19 ([link](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8890077&casa_token=uy7uU5C8DQ4AAAAA:9Sp-zG-QWKhgkn5QkmpxDTuHmGljhJJEoq_c9bzVSYb9gUD5eXk2orJYhnvLdQE0HY3RaIRG_9zDYA)) +9. *I/O Characterization and Performance Evaluation of BeeGFS for Deep Learning*----ICPP'19 ([link](https://dl.acm.org/doi/pdf/10.1145/3337821.3337902)) +10. *HadaFS: A File System Bridging the Local and Shared Burst Buffer for Exascale Supercomputers*----FAST'23 ([link](https://www.usenix.org/system/files/fast23-he.pdf)) +11. *Accelerating I/O performance of ZFS-based Lustre file system in HPC environment*----Journal of Supercomputing'23 ([link](https://link.springer.com/article/10.1007/s11227-022-04966-7)) +12. *MetaWBC: POSIX-compliant Metadata Write-back Caching for Distributed File Systems*----SC'22 ([link](https://dl.acm.org/doi/pdf/10.5555/3571885.3571959)) +13. *Xfast: Extreme File Attribute Stat Acceleration for Lustre*----SC'23 ([link](https://dl.acm.org/doi/10.1145/3581784.3607080)) [slides](http://lustrefs.cn/wp-content/uploads/2023/11/CLUG2023_12_Emoly_Liu_Qian_Yingjin_Xfast_Extreme_File_Attribute_Stat_Acceleration_for_Lustre.pdf) +14. *The I/O Trace Initiative: Building a Collaborative I/O Archive to Advance HPC*----SC-workshop'23 ([link](https://salkhordeh.de/publication/trace-pdsw/trace-pdsw.pdf)) +15. *Combining Buffered I/O and Direct I/O in Distributed File Systems*----FAST'24 ([link](https://www.usenix.org/system/files/fast24-qian.pdf)) [slides](https://www.usenix.org/system/files/fast24_slides-qian.pdf) [summary](https://yzr95924.github.io/paper_summary/Lustre_BIO_DIO-FAST'24.html) + +## File System + +### File Fragmentation + +1. *The Effects of Filesystem Fragmentation*----OLS'06 ([link](https://www.landley.net/kdocs/ols/2006/ols2006v1-pages-193-208.pdf)) +2. *Ext4 Block and Inode Allocator Improvements*----OLS'08 ([link](https://www.kernel.org/doc/ols/2008/ols2008v1-pages-263-274.pdf)) +3. *File Systems Fated for Senescence? Nonsense, Says Science!*----FAST'17 ([link](https://www.usenix.org/system/files/conference/fast17/fast17-conway.pdf)) +4. *Filesystem Aging: It's more Usage than Fullness*----HotStorage'19 ([link](https://www.cs.unc.edu/~porter/pubs/hotstorage19-paper-conway.pdf)) + +### File System Analysis + +1. *Understanding Configuration Dependencies of File Systems*----HotStorage'22 ([link](https://www.hotstorage.org/2022/camera-ready/hotstorage22-132/pdf/hotstorage22-132.pdf)) +2. *CONFD: Analyzing Configuration Dependencies of File Systems for Fun and Profit*----FAST'24 ([link](https://www.usenix.org/system/files/fast23-mahmud.pdf)) + +### Journaling + +1. *Journaling of Journal Is (Almost) Free*----FAST'14 ([link](https://www.usenix.org/system/files/conference/fast14/fast14-paper_shen.pdf)) +1. *iJournaling: Fine-Grained Journaling for Improving the Latency of Fsync System Call*----USENIX ATC'17 ([link](https://www.usenix.org/system/files/conference/atc17/atc17-park.pdf)) +1. *FastCommit: Resource-efficient, Performant and Cost-effective File System Journaling*----USENIX ATC'24 ([link](https://www.usenix.org/system/files/atc24-shirwadkar.pdf)) + +### Page Cache + +1. *StreamCache: Revisiting Page Cache for File Scanning on Fast Storage Devices*----USENIX ATC'24 ([link](https://www.usenix.org/system/files/atc24-li-zhiyue.pdf)) + +### System Design + +1. *The Linear Tape File System*----MSST'10 ([link](https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=55becb668bc6cbf0c13b09caa92b849246c36882)) +2. *Scale and Concurrency of GIGA+: File System Directories with Millions of Files*----FAST''11 ([link](https://www.usenix.org/legacy/event/fast11/tech/full_papers/PatilNew.pdf)) +3. *F2FS: A New File System for Flash Storage*----FAST'15 ([link](https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf)) +4. *POSIX is Dead! Long Live... errr... What Exactly?*----HotStorage'15 ([link](https://www.fsl.cs.stonybrook.edu/docs/cosy-hotos/hotstorage17posux.pdf)) +5. *BetrFS: A Right-Optimized Write-Optimized File System*----FAST'15 ([link](https://www.usenix.org/system/files/conference/fast15/fast15-paper-jannen_william.pdf)) +6. *The Full Path to Full-Path Indexing*----FAST'18 ([link](https://www.usenix.org/system/files/conference/fast18/fast18-zhan.pdf)) +7. *SplitFS: persistent-memory file system that reduces software overhead*----SOSP'19 ([link](https://www.cs.utexas.edu/~vijay/papers/sosp19-splitfs.pdf)) +8. *EROFS: A Compression-friendly Readonly File System for Resource-scarce Devices*----USENIX ATC'19 ([link](https://www.usenix.org/system/files/atc19-gao.pdf)) +9. *How to Copy Files*----FAST'20 ([link](https://www.usenix.org/system/files/fast20-zhan.pdf)) +10. *WineFS: a hugepage-aware file system for persistent memory that ages gracefully*----SOSP'21 ([link](https://www.cs.utexas.edu/~vijay/papers/winefs-sosp21.pdf)) +11. *LineFS: Efficient SmartNIC Offload of a Distributed File System with Pipeline Parallelism*----SOSP'21 ([link](https://dl.acm.org/doi/pdf/10.1145/3477132.3483565)) +12. *BetrFS: A Compleat File System for Commodity SSDs*----EuroSys'22 ([link](https://dl.acm.org/doi/pdf/10.1145/3492321.3519571)) + +### FUSE + +1. *To FUSE or Not to FUSE: Performance of User-Space File Systems*----FAST'17 ([link](https://www.usenix.org/system/files/conference/fast17/fast17-vangoor.pdf)) +2. *Performance and Resource Utilization of FUSE User-Space File Systems*----ACM TOS'19 ([link](https://dl.acm.org/doi/10.1145/3310148)) +3. *XFUSE: An Infrastructure for Running Filesystem Services in User Space*----USENIX ATC'21 ([link](https://www.usenix.org/system/files/atc21-huai.pdf)) + +### Survey + +1. *Survey of Distributed File System Design Choices*----ACM TOS'22 ([link](https://dl.acm.org/doi/pdf/10.1145/3465405)) + +## Storage + AI + +### LLM in Storage + +1. *Can Modern LLMs Tune and Configure LSM-based Key-Value Stores?*----HotStorage'24 ([link](https://asu-idi.github.io/publications/files/HS24_GPT_Project.pdf)) diff --git a/paper_figure/image-20240805014222417.png b/paper_figure/image-20240805014222417.png new file mode 100644 index 0000000000000000000000000000000000000000..4eeb08094f0329274c5964232d7e9add93869eb8 GIT binary patch literal 80683 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 literal 0 HcmV?d00001 diff --git a/paper_figure/image-20240807011652739.png b/paper_figure/image-20240807011652739.png new file mode 100644 index 0000000000000000000000000000000000000000..64b8a006884e9cddb6cdbba3723a054f5298c7b6 GIT binary patch literal 60397 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≷U==Nh2Ax(!UOY-{mrcp#C!C7i*j%3Doe2=DK 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 if the files' content is almost identical** + - index creation overhead + - random and redundant accesses to the physical chunks + - **term indexing** is not supported by any deduplicating storage system + - focus on **textual data** + - VMware vSphere and Commvault only support file indexing + - identifies individual files within a backup based on metadata + - Dell-EMC Data Protection Search + - support full content indexing + - warn: processing the full content of a large number of files can be **time consuming** + - recommend performing targeted indexing on **specific backups and file types** +- challenge + - two separate trends + - the growing need to process **cold data** (e.g., old backups) + - e.g., full-system scans, keyword searches --> deduplication-aware search + - the growing application of deduplication on primary storage of hot and warm data + - e.g., perform single-term searches for files within deduplicated personal workstation + - indexing software on file-system level --> **unaware** of the underlying deduplication at the storage system + - index size + - increase --> increase the latency of lookups + - index time + - scan all files in the system --> random IOs, high read amplification + - split terms + - chunking process will likely split the incoming data into chunks (at **arbitrary position**) + - splitting words between adjacent chunks + +### IDEA + +- ![image-20240321002025742](./../paper_figure/image-20240321002025742.png) + +- key idea + - map terms to the unique physical chunks they appear in + - instead of the logical documents (disproportionately high) + - replace term-to-file mapping with + - term-to-chunk map + - chunk-to-file map (file ID) + - only need to modify chunking process in deduplication system + - **white-space aware** --> enforce chunk boundaries only between words +- white-space aligned chunking + - content-defined chunking + - **continue scanning** the following characters until a white-space character is encountered + - fixed-size chunking + - **backward scanning** this chunk until a white-space character is encountered + - resulting chunks are always smaller than the fixed size --> can be stored in a single block + - can trim the block in memory to chunk boundary + - non-textual content + - only to chunking of **textual content** + - identify textual content by the file extension of the incoming data + - .c, .h, and .htm + - add a Boolean field to the metadata of each chunk in the file recipe and container + - only process chunks marked as textual +- term-to-chunk mapping + - number of documents in the index --> number of physical chunks + - might be higher than the number of logical files + - chunks are **read sequentially**, each chunk is processed only once + - processing chunks is easily parallelizable + + - lookup + - return the fingerprints of the chunks this term appears + +- chunk-to-file mapping + - two complementing maps + - chunk-to-file map + - chunk fingerprint --> file IDs + - file-to-path map + - file IDs --> file's full pathname + - created from the metadata in the file recipe + +- keyword/term lookup + - step-1: yield the fingerprints of all the relevant chunks + - step-2: a series of lookups in the chunk-to-file map + - retrieves the IDs of all files containing these chunks + - step-3: a lookup of each file ID in the file-to-path map + - returns the final list of file names +- ranking results + - extend IDEA to support document ranking with the TF-IDF metric + +### Implementation and Evaluation + +- implementation + - LucenePlusPlus + Destor + - use Lucene term-to-doc map + - ![image-20240321204347685](./../paper_figure/image-20240321204347685.png) + - scan all file receipes from Destor + - create the list of files containing each chunk using a key-value store + - use an SSD for the data structures which are external to Lucene +- experimental setup + - trace + - ![image-20240321210826877](./../paper_figure/image-20240321210826877.png) + + - hardware + - maps of all index alternatives were stored on a separate HDD + - chunk-to-file and file-to-path maps of IDEA were stored on a SSD + +- evaluation + - baseline + - traditional deduplication-oblivious indexing (Naive) + + - indexing time + - the reduction is proportional to the **deduplication ratio** + - recipe-processing time is negligible compared to the chunk-processing time + + - indexing time of IDEA is shorter than that of Naive by 49% to 76% + + - index size + - Naive must record more files for all the terms include in them + - IDEA additional information is recorded per chunk, not per term + + - lookup times + - is faster than Naive by up to 82% + - smaller size of its term-to-doc map + - incur shorter lookup latency + + - IDEA overhead + - IDEA has no advantage when compared to deduplication-oblivious indexing + - additional layer of indirection incurs **non-negligible overheads are masked** where the deduplication ratio is sufficiently high + + +## 2. Strength (Contributions of the paper) + +- first design of a deduplication-aware term index +- implementation of IDEA on Lucene + - open-source single-node inverted index used by the Elasticsearch +- extensive evaluation + +## 3. Weakness (Limitations of the paper) + +- trace is not very large +- files containing compressed text (.pdf, .docx) + - their textual content can only be processed after the file is opened by a suitable application or converted by a dedicated tool + - individual chunks cannot be processed during offline index creation + +## 4. Some Insights (Future work) + +- deduplication scenarios + - backup and archival systems + - log-structured manner: chunk --> containers + - content-defined chunking + - primary (non-backup) storage system and appliances + - support direct access to individual chunks + - fixed-sized chunking + - align the deduplicated chunks with the storage interface +- deduplication data management + - implicit sharing of content between files, complicates the followings: transforms logically-sequential data accesses to random IOs in the underlying physical media + - GC + - load balancing between volumes + - caching + - charge-back +- term indexing: **term-to-file** indexing (map) + - ![image-20240321001530743](./../paper_figure/image-20240321001530743.png) + - return the files containing **a keyword** or **term** + - search engines, data analytics + - searched data might be deduplicated + - e.g. Elasticsearch + - built on top of the single-node Apache Lucene + - based on a hierarchy of skip-lists + - other variations + - Amazon OpenSearch, IBM Watson + - keyword: any searchable strings (natural language words) + - query + - the list of files containing this keyword + - optional: byte offsets in which the term appears + - indexing creation + - collect the documents + - identify the terms within each document + - normalize the terms + - create the list of documents, and optionally offsets, containing each term + - result ranking + - using a **scoring formula** on each result + - TF-IDF + - ![image-20240319012231775](./../paper_figure/image-20240319012231775.png) +- deduplication basic + - file recipe + - a list of chunks' fingerprints, their sizes + - restore: locate the chunk by searching in the fingerprint map or cache of its entries + - pack the **compressed data** into containers +- standard storage functionality + - can be made more efficient by taking advantage of deduplicated state diff --git a/storage_paper_note/general_storage/OC_ZNS/ZNS_SSD_Cache-HotStorage'24.md b/storage_paper_note/general_storage/OC_ZNS/ZNS_SSD_Cache-HotStorage'24.md new file mode 100644 index 0000000..87b8a95 --- /dev/null +++ b/storage_paper_note/general_storage/OC_ZNS/ZNS_SSD_Cache-HotStorage'24.md @@ -0,0 +1,140 @@ +--- +typora-copy-images-to: ../paper_figure +--- +# Can ZNS SSDs be Better Storage Devices for Persistent Cache? + +| Venue | Category | +| :------------------------: | :------------------: | +| HotStorage'24 | ZNS SSDs, Cache | +[TOC] + +## 1. Summary +### Motivation of this paper + +- motivation + - existing works mainly focus on cache data on block-based regular SSDs + - widely used as storage backends for **persistent cache** + - caching workload are **write- and update-intensive** with high capacity utilization + - incurs a large amount of **device-level write amplification** (WA) + - with many random and small writes to SSDs + - internal garbage collection (GC) + - SSD lifespan and performance issues + - ZNS SSDs + - two advantages + - need much lower internal over-provisioning --> larger capacity + - a better overall cache hit ratio + - new interfaces --> potential to reduce WA +- problem + - explore three possible schemes to adapt the existing persistent cache system on ZNS SSDs + - utilize **CacheLib** as a general cache framework + +### ZNS SSDs in Persistent Cache + +- three possible schemes + - ![image-20240805014222417](./../paper_figure/image-20240805014222417.png) + - **File-Cache** + - run CacheLib on a ZNS-compatible file system (F2FS) + - FS handle all low-level operations management + - **Zone-Cache** + - directly maps the cache on-disk management unit (i.e., region) to the fixed-size zone + - achieve true zero WA and be GC-free + - **Region-Cache** + - a simple middle layer to translate the zone interface to the region interface + - needs GC to clean the zones +- File-Cache + - ZNS SSD can be formatted with a compatible file system + - zone allocation, zone cleaning with GC, and indexing handled by FS + - **fully transparent** to CacheLib + - treat ZNS SSD like a regular device + - bad + - feasible and convenient, but will **bring explicitly high overhead** +- Zone-Cache + - most of the persistent cache designs + - group the newly inserted cache objects into a much larger management unit (fixed-size regions) + - reduce WA and improve IO efficiency --> **allocating and evicting large IO units** + - enlarge the region size to match the zone size + - one region per zone + - when a region is evicted, the zone can be directly reset without any data migration + - real zero WA + - GC-free + - no OP is needed for GC + - no extra indexing + - adding one entry of zone number to the region metadata for IOs + - bad + - need to match the region to a large zone size (1077MiB in Western Digital ZNS SSD) + - evicting a large region --> cause many valid or hot cache objects to be evicted + - impact the hit ratio + - need a larger region buffer in memory to cache the newly inserted objects + - more DRAM space + - long allocation time in eviction and a long filling time in insertion + - reducing the parallelism effectiveness +- Region-Cache + - add a simple middle layer to translate region to physical zone addresses + - data management + - region ID --> in-zone addresses + - bitmap indicates whether the region is valid in zone + - 1024 MiB Zone --> 16MiB region + - GC + - use a background thread to check the empty zone number and valid data size + - GC threshold and the zone selection threshold are configurable + - depends on the workloads + - opens the design space to further optimize the throughput and WA + - co-design between cache management and zone management + +### Implementation and Evaluation + +- evaluation + - setting + - flexibility, space efficiency, performance, and WA + - compared with CacheLib on regular SSDs (**Block-Cache**) + + - ZNS SSDs + - Western Digital Ultrastar DC ZN540 with 904 zones the zone size is 1077MiB + + - regular SSD + - 1TiB SN540 SSD + + - overall comparison + - ![image-20240807011652739](./../paper_figure/image-20240807011652739.png) + - Zone-Cache has the largest cache size (no OP) --> highest cache hit ratio + + - different OP ratio + - tradeoff between throughput and hit ratio + - higher WA --> lower throughput + + - end-to-end evaluation with RocksDB + - throughput: Region-Cache is highest, Zone-Cache is lowest + - ZNS SSDs can give a larger cache size than regular SSDs + + +## 2. Strength (Contributions of the paper) + +- ZNS SSDs persistent cache can reduce the tail latency and lower WA compared with regular SSDs +- ZNS SSDs can be better storage devices for persistent cache +- Zone-Cache can perform better in the **hit ratio** +- Region-Cache can perform better in **throughput** + +## 3. Weakness (Limitations of the paper) + +## 4. Some Insights (Future work) + +- open-channel SSDs + - separate different data streams into different channels + - relieving WA and GC penalties +- zone-based storage + - sequential write and zone-based cleaning constraints + - avoid internal GC + - GC task can be managed by the applications + - write pointer + - shift to the start by ***zone reset*** + - jump to the end of the zone by ***zone finish*** +- CacheLib + - a pluggable caching engine developed by Meta + - log-structured cache + - flash space is partitioned into regions + - each region is used to package cache objects with different sizes + - **evict entire regions** rather than individual cache objects + - region size is configurable, e.g., 16MiB + - are designed to use either + - a raw regular block device + - one large file allocated in a file system (pre-allocated file)