• I
    Optimize fallocation · f26cb0f0
    Igor Canadi 提交于
    Summary:
    Based on my recent findings (posted in our internal group), if we use fallocate without KEEP_SIZE flag, we get superior performance of fdatasync() in append-only workloads.
    
    This diff provides an option for user to not use KEEP_SIZE flag, thus optimizing his sync performance by up to 2x-3x.
    
    At one point we also just called posix_fallocate instead of fallocate, which isn't very fast: http://code.woboq.org/userspace/glibc/sysdeps/posix/posix_fallocate.c.html (tl;dr it manually writes out zero bytes to allocate storage). This diff also fixes that, by first calling fallocate and then posix_fallocate if fallocate is not supported.
    
    Test Plan: make check
    
    Reviewers: dhruba, sdong, haobo, ljin
    
    Reviewed By: dhruba
    
    CC: leveldb
    
    Differential Revision: https://reviews.facebook.net/D16761
    f26cb0f0
env_posix.cc 43.2 KB