From: SeongJae Park <sj@kernel.org>
To: Vinicius Petrucci <vpetrucci@gmail.com>
Cc: SeongJae Park <sj@kernel.org>, damon@lists.linux.dev
Subject: Re: Issue while testing new fvaddr feature
Date: Thu, 20 Oct 2022 00:43:44 +0000 [thread overview]
Message-ID: <20221020004344.99662-1-sj@kernel.org> (raw)
In-Reply-To: <CAEZ6=UN4jagT49VHPr4oM0BSqUOybFyty85hrWKeKAq0QApSXA@mail.gmail.com>
Hi Vinicius,
On Wed, 19 Oct 2022 18:58:15 -0500 Vinicius Petrucci <vpetrucci@gmail.com> wrote:
> Hi SeongJae!
>
> I appreciate your feedback on this. Your explanation makes sense and I
> didn't notice the "commit" feature. Sorry!
No problem, I'm glad to be able to help you.
BTW, we usually reply to emails in interleaved style[1]. It would be better if
you could also use the style from next time.
[1] https://en.wikipedia.org/wiki/Posting_style
>
> Nevertheless, I am still not able to get any perf data, and now I am
> getting some errors. Not sure what I am doing wrong now. I tried both
> approaches.
>
> 1) I tried doing “on” only after setting the start/end address, and got:
>
> # echo on > /sys/kernel/mm/damon/admin/kdamonds/0/state
>
> -bash: echo: write error: Invalid argument
I modified your script in the way and I was able to reproduce your issue. I
also got below great debugging-important information thanks to your script:
$ sudo bash test.sh
140437117468672 140438191214591
140436041629696 140438191214591
test.sh: line 40: echo: write error: Invalid argument
$
So, that means the script was trying to 140437117468672-140438191214591 of the
masim's virtual address space range as the first monitoring region, and
140436041629696-140438191214591 of the range as the second monitoring region.
As you can show, the two ranges are overlapping. DAMON sysfs interface assumes
the regions will not overlap, and in order. That is, your script enters
invalid regions, and therefore DAMON returns the error. I admit that the
documentation is not kindly explanining this, sorry. I will try to elaborate
the document later.
To show if this is the case, I slightly modified your test script to monitor
only the first region as below.
diff --git a/test.sh b/test.sh
index c4e0145feebe..b2869eefc25e 100644
--- a/test.sh
+++ b/test.sh
@@ -18,25 +18,18 @@ start2=`cat strace.out | tail -2 | tail -1 | cut -f2 -d=`
# convert to decimal
start1=$((${start1}))
-start2=$((${start2}))
size1=`cat strace.out | tail -2 | cut -d, -f2 | head -1`
-size2=`cat strace.out | tail -2 | cut -d, -f2 | tail -1`
end1=$(($start1+$size1-1))
-end2=$(($start1+$size1-1))
echo $start1 $end1
-echo $start2 $end2
-echo 2 > /sys/kernel/mm/damon/admin/kdamonds/0/contexts/0/targets/0/regions/nr_regions
+echo 1 > /sys/kernel/mm/damon/admin/kdamonds/0/contexts/0/targets/0/regions/nr_regions
echo $start1 > /sys/kernel/mm/damon/admin/kdamonds/0/contexts/0/targets/0/regions/0/start
echo $end1 > /sys/kernel/mm/damon/admin/kdamonds/0/contexts/0/targets/0/regions/0/end
-echo $start2 > /sys/kernel/mm/damon/admin/kdamonds/0/contexts/0/targets/0/regions/1/start
-echo $end2 > /sys/kernel/mm/damon/admin/kdamonds/0/contexts/0/targets/0/regions/1/end
-
echo on > /sys/kernel/mm/damon/admin/kdamonds/0/state
perf record -e damon:damon_aggregated &
After this change, 'perf script' shows some data.
$ sudo perf script | head -n 15
kdamond.0 99584 [008] 30042.929871: damon:damon_aggregated: target_id=0 nr_regions=4 139805163782144-139805292630016: 1 0
kdamond.0 99584 [008] 30042.929876: damon:damon_aggregated: target_id=0 nr_regions=4 139805292630016-139805378531328: 1 0
kdamond.0 99584 [008] 30042.929877: damon:damon_aggregated: target_id=0 nr_regions=4 139805378531328-139805722128384: 1 0
kdamond.0 99584 [008] 30042.929877: damon:damon_aggregated: target_id=0 nr_regions=4 139805722128384-139806237528064: 1 0
kdamond.0 99584 [008] 30043.036517: damon:damon_aggregated: target_id=0 nr_regions=7 139805163782144-139805202436096: 0 0
kdamond.0 99584 [008] 30043.036520: damon:damon_aggregated: target_id=0 nr_regions=7 139805202436096-139805301219328: 0 0
kdamond.0 99584 [008] 30043.036521: damon:damon_aggregated: target_id=0 nr_regions=7 139805301219328-139805378531328: 0 0
kdamond.0 99584 [008] 30043.036522: damon:damon_aggregated: target_id=0 nr_regions=7 139805378531328-139805447249920: 0 0
kdamond.0 99584 [008] 30043.036522: damon:damon_aggregated: target_id=0 nr_regions=7 139805447249920-139805722128384: 0 0
kdamond.0 99584 [008] 30043.036523: damon:damon_aggregated: target_id=0 nr_regions=7 139805722128384-139806082908160: 1 1
kdamond.0 99584 [008] 30043.036524: damon:damon_aggregated: target_id=0 nr_regions=7 139806082908160-139806237528064: 0 0
kdamond.0 99584 [008] 30043.138314: damon:damon_aggregated: target_id=0 nr_regions=11 139805163782144-139805202436096: 1 0
kdamond.0 99584 [008] 30043.138317: damon:damon_aggregated: target_id=0 nr_regions=11 139805202436096-139805281460224: 1 0
kdamond.0 99584 [008] 30043.138318: damon:damon_aggregated: target_id=0 nr_regions=11 139805281460224-139805301219328: 0 1
kdamond.0 99584 [008] 30043.138319: damon:damon_aggregated: target_id=0 nr_regions=11 139805301219328-139805370798080: 1 0
>
> 2) When doing “on” just after setting pid_target, then setting
> start/end addr regions (as originally), then added a new echo “commit”
> to the state variable, the kdamond automatically goes to “off” state
> and cannot be set to "on" anymore. As follows:
>
> # echo commit > /sys/kernel/mm/damon/admin/kdamonds/0/state
>
> # cat /sys/kernel/mm/damon/admin/kdamonds/0/state
>
> off
>
> # echo on > /sys/kernel/mm/damon/admin/kdamonds/0/state
>
> -bash: echo: write error: Invalid argument
When you write 'commit' to 'state' file, DAMON reads the region directories and
find that the input is invalid, so refuse to continue running.
DAMON does not reset the file inputs, though. So when you write 'on' to
'state' file again, DAMON again reads the invalid region inputs and the
situation becomes same to the scenario 1 (set region first and write 'on').
>
> Please let me know if you have any further directions on how to better
> understand/debug this.
Hope my answer explains the situation. If there is anything I missed or wrong,
or if you have any more question, please feel free to let me know.
Again, thank you for your question.
Thanks,
SJ
>
> THanks again!
next prev parent reply other threads:[~2022-10-20 0:43 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-19 2:49 Issue while testing new fvaddr feature Vinicius Petrucci
2022-10-19 17:45 ` SeongJae Park
2022-10-19 23:58 ` Vinicius Petrucci
2022-10-20 0:43 ` SeongJae Park [this message]
2022-10-20 1:17 ` Vinicius Petrucci
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=20221020004344.99662-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=damon@lists.linux.dev \
--cc=vpetrucci@gmail.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.