]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commit
ext4: limit the length of per-inode prealloc list
authorbrookxu <brookxu.cn@gmail.com>
Mon, 17 Aug 2020 07:36:15 +0000 (15:36 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 19 Aug 2020 16:04:36 +0000 (12:04 -0400)
commit27bc446e2def38db3244a6eb4bb1d6312936610a
tree567a878460844a91b28ae1a70221f2e3c8e106ee
parent66d5e0277e225cdc5d272fc22b1aa90a9b0d21ac
ext4: limit the length of per-inode prealloc list

In the scenario of writing sparse files, the per-inode prealloc list may
be very long, resulting in high overhead for ext4_mb_use_preallocated().
To circumvent this problem, we limit the maximum length of per-inode
prealloc list to 512 and allow users to modify it.

After patching, we observed that the sys ratio of cpu has dropped, and
the system throughput has increased significantly. We created a process
to write the sparse file, and the running time of the process on the
fixed kernel was significantly reduced, as follows:

Running time on unfixed kernel:
[root@TENCENT64 ~]# time taskset 0x01 ./sparse /data1/sparce.dat
real    0m2.051s
user    0m0.008s
sys     0m2.026s

Running time on fixed kernel:
[root@TENCENT64 ~]# time taskset 0x01 ./sparse /data1/sparce.dat
real    0m0.471s
user    0m0.004s
sys     0m0.395s

Signed-off-by: Chunguang Xu <brookxu@tencent.com>
Link: https://lore.kernel.org/r/d7a98178-056b-6db5-6bce-4ead23f4a257@gmail.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
13 files changed:
Documentation/admin-guide/ext4.rst
fs/ext4/ext4.h
fs/ext4/extents.c
fs/ext4/file.c
fs/ext4/indirect.c
fs/ext4/inode.c
fs/ext4/ioctl.c
fs/ext4/mballoc.c
fs/ext4/mballoc.h
fs/ext4/move_extent.c
fs/ext4/super.c
fs/ext4/sysfs.c
include/trace/events/ext4.h