-
Notifications
You must be signed in to change notification settings - Fork 151
selftests/bpf: improve reliability of test_perf_branches_no_hw() #10334
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Upstream branch: d6ec090 |
7b6b51d to
2412df8
Compare
|
Upstream branch: d6ec090 |
aafe3a3 to
aa21554
Compare
2412df8 to
bfb0726
Compare
|
Upstream branch: d088da9 |
aa21554 to
9806909
Compare
bfb0726 to
b0a5b86
Compare
|
Upstream branch: e0940c6 |
9806909 to
77d9ed1
Compare
|
Upstream branch: e0940c6 |
77d9ed1 to
82cb80c
Compare
b0a5b86 to
44cbecf
Compare
|
Upstream branch: 792f258 |
82cb80c to
6a1a085
Compare
44cbecf to
e8ba78a
Compare
|
Upstream branch: 878ee3c |
Currently, test_perf_branches_no_hw() relies on the busy loop within test_perf_branches_common() being slow enough to allow at least one perf event sample tick to occur before starting to tear down the backing perf event BPF program. With a relatively small fixed iteration count of 1,000,000, this is not guaranteed on modern fast CPUs, resulting in the test run to subsequently fail with the following: bpf_testmod.ko is already unloaded. Loading bpf_testmod.ko... Successfully loaded bpf_testmod.ko. test_perf_branches_common:PASS:test_perf_branches_load 0 nsec test_perf_branches_common:PASS:attach_perf_event 0 nsec test_perf_branches_common:PASS:set_affinity 0 nsec check_good_sample:PASS:output not valid 0 nsec check_good_sample:PASS:read_branches_size 0 nsec check_good_sample:PASS:read_branches_stack 0 nsec check_good_sample:PASS:read_branches_stack 0 nsec check_good_sample:PASS:read_branches_global 0 nsec check_good_sample:PASS:read_branches_global 0 nsec check_good_sample:PASS:read_branches_size 0 nsec test_perf_branches_no_hw:PASS:perf_event_open 0 nsec test_perf_branches_common:PASS:test_perf_branches_load 0 nsec test_perf_branches_common:PASS:attach_perf_event 0 nsec test_perf_branches_common:PASS:set_affinity 0 nsec check_bad_sample:FAIL:output not valid no valid sample from prog Summary: 0/1 PASSED, 0 SKIPPED, 1 FAILED Successfully unloaded bpf_testmod.ko. On a modern CPU (i.e. one with a 3.5 GHz clock rate), executing 1 million increments of a volatile integer can take significantly less than 1 millisecond. If the spin loop and detachment of the perf event BPF program elapses before the first 1 ms sampling interval elapses, the perf event will never end up firing. Fix this by bumping the loop iteration counter a little within test_perf_branches_common(), along with ensuring adding another loop termination condition which is directly influenced by the backing perf event BPF program executing. Notably, a concious decision was made to not adjust the sample_freq value as that is just not a reliable way to go about fixing the problem. It effectively still leaves the race window open. Fixes: 67306f8 ("selftests/bpf: Add bpf_read_branch_records() selftest") Signed-off-by: Matt Bobrowski <[email protected]> Reviewed-by: Jiri Olsa <[email protected]>
6a1a085 to
f5abe87
Compare
e8ba78a to
c1a1f03
Compare
|
At least one diff in series https://patchwork.kernel.org/project/netdevbpf/list/?series=1025376 irrelevant now. Closing PR. |
Pull request for series with
subject: selftests/bpf: improve reliability of test_perf_branches_no_hw()
version: 1
url: https://patchwork.kernel.org/project/netdevbpf/list/?series=1025376