2 # SPDX-License-Identifier: GPL-2.0
10 # access two 10 MiB memory regions, 2 second per each
11 sz_region
= 10 * 1024 * 1024
12 proc
= subprocess
.Popen(['./access_memory', '2', '%d' % sz_region
, '2000'])
14 goal
= _damon_sysfs
.DamosQuotaGoal(
15 metric
=_damon_sysfs
.qgoal_metric_user_input
, target_value
=10000)
16 kdamonds
= _damon_sysfs
.Kdamonds([_damon_sysfs
.Kdamond(
17 contexts
=[_damon_sysfs
.DamonCtx(
19 targets
=[_damon_sysfs
.DamonTarget(pid
=proc
.pid
)],
20 schemes
=[_damon_sysfs
.Damos(
22 quota
=_damon_sysfs
.DamosQuota(
23 goals
=[goal
], reset_interval_ms
=100),
28 err
= kdamonds
.start()
30 print('kdamond start failed: %s' % err
)
33 score_values_to_test
= [0, 15000, 5000, 18000]
34 while proc
.poll() == None:
35 if len(score_values_to_test
) == 0:
39 goal
.current_value
= score_values_to_test
.pop(0)
40 expect_increase
= goal
.current_value
< goal
.target_value
42 err
= kdamonds
.kdamonds
[0].commit_schemes_quota_goals()
44 print('commit_schemes_quota_goals failed: %s' % err
)
47 err
= kdamonds
.kdamonds
[0].update_schemes_effective_quotas()
49 print('before-update_schemes_effective_quotas failed: %s' % err
)
51 last_effective_bytes
= goal
.effective_bytes
55 err
= kdamonds
.kdamonds
[0].update_schemes_effective_quotas()
57 print('after-update_schemes_effective_quotas failed: %s' % err
)
60 print('score: %s, effective quota: %d -> %d (%.3fx)' % (
61 goal
.current_value
, last_effective_bytes
, goal
.effective_bytes
,
62 goal
.effective_bytes
/ last_effective_bytes
63 if last_effective_bytes
!= 0 else -1.0))
65 if last_effective_bytes
== goal
.effective_bytes
:
66 print('efective bytes not changed: %d' % goal
.effective_bytes
)
69 increased
= last_effective_bytes
< goal
.effective_bytes
70 if expect_increase
!= increased
:
71 print('expectation of increase (%s) != increased (%s)' %
72 (expect_increase
, increased
))
74 last_effective_bytes
= goal
.effective_bytes
76 if __name__
== '__main__':