• Jeffle Xu's avatar
    fuse: enable per inode DAX · 93a497b9
    Jeffle Xu authored
    DAX may be limited in some specific situation. When the number of usable
    DAX windows is under watermark, the recalim routine will be triggered to
    reclaim some DAX windows. It may have a negative impact on the
    performance, since some processes may need to wait for DAX windows to be
    recalimed and reused then. To mitigate the performance degradation, the
    overall DAX window need to be expanded larger.
    
    However, simply expanding the DAX window may not be a good deal in some
    scenario. To maintain one DAX window chunk (i.e., 2MB in size), 32KB
    (512 * 64 bytes) memory footprint will be consumed for page descriptors
    inside guest, which is greater than the memory footprint if it uses
    guest page cache when DAX disabled. Thus it'd better disable DAX for
    those files smaller than 32KB, to reduce the demand for DAX window and
    thus avoid the unworthy memory overhead.
    
    Per inode DAX feature is introduced to address this issue, by offering a
    finer grained control for dax to users, trying to achieve a balance
    between performance and memory overhead.
    
    The FUSE_ATTR_DAX flag in FUSE_LOOKUP reply is used to indicate whether
    DAX should be enabled or not for corresponding file. Currently the state
    whether DAX is enabled or not for the file is initialized only when
    inode is instantiated.
    Signed-off-by: default avatarJeffle Xu <jefflexu@linux.alibaba.com>
    Reviewed-by: default avatarVivek Goyal <vgoyal@redhat.com>
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
    93a497b9
file.c 78.1 KB