On Tue, 7 Mar 2023 14:55:57 +0800 Qi Zheng <zhengqi.arch@xxxxxxxxxxxxx> wrote: > Hi all, > > This patch series aims to make slab shrink lockless. The v3 discussion did contain requests for some sort of measurements of real-world workloads. And Kirill did suggest a workload which could be used for this measurement. It's quite important that we have this info, please. I mean, speeding up real-world workloads is the entire point of the patchset and without measurements, we don't know if the patchset achieves its primary objective! > 3. Reproduction and testing > =========================== > > We can reproduce the down_read_trylock() hotspot through the following script: > > ``` > #!/bin/bash > > DIR="/root/shrinker/memcg/mnt" > > do_create() > { > mkdir -p /sys/fs/cgroup/memory/test > mkdir -p /sys/fs/cgroup/perf_event/test > echo 4G > /sys/fs/cgroup/memory/test/memory.limit_in_bytes > for i in `seq 0 $1`; > do > mkdir -p /sys/fs/cgroup/memory/test/$i; > echo $$ > /sys/fs/cgroup/memory/test/$i/cgroup.procs; > echo $$ > /sys/fs/cgroup/perf_event/test/cgroup.procs; > mkdir -p $DIR/$i; > done > } > > do_mount() > { > for i in `seq $1 $2`; > do > mount -t tmpfs $i $DIR/$i; > done > } > > do_touch() > { > for i in `seq $1 $2`; > do > echo $$ > /sys/fs/cgroup/memory/test/$i/cgroup.procs; > echo $$ > /sys/fs/cgroup/perf_event/test/cgroup.procs; > dd if=/dev/zero of=$DIR/$i/file$i bs=1M count=1 & > done > } > > case "$1" in > touch) > do_touch $2 $3 > ;; > test) > do_create 4000 > do_mount 0 4000 > do_touch 0 3000 > ;; > *) > exit 1 > ;; > esac > ``` > > Save the above script, then run test and touch commands. Then we can use the > following perf command to view hotspots: Well. Simply runnimg time that-script before and after and including the info in the changelog would be a start?