SCMFS: A File System for Storage Class Memory
Wu, Reddy (2011)
What kind of paper is this?
The Story
- Storage class memories appear to be happening (although we have
heard that before).
- Because these persistent media operate at memory speed, the overheads
in the file system stack are significant.
- A file system specifically designed for SCM should offer order of
magnitude better performance.
- Such a file system will bring dramatic improvements to storage-bound
applications.
SCM 101
- Mostly called NVM today (for non-volatile memory).
- Accessed on the memory bus.
- Byte addressible (accessed via load/store instructions).
Why not just use a ram disk?
- A ram disk treats a block of memory as a disk drive
and run a conventional file system.
- Introduces unnecessary overheads:
- Generic block layer.
- Emulated IO.
- Forced to use block-based data structures.
Why not use tmpfs (or ramfs)?
- Since these were designed for volatile memory, they don't
worry about recovering data after a crash, so there is no recovery code.
- Data structures might be in an inconsistent state.
- Operations are not written to ensure recoverability.
SCMFS
- Use existing memory management support instead of FS-specific
space management.
- Not LBN to PBN mapping: Assume that all files are contiguous in the
virtual address space of the device. (So metadata is just start block
and length.)
- Allocate the file system in the unused bits of the Linux VAS (almost
all of the top 16-bits worth).
- They claim no space management, but they pre-create null files which
have VA space allocated, but no PA. This sounds like (quite inflexible)
space management!
- Each file has: 1) a virtual size, 2) a mapped size, and 3) a file size.
- GC claims mapped, but unused pages.
- Provide consistency through a combination of flushing and fencing.
- Flush on every metadata update: superblocks, inodes tables, directory
files.
Evaluation
- Note: they are simulating SCM, so they are not actually using NVM (which
is slower and sometimes significantly so).
- IOZONE: various requests inside one big file. Tests data access time.
- Shocking: In-memory file systems tend to work better than disk-based ones
when done in-memory.
- For medium writes, however, TLB behavios of SCMFS makes it do worse than
ext2.
- Multi-threaded workloads are more similar for SCMFS and ext2 than
single threaded ones. (Except for 4-thread write workloads.)
contention?)
- Linux's automatic switch to 2MB pages in some cases makes a big difference
on TLB miss rate.
- Postmark: email server workload. Creates and deletes lots of file.
Tests metadata operations.
- Read performance is similar across all the systems.
- Write performance is about 10-20% worse for Ext2.