• Jiro SEKIBA's avatar
    nilfs2: shorten freeze period due to GC in write operation v3 · 1cf58fa8
    Jiro SEKIBA authored
    This is a re-revised patch to shorten freeze period.
    This version include a fix of the bug Konishi-san mentioned last time.
    When GC is runnning, GC moves live block to difference segments.
    Copying live blocks into memory is done in a transaction,
    however it is not necessarily to be in the transaction.
    This patch will get the nilfs_ioctl_move_blocks() out from
    transaction lock and put it before the transaction.
    I ran sysbench fileio test against nilfs partition.
    I copied some DVD/CD images and created snapshot to create live blocks
    before starting the benchmark.
    Followings are summary of rc8 and rc8 w/ the patch of per-request
    statistics, which is min/max and avg.  I ran each test three times and
    bellow is average of those numers.
    According to this benchmark result, average time is slightly degrated.
    However, worstcase (max) result is significantly improved.
    This can address a few seconds write freeze.
    - random write per-request performance of rc8
     min   0.843ms
     max 680.406ms
     avg   3.050ms
    - random write per-request performance of rc8 w/ this patch
     min   0.843ms -> 100.00%
     max 380.490ms ->  55.90%
     avg   3.233ms -> 106.00%
    - sequential write per-request performance of rc8
     min   0.736ms
     max 774.343ms
     avg   2.883ms
    - sequential write per-request performance of rc8 w/ this patch
     min   0.720ms ->  97.80%
     max  644.280ms->  83.20%
     avg   3.130ms -> 108.50%
    protection_period       150
    selection_policy        timestamp       # timestamp in ascend order
    nsegments_per_clean     2
    cleaning_interval       2
    retry_interval          60
    log_priority            info
    Signed-off-by: default avatarJiro SEKIBA <jir@unicus.jp>
    Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
ioctl.c 16.4 KB