2 # SPDX-License-Identifier: GPL-2.0
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(
18 targets
=[_damon_sysfs
.DamonTarget(pid
=proc
.pid
)],
19 schemes
=[_damon_sysfs
.Damos(action
='stat',
24 err
= kdamonds
.start()
27 print('kdamond start failed: %s' % err
)
30 collected_nr_regions
= []
31 while proc
.poll() is None:
33 err
= kdamonds
.kdamonds
[0].update_schemes_tried_regions()
36 print('tried regions update failed: %s' % err
)
39 scheme
= kdamonds
.kdamonds
[0].contexts
[0].schemes
[0]
40 if scheme
.tried_regions
is None:
42 print('tried regions is not collected')
45 nr_tried_regions
= len(scheme
.tried_regions
)
46 if nr_tried_regions
<= 0:
48 print('tried regions is not created')
50 collected_nr_regions
.append(nr_tried_regions
)
51 if len(collected_nr_regions
) > 10:
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
))
64 if __name__
== '__main__':