This library provides an optimized memory-mapped I/O path inside the Linux kernel. It is implemented as a kernel module and supported by user-space libraries for management purposes.
FastMap currently runs on any 4.14 Linux kernel, with no kernel modifications being necessary. A 4.14 kernel from the Linux Kernel Archives can be found here.
After that, you should configure, build, and install the kernel using specific instructions based on your setup.
In order to build FastMap simply run make
on the top-level directory. This will build the driver (located in the driver directory) and the associated userspace tools (located in the ioctl directory). After that, it will also install the FastMap module and run depmod
.
The only required parameter is the number of 4KB DRAM pages that it will use as a cache. You can define this in the driver/main.c
file in the
perma_mmap_buf_size
variable. Alternatively, you can use this as a command-line argument (i.e. modprobe dmap perma_mmap_buf_size=1024
and in this case it will allocate 1024 4KB pages totaling 4GB of DRAM cache).
In scripts
directory you can find several scripts (with the appropriate comments) on how to load and unload FastMap. These include:
Script | Description |
---|---|
scripts/load-it-blkdev.sh | Load FastMap for a block device. |
scripts/unload-it-blkdev.sh | Unload FastMap for a block device. |
scripts/load-it-fs.sh | Load FastMap for a file system. |
scripts/unload-it-fs.sh | Unload FastMap for a file system. |
The following paper presents the design and experimental analysis of FastMap.
Anastasios Papagiannis, Giorgos Xanthakis, Giorgos Saloustros, Manolis Marazakis, and Angelos Bilas. Optimizing Memory-mapped I/O for Fast Storage Devices. In proceedings of the 2020 USENIX Annual Technical Conference (USENIX ATC 20). July 2020.
The pdf, slides, and presentation can be found here.
Please cite this publication if you use/modify/evaluate FastMap.