All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lance Yang <lance.yang@linux.dev>
To: Guopeng Zhang <zhangguopeng@kylinos.cn>
Cc: shuah@kernel.org, mkoutny@suse.com, linux-mm@kvack.org,
	muchun.song@linux.dev, linux-kselftest@vger.kernel.org,
	shakeel.butt@linux.dev, linux-kernel@vger.kernel.org,
	tj@kernel.org, hannes@cmpxchg.org, mhocko@kernel.org,
	roman.gushchin@linux.dev
Subject: Re: [PATCH v2] selftests: cgroup: make test_memcg_sock robust against delayed sock stats
Date: Thu, 20 Nov 2025 13:40:34 +0800	[thread overview]
Message-ID: <5ad2b75f-748a-4e93-8d11-63295bda0cbf@linux.dev> (raw)
In-Reply-To: <20251120031619.1828911-1-zhangguopeng@kylinos.cn>



On 2025/11/20 11:16, Guopeng Zhang wrote:
> test_memcg_sock() currently requires that memory.stat's "sock " counter
> is exactly zero immediately after the TCP server exits. On a busy system
> this assumption is too strict:
> 
>    - Socket memory may be freed with a small delay (e.g. RCU callbacks).
>    - memcg statistics are updated asynchronously via the rstat flushing
>      worker, so the "sock " value in memory.stat can stay non-zero for a
>      short period of time even after all socket memory has been uncharged.
> 
> As a result, test_memcg_sock() can intermittently fail even though socket
> memory accounting is working correctly.
> 
> Make the test more robust by polling memory.stat for the "sock "
> counter and allowing it some time to drop to zero instead of checking
> it only once. The timeout is set to 3 seconds to cover the periodic
> rstat flush interval (FLUSH_TIME = 2*HZ by default) plus some
> scheduling slack. If the counter does not become zero within the
> timeout, the test still fails as before.
> 
> On my test system, running test_memcontrol 50 times produced:
> 
>    - Before this patch:  6/50 runs passed.
>    - After this patch:  50/50 runs passed.
> 
> Suggested-by: Lance Yang <lance.yang@linux.dev>
> Signed-off-by: Guopeng Zhang <zhangguopeng@kylinos.cn>
> ---
> v2:
>   - Mention the periodic rstat flush interval (FLUSH_TIME = 2*HZ) in
>     the comment and clarify the rationale for the 3s timeout.
>   - Replace the hard-coded retry count and wait interval with macros
>     to avoid magic numbers and make the 3s timeout calculation explicit.
> ---
>   .../selftests/cgroup/test_memcontrol.c        | 30 ++++++++++++++++++-
>   1 file changed, 29 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/testing/selftests/cgroup/test_memcontrol.c b/tools/testing/selftests/cgroup/test_memcontrol.c
> index 4e1647568c5b..7bea656658a2 100644
> --- a/tools/testing/selftests/cgroup/test_memcontrol.c
> +++ b/tools/testing/selftests/cgroup/test_memcontrol.c
> @@ -24,6 +24,9 @@
>   static bool has_localevents;
>   static bool has_recursiveprot;
>   
> +#define MEMCG_SOCKSTAT_WAIT_RETRIES        30              /* 3s total */
> +#define MEMCG_SOCKSTAT_WAIT_INTERVAL_US    (100 * 1000)    /* 100 ms */

Nit: Defines are usually placed at the top of the file (e.g., after the
#include block). Placing them between global variables and functions
looks a bit out of place, IMHO ...
Otherwise, feel free to add:

Reviewed-by: Lance Yang <lance.yang@linux.dev>
[...]

Cheers,
Lance

  reply	other threads:[~2025-11-20  5:40 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-20  3:16 [PATCH v2] selftests: cgroup: make test_memcg_sock robust against delayed sock stats Guopeng Zhang
2025-11-20  5:40 ` Lance Yang [this message]
2025-11-20  6:09   ` Guopeng Zhang

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=5ad2b75f-748a-4e93-8d11-63295bda0cbf@linux.dev \
    --to=lance.yang@linux.dev \
    --cc=hannes@cmpxchg.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=mkoutny@suse.com \
    --cc=muchun.song@linux.dev \
    --cc=roman.gushchin@linux.dev \
    --cc=shakeel.butt@linux.dev \
    --cc=shuah@kernel.org \
    --cc=tj@kernel.org \
    --cc=zhangguopeng@kylinos.cn \
    /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.