All Virtuozzo development lists (kernel + QEMU)
 help / color / mirror / Atom feed
From: Eva Kurchatova <eva.kurchatova@virtuozzo.com>
Subject: [Devel] [PATCH vz10] selftests/damon: wait for the merge to apply the new max_nr_regions
Date: Fri, 21 Aug 2026 18:13:24 +0300	[thread overview]
Message-ID: <20260821151326.794546-1-eva.kurchatova@virtuozzo.com> (raw)

damon_nr_regions sleeps 0.3s after committing max_nr_regions and then
reads the number of regions back, which assumes the merge has happened
by then.  On a machine that is not idle it has not, and the test fails
on a region count that is still the old one.

Poll until the count settles instead of sleeping for a fixed time.

https://virtuozzo.atlassian.net/browse/VSTOR-132453
Feature: fix selftests
Signed-off-by: Eva Kurchatova <eva.kurchatova@virtuozzo.com>
---
 .../selftests/damon/damon_nr_regions.py       | 35 +++++++++++--------
 1 file changed, 20 insertions(+), 15 deletions(-)

diff --git a/tools/testing/selftests/damon/damon_nr_regions.py b/tools/testing/selftests/damon/damon_nr_regions.py
index cb31cd140d22..39063ce5b27d 100755
--- a/tools/testing/selftests/damon/damon_nr_regions.py
+++ b/tools/testing/selftests/damon/damon_nr_regions.py
@@ -4,6 +4,7 @@
 import subprocess
 import time
 
+
 import _damon_sysfs
 
 def test_nr_regions(real_nr_regions, min_nr_regions, max_nr_regions):
@@ -114,27 +115,31 @@ def main():
         proc.terminate()
         print('commit failed: %s' % err)
         exit(1)
-    # wait for next merge operation is executed
-    time.sleep(0.3)
+    # wait for the merge operations to apply the new max_nr_regions
+    nr_tried_regions = 0
+    for _ in range(50):
+        time.sleep(0.1)
 
-    err = kdamonds.kdamonds[0].update_schemes_tried_regions()
-    if err is not None:
-        proc.terminate()
-        print('tried regions update failed: %s' % err)
-        exit(1)
+        err = kdamonds.kdamonds[0].update_schemes_tried_regions()
+        if err is not None:
+            proc.terminate()
+            print('tried regions update failed: %s' % err)
+            exit(1)
 
-    scheme = kdamonds.kdamonds[0].contexts[0].schemes[0]
-    if scheme.tried_regions is None:
-        proc.terminate()
-        print('tried regions is not collected')
-        exit(1)
+        scheme = kdamonds.kdamonds[0].contexts[0].schemes[0]
+        if scheme.tried_regions is None:
+            proc.terminate()
+            print('tried regions is not collected')
+            exit(1)
+
+        nr_tried_regions = len(scheme.tried_regions)
+        if 0 < nr_tried_regions <= 7:
+            break
+    proc.terminate()
 
-    nr_tried_regions = len(scheme.tried_regions)
     if nr_tried_regions <= 0:
-        proc.terminate()
         print('tried regions is not created')
         exit(1)
-    proc.terminate()
 
     if nr_tried_regions > 7:
         print('fail online-tuned max_nr_regions: %d > 7' % nr_tried_regions)
-- 
2.55.0


             reply	other threads:[~2026-08-21 15:13 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-21 15:13 Eva Kurchatova [this message]
2026-08-31 23:22 ` Eva Kurchatova (Virtuozzo)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260821151326.794546-1-eva.kurchatova@virtuozzo.com \
    --to=eva.kurchatova@virtuozzo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.