accel/qaic: Add AIC200 support
[drm/drm-misc.git] / tools / testing / selftests / damon / damos_tried_regions.py
blob3b347eb28bd283d21c541fbfbe5327ab331c00b9
1 #!/usr/bin/env python3
2 # SPDX-License-Identifier: GPL-2.0
4 import subprocess
5 import time
7 import _damon_sysfs
9 def main():
10 # repeatedly access even-numbered ones in 14 regions of 10 MiB size
11 sz_region = 10 * 1024 * 1024
12 proc = subprocess.Popen(['./access_memory_even', '14', '%d' % sz_region])
14 # stat every monitored regions
15 kdamonds = _damon_sysfs.Kdamonds([_damon_sysfs.Kdamond(
16 contexts=[_damon_sysfs.DamonCtx(
17 ops='vaddr',
18 targets=[_damon_sysfs.DamonTarget(pid=proc.pid)],
19 schemes=[_damon_sysfs.Damos(action='stat',
20 )] # schemes
21 )] # contexts
22 )]) # kdamonds
24 err = kdamonds.start()
25 if err is not None:
26 proc.terminate()
27 print('kdamond start failed: %s' % err)
28 exit(1)
30 collected_nr_regions = []
31 while proc.poll() is None:
32 time.sleep(0.1)
33 err = kdamonds.kdamonds[0].update_schemes_tried_regions()
34 if err is not None:
35 proc.terminate()
36 print('tried regions update failed: %s' % err)
37 exit(1)
39 scheme = kdamonds.kdamonds[0].contexts[0].schemes[0]
40 if scheme.tried_regions is None:
41 proc.terminate()
42 print('tried regions is not collected')
43 exit(1)
45 nr_tried_regions = len(scheme.tried_regions)
46 if nr_tried_regions <= 0:
47 proc.terminate()
48 print('tried regions is not created')
49 exit(1)
50 collected_nr_regions.append(nr_tried_regions)
51 if len(collected_nr_regions) > 10:
52 break
53 proc.terminate()
55 collected_nr_regions.sort()
56 sample = collected_nr_regions[4]
57 print('50-th percentile nr_regions: %d' % sample)
58 print('expectation (>= 14) is %s' % 'met' if sample >= 14 else 'not met')
59 if collected_nr_regions[4] < 14:
60 print('full nr_regions:')
61 print('\n'.join(collected_nr_regions))
62 exit(1)
64 if __name__ == '__main__':
65 main()