From: JP Kobryn <inwardvessel@gmail.com>
To: Yosry Ahmed <yosryahmed@google.com>,
Shakeel Butt <shakeel.butt@linux.dev>
Cc: hannes@cmpxchg.org, akpm@linux-foundation.org,
rostedt@goodmis.org, linux-mm@kvack.org, cgroups@vger.kernel.org
Subject: Re: [PATCH 2/2] memcg: use memcg flush tracepoint
Date: Fri, 25 Oct 2024 10:04:57 -0700 [thread overview]
Message-ID: <3da0f38a-51f1-43fa-a625-6bb1fe992920@gmail.com> (raw)
In-Reply-To: <CAJD7tkZyttpQk7AYftikVtA6O7w2Wmo9Eu_EwEsusOtNKFnSQA@mail.gmail.com>
On 10/25/24 12:40 AM, Yosry Ahmed wrote:
> On Thu, Oct 24, 2024 at 6:16 PM Shakeel Butt <shakeel.butt@linux.dev> wrote:
>> On Thu, Oct 24, 2024 at 05:57:25PM GMT, Yosry Ahmed wrote:
>>> On Thu, Oct 24, 2024 at 5:26 PM JP Kobryn <inwardvessel@gmail.com> wrote:
>>>> Make use of the flush tracepoint within memcontrol.
>>>>
>>>> Signed-off-by: JP Kobryn <inwardvessel@gmail.com>
>>> Is the intention to use tools like bpftrace to analyze where we flush
>>> the most? In this case, why can't we just attach to the fentry of
>>> do_flush_stats() and use the stack trace to find the path?
>>>
>>> We can also attach to mem_cgroup_flush_stats(), and the difference in
>>> counts between the two will be the number of skipped flushes.
>>>
>> All these functions can get inlined and then we can not really attach
>> easily. We can somehow find the offset in the inlined places and try to
>> use kprobe but it is prohibitive when have to do for multiple kernels
>> built with fdo/bolt.
>>
>> Please note that tracepoints are not really API, so we can remove them
>> in future if we see no usage for them.
> That's fair, but can we just add two tracepoints? This seems enough to
> collect necessary data, and prevent proliferation of tracepoints and
> the addition of the enum.
>
> I am thinking one in mem_cgroup_flush_stats() and one in
> do_flush_stats(), e.g. trace_mem_cgroup_flush_stats() and
> trace_do_flush_stats(). Although the name of the latter is too
> generic, maybe we should rename the function first to add mem_cgroup_*
> or memcg_*.
>
> WDYT?
Hmmm, I think if we did that we wouldn't get accurate info on when the
flush was skipped. Comparing the number of hits between
mem_cgroup_flush_stats() and do_flush_stats() to determine the number of
skips doesn't seem reliable because of the places where do_flush_stats()
is called outside of mem_cgroup_flush_stats(). There would be situations
where a skip occurs, but meanwhile each call to do_flush_stats() outside
of mem_cgroup_flush_stats() would effectively subtract that skip, making
it appear that a skip did not occur.
Maybe as a middle ground we could remove the trace calls for the zswap
and periodic cases, since no skips can occur there. We could then just
leave one trace call in mem_cgroup_flush_stats() and instead of an enum
we can pass a bool saying skipped or not. Something like this:
mem_cgroup_flush_stats()
{
bool needs_flush = memcg_vmstats_needs_flush(...);
trace_memcg_flush_stats(memcg, needs_flush);
if (needs_flush)
do_flush_stats(...);
}
Yosry/Shakeel, do you have any thoughts on whether we should keep the
trace calls for obj_cgroup_may_zswap() and periodic workqueue cases?
next prev parent reply other threads:[~2024-10-25 17:05 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-25 0:25 [PATCH 0/2] memcg: tracepoint for flushing stats JP Kobryn
2024-10-25 0:25 ` [PATCH 1/2] memcg: add memcg flush tracepoint event JP Kobryn
2024-10-25 0:25 ` [PATCH 2/2] memcg: use memcg flush tracepoint JP Kobryn
2024-10-25 0:57 ` Yosry Ahmed
2024-10-25 1:15 ` Shakeel Butt
2024-10-25 7:40 ` Yosry Ahmed
2024-10-25 17:04 ` JP Kobryn [this message]
2024-10-25 17:53 ` Yosry Ahmed
2024-10-25 18:26 ` JP Kobryn
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=3da0f38a-51f1-43fa-a625-6bb1fe992920@gmail.com \
--to=inwardvessel@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=linux-mm@kvack.org \
--cc=rostedt@goodmis.org \
--cc=shakeel.butt@linux.dev \
--cc=yosryahmed@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox