]> git.baikalelectronics.ru Git - kernel.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)
commit814309cd3f08e57cf7c43ab8136fe477e3ae2eeb
tree567a878460844a91b28ae1a70221f2e3c8e106ee
parent016e5e1fd4042ab0c8a7bc6754864847837916b7
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