Skip to content

jsyeon92/RFLUSH

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

RFLUSH: Rethink the Flush

A FLUSH command has been used for decades to enforce persistence and ordering of updates in a storage device. The command forces all the data in the volatile buffer to non-volatile media to achieve persistency. This lumpsum approach to flushing has two performance consequences. First, it slows down non-volatile materialization of the writes that actually need to be flushed. Second, it deprives the writes that need not to be flushed of an opportunity for absorbing future writes and coalescing. We attempt to characterize the problems of this semantic gap of flushing in storage devices and propose RFLUSH that allows a fine-grained control over flushing in them. The RFLUSH command delivers a range of LBAs that need to be flushed and thus enables the storage device to force only a subset of data in its buffer. We implemented this fine-grained flush command in a storage device using an open-source flash development platform and modified the F2FS file system to make use of the command in processing fsync requests as a case study. Performance evaluation using the prototype implementation shows that the inclusion of RFLUSH improves the throughput by up to 5.6x; reduces the write traffic by up to 43%; and eliminates the long tail in the response time.

config setting

  • ubuntu 16.04
  • DRAM 64GB
  • f2fs-tools
  • bluedbm capacity 38G

install

  • make install kernel 4.7.2
cd linux-4.7.2
make-kpkg --initrd --revision=1.1 kernel_image -j4
cd ..
dpkg -i linux-image-4.7.2_1.1_amd64.deb
reboot
  • make bluedbm
cd devices/ramdrive
make
cd -
cd devices/ramdrive_timing
make 
cd -
cd frontend/kerenl
make
cd -

run bludbm

  • run bludbm
cd frontend/kernel
./mount_f2fs_ram.sh