1. 09 12月, 2022 2 次提交
  2. 06 11月, 2022 1 次提交
  3. 01 10月, 2022 10 次提交
  4. 03 8月, 2022 1 次提交
  5. 15 7月, 2022 2 次提交
  6. 14 5月, 2022 1 次提交
  7. 12 5月, 2022 1 次提交
  8. 16 3月, 2022 5 次提交
  9. 13 3月, 2022 1 次提交
  10. 03 3月, 2022 1 次提交
    • R
      ext4: improve fast_commit performance and scalability · b3998b3b
      Ritesh Harjani 提交于
      Currently ext4_fc_commit_dentry_updates() is of quadratic time
      complexity, which is causing performance bottlenecks with high
      threads/file/dir count with fs_mark.
      
      This patch makes commit dentry updates (and hence ext4_fc_commit()) path
      to linear time complexity. Hence improves the performance of workloads
      which does fsync on multiple threads/open files one-by-one.
      
      Absolute numbers in avg file creates per sec (from fs_mark in 1K order)
      =======================================================================
      no.     Order   without-patch(K)   with-patch(K)   Diff(%)
      1       1        16.90              17.51           +3.60
      2       2,2      32.08              31.80           -0.87
      3       3,3      53.97              55.01           +1.92
      4       4,4      78.94              76.90           -2.58
      5       5,5      95.82              95.37           -0.46
      6       6,6      87.92              103.38          +17.58
      7       6,10      0.73              126.13          +17178.08
      8       6,14      2.33              143.19          +6045.49
      
      workload type
      ==============
      For e.g. 7th row order of 6,10 (2^6 == 64 && 2^10 == 1024)
      echo /run/riteshh/mnt/{1..64} |sed -E 's/[[:space:]]+/ -d /g' \
        | xargs -I {} bash -c "sudo fs_mark -L 100 -D 1024 -n 1024 -s0 -S5 -d {}"
      
      Perf profile
      (w/o patches)
      =============================
      87.15%  [kernel]  [k] ext4_fc_commit           --> Heavy contention/bottleneck
       1.98%  [kernel]  [k] perf_event_interrupt
       0.96%  [kernel]  [k] power_pmu_enable
       0.91%  [kernel]  [k] update_sd_lb_stats.constprop.0
       0.67%  [kernel]  [k] ktime_get
      Signed-off-by: NRitesh Harjani <riteshh@linux.ibm.com>
      Reviewed-by: NHarshad Shirwadkar <harshadshirwadkar@gmail.com>
      Link: https://lore.kernel.org/r/930f35d4fd5f83e2673c868781d9ebf15e91bf4e.1645426817.git.riteshh@linux.ibm.comSigned-off-by: NTheodore Ts'o <tytso@mit.edu>
      b3998b3b
  11. 26 2月, 2022 1 次提交
  12. 03 2月, 2022 5 次提交
  13. 11 1月, 2022 3 次提交
  14. 24 12月, 2021 3 次提交
  15. 04 11月, 2021 2 次提交
  16. 01 10月, 2021 1 次提交
    • H
      ext4: limit the number of blocks in one ADD_RANGE TLV · a2c2f082
      Hou Tao 提交于
      Now EXT4_FC_TAG_ADD_RANGE uses ext4_extent to track the
      newly-added blocks, but the limit on the max value of
      ee_len field is ignored, and it can lead to BUG_ON as
      shown below when running command "fallocate -l 128M file"
      on a fast_commit-enabled fs:
      
        kernel BUG at fs/ext4/ext4_extents.h:199!
        invalid opcode: 0000 [#1] SMP PTI
        CPU: 3 PID: 624 Comm: fallocate Not tainted 5.14.0-rc6+ #1
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996)
        RIP: 0010:ext4_fc_write_inode_data+0x1f3/0x200
        Call Trace:
         ? ext4_fc_write_inode+0xf2/0x150
         ext4_fc_commit+0x93b/0xa00
         ? ext4_fallocate+0x1ad/0x10d0
         ext4_sync_file+0x157/0x340
         ? ext4_sync_file+0x157/0x340
         vfs_fsync_range+0x49/0x80
         do_fsync+0x3d/0x70
         __x64_sys_fsync+0x14/0x20
         do_syscall_64+0x3b/0xc0
         entry_SYSCALL_64_after_hwframe+0x44/0xae
      
      Simply fixing it by limiting the number of blocks
      in one EXT4_FC_TAG_ADD_RANGE TLV.
      
      Fixes: aa75f4d3 ("ext4: main fast-commit commit path")
      Cc: stable@kernel.org
      Signed-off-by: NHou Tao <houtao1@huawei.com>
      Signed-off-by: NTheodore Ts'o <tytso@mit.edu>
      Link: https://lore.kernel.org/r/20210820044505.474318-1-houtao1@huawei.com
      a2c2f082