mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
selftests/damon: add a test for update_schemes_tried_regions hang bug
Add a test for reproducing the update_schemes_tried_{regions,bytes}
command-causing indefinite hang bug that fixed by commit 7d6fa31a2f
("mm/damon/sysfs-schemes: add timeout for update_schemes_tried_regions"),
to avoid mistakenly re-introducing the bug. Refer to the fix commit for
more details of the bug.
Link: https://lkml.kernel.org/r/20231212194810.54457-6-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
b5906f5f73
commit
e3898efaff
2 changed files with 34 additions and 0 deletions
|
@ -10,6 +10,7 @@ TEST_PROGS += debugfs_empty_targets.sh debugfs_huge_count_read_write.sh
|
|||
TEST_PROGS += debugfs_duplicate_context_creation.sh
|
||||
TEST_PROGS += debugfs_rm_non_contexts.sh
|
||||
TEST_PROGS += sysfs.sh sysfs_update_removed_scheme_dir.sh
|
||||
TEST_PROGS += sysfs_update_schemes_tried_regions_hang.py
|
||||
TEST_PROGS += sysfs_update_schemes_tried_regions_wss_estimation.py
|
||||
TEST_PROGS += reclaim.sh lru_sort.sh
|
||||
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/env python3
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
import _damon_sysfs
|
||||
|
||||
def main():
|
||||
proc = subprocess.Popen(['sleep', '2'])
|
||||
kdamonds = _damon_sysfs.Kdamonds([_damon_sysfs.Kdamond(
|
||||
contexts=[_damon_sysfs.DamonCtx(
|
||||
ops='vaddr',
|
||||
targets=[_damon_sysfs.DamonTarget(pid=proc.pid)],
|
||||
schemes=[_damon_sysfs.Damos(
|
||||
access_pattern=_damon_sysfs.DamosAccessPattern(
|
||||
nr_accesses=[200, 200]))] # schemes
|
||||
)] # contexts
|
||||
)]) # kdamonds
|
||||
|
||||
err = kdamonds.start()
|
||||
if err != None:
|
||||
print('kdmaond start failed: %s' % err)
|
||||
exit(1)
|
||||
|
||||
while proc.poll() == None:
|
||||
err = kdamonds.kdamonds[0].update_schemes_tried_bytes()
|
||||
if err != None:
|
||||
print('tried bytes update failed: %s' % err)
|
||||
exit(1)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in a new issue