• Ethan Lien's avatar
    btrfs: lift some btrfs_cross_ref_exist checks in nocow path · 78d4295b
    Ethan Lien authored
    In nocow path, we check if the extent is snapshotted in
    btrfs_cross_ref_exist(). We can do the similar check earlier and avoid
    unnecessary search into extent tree.
    
    A fio test on a Intel D-1531, 16GB RAM, SSD RAID-5 machine as follows:
    
    [global]
    group_reporting
    time_based
    thread=1
    ioengine=libaio
    bs=4k
    iodepth=32
    size=64G
    runtime=180
    numjobs=8
    rw=randwrite
    
    [file1]
    filename=/mnt/nocow/testfile
    
    IOPS result:   unpatched     patched
    
    1 fio round:     46670        46958
    snapshot
    2 fio round:     51826        54498
    3 fio round:     59767        61289
    
    After snapshot, the first fio get about 5% performance gain. As we
    continually write to the same file, all writes will resume to nocow mode
    and eventually we have no performance gain.
    Signed-off-by: default avatarEthan Lien <ethanlien@synology.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    [ update comments ]
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    78d4295b
inode.c 284 KB