summaryrefslogtreecommitdiff
path: root/tests/bcachefs/perf.ktest
blob: ee228b7029eaf57a92e718f0d6ce4c148884ad6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/bin/bash

require-lib ../prelude.sh

require-make bcachefs-tools

require-kernel-config BCACHEFS_FS
require-kernel-config BCACHEFS_TESTS

if [[ $KERNEL_ARCH = x86 ]]; then
    require-kernel-config CRYPTO_CRC32C_INTEL
fi

config-mem	    8G
config-scratch-devs 8G
config-timeout	    600

btree_node_size=8k
n=10M
t=4

perf_mkfs()
{
    bcachefs format				\
	--errors=panic				\
	/dev/sdb >/dev/null
	#--bucket=$btree_node_size		\
	#--btree_node_size=$btree_node_size	\
    mount /dev/sdb /mnt
    ln -sf /sys/fs/bcachefs/*/perf_test p
}

test_insert_overwrite()
{
    perf_mkfs

    echo seq_insert		$n 1	> p
    echo seq_insert		$n 1	> p
    echo seq_overwrite		$n 1	> p

    umount /mnt
}

test_perf_profile()
{
    perf_mkfs

    perf_4.14 record -g -o seq_insert -- echo seq_insert $n 1	> p
    perf_4.14 record -g -o seq_lookup -- echo seq_lookup $n 1	> p

    perf_4.14 stat -- echo seq_lookup $n 1	> p

    #perf_4.14 record -g -o seq_delete -- echo seq_delete $n 1	> p

    umount /mnt
}

test_merge_torture()
{
    perf_mkfs
    while true; do
	echo seq_insert		$n 1	> p
	echo seq_delete		$n 1	> p
    done
    umount /mnt
}

test_perf_all()
{
    settle=0

    perf_mkfs
    #while true; do
	echo starting benches

	echo seq_insert		$n 1	> p
	sleep $settle
	echo seq_lookup		$n 1	> p
	sleep $settle
	echo seq_delete		$n 1	> p
	sleep $settle

	echo rand_insert	$n 1	> p
	sleep $settle
	echo seq_delete		$n 1	> p
	sleep $settle
	echo rand_insert	$n $t	> p
	sleep $settle

	echo rand_lookup	$n 1	> p
	sleep $settle
	echo rand_lookup	$n $t	> p
	sleep $settle

	echo rand_mixed		$n 1	> p
	sleep $settle
	echo rand_mixed		$n $t	> p
	sleep $settle
    #done
    umount /mnt
}

do_unit_tests()
{
    perf_mkfs

    for i in $@; do
	echo test_$i		1M 1	> p
    done

    umount /mnt
}

test_units()
{
    do_unit_tests iterate iterate_extents iterate_slots iterate_slots_extents delete delete_written
}

test_extents()
{
    do_unit_tests	extent_overwrite_front	\
			extent_overwrite_back	\
			extent_overwrite_middle	\
			extent_overwrite_all
}