OSDN Git Service

ext4: use percpu_counters for extent_status cache hits/misses
authorYang Guo <guoyang2@huawei.com>
Wed, 28 Aug 2019 15:19:23 +0000 (11:19 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 28 Aug 2019 15:19:23 +0000 (11:19 -0400)
commit520f897a3554b0665af1ae5d5ba286f290cecf5c
tree362c3faf7e1f8f026276be06334b25249d2a262f
parent7727ae52975d4f4ef7ff69ed8e6e25f6a4168158
ext4: use percpu_counters for extent_status cache hits/misses

@es_stats_cache_hits and @es_stats_cache_misses are accessed frequently in
ext4_es_lookup_extent function, it would influence the ext4 read/write
performance in NUMA system. Let's optimize it using percpu_counter,
it is profitable for the performance.

The test command is as below:
fio -name=randwrite -numjobs=8 -filename=/mnt/test1 -rw=randwrite
-ioengine=libaio -direct=1 -iodepth=64 -sync=0 -norandommap
-group_reporting -runtime=120 -time_based -bs=4k -size=5G

And the result is better 10% than the initial implement:
without the patch,IOPS=197k, BW=770MiB/s (808MB/s)(90.3GiB/120002msec)
with the patch,  IOPS=218k, BW=852MiB/s (894MB/s)(99.9GiB/120002msec)

Cc: "Theodore Ts'o" <tytso@mit.edu>
Cc: Andreas Dilger <adilger.kernel@dilger.ca>
Cc: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Yang Guo <guoyang2@huawei.com>
Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
fs/ext4/extents_status.c
fs/ext4/extents_status.h