5 function run_perf_c2c
() {
6 # First get some background system info
9 cat /proc
/cmdline
> cmdline.out
10 timeout
-s INT
10 vmstat
-w 1 > vmstat.out || true
11 sudo dmesg
>& dmesg.out
12 cat /proc
/cpuinfo
> cpuinfo.out
13 ps axo psr
,time,stat
,ppid
,pid
,pcpu
,comm > ps
.1.out
15 sudo sysctl
-a > sysctl.out
17 nodecnt
=`lscpu|grep "NUMA node(" |awk '{print $3}'`
18 for ((i
=0; i
<$nodecnt; i
++))
20 sudo
cat /sys
/devices
/system
/node
/node
${i}/meminfo
> meminfo.
$i.out
22 sudo
more `sudo find /proc -name status` > proc_parent_child_status.out
23 sudo
more /proc
/*/numa_maps
> numa_maps.out
26 # Get separate kernel and user perf-c2c stats
28 sudo perf c2c record
-a --ldlat=70 --all-user -o perf_c2c_a_all_user.data
sleep 5
29 sudo perf c2c report
--stdio -i perf_c2c_a_all_user.data
> perf_c2c_a_all_user.out
2>&1
30 sudo perf c2c report
--full-symbols --stdio -i perf_c2c_a_all_user.data
> perf_c2c_full-sym_a_all_user.out
2>&1
32 sudo perf c2c record
--call-graph dwarf
-a --ldlat=70 --all-user -o perf_c2c_g_a_all_user.data
sleep 5
33 sudo perf c2c report
-g --stdio -i perf_c2c_g_a_all_user.data
> perf_c2c_g_a_all_user.out
2>&1
35 sudo perf c2c record
-a --ldlat=70 --all-kernel -o perf_c2c_a_all_kernel.data
sleep 4
36 sudo perf c2c report
--stdio -i perf_c2c_a_all_kernel.data
> perf_c2c_a_all_kernel.out
2>&1
38 sudo perf c2c record
--call-graph dwarf
--ldlat=70 -a --all-kernel -o perf_c2c_g_a_all_kernel.data
sleep 4
40 sudo perf c2c report
-g --stdio -i perf_c2c_g_a_all_kernel.data
> perf_c2c_g_a_all_kernel.out
2>&1
43 # Get combined kernel and user perf-c2c stats
45 sudo perf c2c record
-a --ldlat=70 -o perf_c2c_a_both.data
sleep 4
46 sudo perf c2c report
--stdio -i perf_c2c_a_both.data
> perf_c2c_a_both.out
2>&1
48 sudo perf c2c record
--call-graph dwarf
--ldlat=70 -a --all-kernel -o perf_c2c_g_a_both.data
sleep 4
49 sudo perf c2c report
-g --stdio -i perf_c2c_g_a_both.data
> perf_c2c_g_a_both.out
2>&1
52 # Get all-user physical addr stats, in case multiple threads or processes are
53 # accessing shared memory with different vaddrs.
55 sudo perf c2c record
--phys-data -a --ldlat=70 --all-user -o perf_c2c_a_all_user_phys_data.data
sleep 5
56 sudo perf c2c report
--stdio -i perf_c2c_a_all_user_phys_data.data
> perf_c2c_a_all_user_phys_data.out
2>&1
66 ceph_test_c2c
--threads $
(($
(nproc
) * 2)) "$@" &
67 sleep 30 # let it warm up
69 kill $
! ||
{ echo "ceph_test_c2c WAS NOT RUNNING" ; exit 1 ; }
74 optimized
=$
(timeout
30 ceph_test_c2c
--threads $
(($
(nproc
) * 2)) --sharding 2> /dev
/null || true
)
75 not_optimized
=$
(timeout
30 ceph_test_c2c
--threads $
(($
(nproc
) * 2)) 2> /dev
/null || true
)
76 if ! (( $optimized > ( $not_optimized * 2 ) )) ; then
77 echo "the optimization is expected to be at least x2 faster"
82 run with-sharding
--sharding