Re: [PATCH v2 bpf-next 10/10] selftests/bpf: add build ID tests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jul 30, 2024 at 01:03:17PM -0700, Andrii Nakryiko wrote:
> On Sun, Jul 28, 2024 at 12:38 PM Jiri Olsa <olsajiri@xxxxxxxxx> wrote:
> >
> > On Fri, Jul 26, 2024 at 05:37:55PM -0700, Andrii Nakryiko wrote:
> > > On Fri, Jul 26, 2024 at 5:27 AM Jiri Olsa <olsajiri@xxxxxxxxx> wrote:
> > > >
> > > > On Thu, Jul 25, 2024 at 01:03:55PM -0700, Andrii Nakryiko wrote:
> > > > > On Thu, Jul 25, 2024 at 5:12 AM Jiri Olsa <olsajiri@xxxxxxxxx> wrote:
> > > > > >
> > > > > > On Wed, Jul 24, 2024 at 03:52:10PM -0700, Andrii Nakryiko wrote:
> > > > > > > Add a new set of tests validating behavior of capturing stack traces
> > > > > > > with build ID. We extend uprobe_multi target binary with ability to
> > > > > > > trigger uprobe (so that we can capture stack traces from it), but also
> > > > > > > we allow to force build ID data to be either resident or non-resident in
> > > > > > > memory (see also a comment about quirks of MADV_PAGEOUT).
> > > > > > >
> > > > > > > That way we can validate that in non-sleepable context we won't get
> > > > > > > build ID (as expected), but with sleepable uprobes we will get that
> > > > > > > build ID regardless of it being physically present in memory.
> > > > > > >
> > > > > > > Also, we add a small add-on linker script which reorders
> > > > > > > .note.gnu.build-id section and puts it after (big) .text section,
> > > > > > > putting build ID data outside of the very first page of ELF file. This
> > > > > > > will test all the relaxations we did in build ID parsing logic in kernel
> > > > > > > thanks to freader abstraction.
> > > > > > >
> > > > > > > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx>
> > > > > >
> > > > > > one of my bpf selftests runs showed:
> > > > > >
> > > > > > test_build_id:PASS:parse_build_id 0 nsec
> > > > > > subtest_nofault:PASS:skel_open 0 nsec
> > > > > > subtest_nofault:PASS:link 0 nsec
> > > > > > subtest_nofault:PASS:trigger_uprobe 0 nsec
> > > > > > subtest_nofault:PASS:res 0 nsec
> > > > > > subtest_nofault:FAIL:build_id_status unexpected build_id_status: actual 1 != expected 2
> > > > > > #42/1    build_id/nofault-paged-out:FAIL
> > > > > > #42/2    build_id/nofault-paged-in:OK
> > > > > > #42/3    build_id/sleepable:OK
> > > > > > #42      build_id:FAIL
> > > > > >
> > > > > > I could never reproduce again.. but I wonder the the page could sneak
> > > > > > in before the bpf program is hit and the buildid will get parsed?
> > > > > >
> > > > >
> > > > > Yes, and I just realized that I forgot to mark this test as serial. If
> > > > > there is parallel test that also runs uprobe_multi and that causes
> > > > > build_id page to be paged in into page cache, then this might succeed.
> > > > > So I need to mark the test itself serial.
> > > > >
> > > > > Another issue which I was debugging (and fixed) yesterday was that if
> > > > > the memory passed for MADV_PAGEOUT is not yet memory mapped into the
> > > > > current process, then it won't be really removed from the page cache.
> > > > > I avoid that by first paging it in, and then MADV_PAGEOUT.
> > > >
> > > > ok, I triggered that in serial run, so I probably hit this one
> > > >
> > >
> > > you did it with v2 of the patch set? I had this bug in v1, but v2
> > > should be fine, as far as I understand (due to unconditional
> > > madvise(addr, page_sz, MADV_POPULATE_READ); before madvise(addr,
> > > page_sz, MADV_PAGEOUT)). At least I haven't been able to reproduce
> > > that anymore and BPF CI is now happy as well.
> >
> > yes, it's with v2 and I can still see that.. but only for the first run of
> > the test after reboot.. so far I have no clue.. I can see the successful
> > page-out madvise (still not sure how much is that telling about the page
> > being paged out), and then the build id code sees the page just fine
> >
> > attaching my .config in case
> >
> 
> I wasn't able to repro this, sorry. It works very reliably for me with
> your or my config. Given it also seems to work reliably in BPF CI, I'm
> still inclined to add this tests, I think it's good to have that
> coverage.
> 
> I'll monitor, and if it becomes flaky, we'll need to reassess this, of course.
> 
Hi Andrii and Jirka,

I encountered this error on powerpc, which is happening quiet consistently:

# ./test_progs -t build_id/nofault-paged-out
serial_test_build_id:PASS:parse_build_id 0 nsec
subtest_nofault:PASS:skel_open 0 nsec
subtest_nofault:PASS:link 0 nsec
subtest_nofault:PASS:trigger_uprobe 0 nsec
subtest_nofault:PASS:res 0 nsec
subtest_nofault:FAIL:build_id_status unexpected build_id_status: actual 1 != expected 2
#46/1    build_id/nofault-paged-out:FAIL
#46      build_id:FAIL
#397     stacktrace_build_id:OK
#398     stacktrace_build_id_nmi:OK

I dumped vma mapping using pmap in trigger_uprobe function 
before/after MADV_POPULATE_READ and b/w MADV_POPULATE_READ 
and MADV_PAGEOUT, page residency using mincore() (as shown 
"Before uprobe: Page residency = ") and addr (as shown 
"Entered trigger_uprobe addr ->").

Here I am putting out 3 scenarios:

1. #./test_progs -t build_id/nofault-paged-out
Entered trigger_uprobe addr -> 0x105a0000
144992:   ./uprobe_multi uprobe-paged-out
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000010000000    7744     704      64 r-x-- uprobe_multi
0000000010790000      64      64      64 r---- uprobe_multi
00000000107a0000      64      64      64 rw--- uprobe_multi
000001002bf90000     192      64      64 rw---   [ anon ]
00007fffb55d0000     832      64       0 r-x-- libzstd.so.1.5.5
00007fffb56a0000      64      64      64 r---- libzstd.so.1.5.5
00007fffb56b0000      64      64      64 rw--- libzstd.so.1.5.5
00007fffb56c0000    2304    1280       0 r-x-- libc.so.6
00007fffb5900000      64      64      64 r---- libc.so.6
00007fffb5910000      64      64      64 rw--- libc.so.6
00007fffb5920000     192      64       0 r-x-- libz.so.1.3.1.zlib-ng
00007fffb5950000      64      64      64 r---- libz.so.1.3.1.zlib-ng
00007fffb5960000      64      64      64 rw--- libz.so.1.3.1.zlib-ng
00007fffb5970000     192      64       0 r-x-- libelf-0.192.so
00007fffb59a0000      64      64      64 r---- libelf-0.192.so
00007fffb59b0000      64       0       0 rw---   [ anon ]
00007fffb59d0000     256       0       0 r----   [ anon ]
00007fffb5a10000      64      64       0 r-x--   [ anon ]
00007fffb5a20000     320     320       0 r-x-- ld64.so.2
00007fffb5a70000      64      64      64 r---- ld64.so.2
00007fffb5a80000      64      64      64 rw--- ld64.so.2
00007fffee7a0000     192      64      64 rw---   [ stack ]
---------------- ------- ------- ------- 
total kB           13056    3392     896
144992:   ./uprobe_multi uprobe-paged-out
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000010000000    7744     704      64 r-x-- uprobe_multi
0000000010790000      64      64      64 r---- uprobe_multi
00000000107a0000      64      64      64 rw--- uprobe_multi
000001002bf90000     192      64      64 rw---   [ anon ]
00007fffb55d0000     832      64       0 r-x-- libzstd.so.1.5.5
00007fffb56a0000      64      64      64 r---- libzstd.so.1.5.5
00007fffb56b0000      64      64      64 rw--- libzstd.so.1.5.5
00007fffb56c0000    2304    1344       0 r-x-- libc.so.6
00007fffb5900000      64      64      64 r---- libc.so.6
00007fffb5910000      64      64      64 rw--- libc.so.6
00007fffb5920000     192      64       0 r-x-- libz.so.1.3.1.zlib-ng
00007fffb5950000      64      64      64 r---- libz.so.1.3.1.zlib-ng
00007fffb5960000      64      64      64 rw--- libz.so.1.3.1.zlib-ng
00007fffb5970000     192      64       0 r-x-- libelf-0.192.so
00007fffb59a0000      64      64      64 r---- libelf-0.192.so
00007fffb59b0000      64       0       0 rw---   [ anon ]
00007fffb59d0000     256       0       0 r----   [ anon ]
00007fffb5a10000      64      64       0 r-x--   [ anon ]
00007fffb5a20000     320     320       0 r-x-- ld64.so.2
00007fffb5a70000      64      64      64 r---- ld64.so.2
00007fffb5a80000      64      64      64 rw--- ld64.so.2
00007fffee7a0000     192      64      64 rw---   [ stack ]
---------------- ------- ------- ------- 
total kB           13056    3456     896
144992:   ./uprobe_multi uprobe-paged-out
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000010000000    7744     704      64 r-x-- uprobe_multi
0000000010790000      64      64      64 r---- uprobe_multi
00000000107a0000      64      64      64 rw--- uprobe_multi
000001002bf90000     192      64      64 rw---   [ anon ]
00007fffb55d0000     832      64       0 r-x-- libzstd.so.1.5.5
00007fffb56a0000      64      64      64 r---- libzstd.so.1.5.5
00007fffb56b0000      64      64      64 rw--- libzstd.so.1.5.5
00007fffb56c0000    2304    1344       0 r-x-- libc.so.6
00007fffb5900000      64      64      64 r---- libc.so.6
00007fffb5910000      64      64      64 rw--- libc.so.6
00007fffb5920000     192      64       0 r-x-- libz.so.1.3.1.zlib-ng
00007fffb5950000      64      64      64 r---- libz.so.1.3.1.zlib-ng
00007fffb5960000      64      64      64 rw--- libz.so.1.3.1.zlib-ng
00007fffb5970000     192      64       0 r-x-- libelf-0.192.so
00007fffb59a0000      64      64      64 r---- libelf-0.192.so
00007fffb59b0000      64       0       0 rw---   [ anon ]
00007fffb59d0000     256       0       0 r----   [ anon ]
00007fffb5a10000      64      64       0 r-x--   [ anon ]
00007fffb5a20000     320     320       0 r-x-- ld64.so.2
00007fffb5a70000      64      64      64 r---- ld64.so.2
00007fffb5a80000      64      64      64 rw--- ld64.so.2
00007fffee7a0000     192      64      64 rw---   [ stack ]
---------------- ------- ------- ------- 
total kB           13056    3456     896
Before uprobe: Page residency = resident
After uprobe: Page residency = resident
serial_test_build_id:PASS:parse_build_id 0 nsec
subtest_nofault:PASS:skel_open 0 nsec
subtest_nofault:PASS:link 0 nsec
subtest_nofault:PASS:trigger_uprobe 0 nsec
subtest_nofault:PASS:res 0 nsec
subtest_nofault:FAIL:build_id_status unexpected build_id_status: actual 1 != expected 2
#46/1    build_id/nofault-paged-out:FAIL
#46      build_id:FAIL
#397     stacktrace_build_id:OK
#398     stacktrace_build_id_nmi:OK

All error logs:
serial_test_build_id:PASS:parse_build_id 0 nsec
subtest_nofault:PASS:skel_open 0 nsec
subtest_nofault:PASS:link 0 nsec
subtest_nofault:PASS:trigger_uprobe 0 nsec
subtest_nofault:PASS:res 0 nsec
subtest_nofault:FAIL:build_id_status unexpected build_id_status: actual 1 != expected 2
#46/1    build_id/nofault-paged-out:FAIL
#46      build_id:FAIL
Summary: 2/0 PASSED, 0 SKIPPED, 1 FAILED

Here it can be seen that RSS for vma containing addr (0x105a0000)
is not changing (remains 704) and the selftest fails.

2. When alignment in linker script is changed to 65536 (default 
   page size in powerpc is 64k):

git diff uprobe_multi.ld
diff --git a/tools/testing/selftests/bpf/uprobe_multi.ld b/tools/testing/selftests/bpf/uprobe_multi.ld
index a2e94828b..2063714b2 100644
--- a/tools/testing/selftests/bpf/uprobe_multi.ld
+++ b/tools/testing/selftests/bpf/uprobe_multi.ld
@@ -1,8 +1,8 @@
 SECTIONS
 {
-       . = ALIGN(4096);
+       . = ALIGN(65536);
        .note.gnu.build-id : { *(.note.gnu.build-id) }
-       . = ALIGN(4096);
+       . = ALIGN(65536);
 }
 INSERT AFTER .text;

#./test_progs -t build_id/nofault-paged-out -v
bpf_testmod.ko is already unloaded.
Loading bpf_testmod.ko...
Successfully loaded bpf_testmod.ko.
serial_test_build_id:PASS:parse_build_id 0 nsec
subtest_nofault:PASS:skel_open 0 nsec
subtest_nofault:PASS:link 0 nsec
Entered trigger_uprobe addr -> 0x105b0000
145238:   ./uprobe_multi uprobe-paged-out
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000010000000    7872     768     768 r-x-- uprobe_multi
00000000107b0000      64      64      64 r---- uprobe_multi
00000000107c0000      64      64      64 rw--- uprobe_multi
000001003a6b0000     192      64      64 rw---   [ anon ]
00007fffa3eb0000     832      64       0 r-x-- libzstd.so.1.5.5
00007fffa3f80000      64      64      64 r---- libzstd.so.1.5.5
00007fffa3f90000      64      64      64 rw--- libzstd.so.1.5.5
00007fffa3fa0000    2304    1280       0 r-x-- libc.so.6
00007fffa41e0000      64      64      64 r---- libc.so.6
00007fffa41f0000      64      64      64 rw--- libc.so.6
00007fffa4200000     192      64       0 r-x-- libz.so.1.3.1.zlib-ng
00007fffa4230000      64      64      64 r---- libz.so.1.3.1.zlib-ng
00007fffa4240000      64      64      64 rw--- libz.so.1.3.1.zlib-ng
00007fffa4250000     192      64       0 r-x-- libelf-0.192.so
00007fffa4280000      64      64      64 r---- libelf-0.192.so
00007fffa4290000      64       0       0 rw---   [ anon ]
00007fffa42b0000     256       0       0 r----   [ anon ]
00007fffa42f0000      64      64       0 r-x--   [ anon ]
00007fffa4300000     320     320       0 r-x-- ld64.so.2
00007fffa4350000      64      64      64 r---- ld64.so.2
00007fffa4360000      64      64      64 rw--- ld64.so.2
00007fffc6880000     192      64      64 rw---   [ stack ]
---------------- ------- ------- ------- 
total kB           13184    3456    1600
145238:   ./uprobe_multi uprobe-paged-out
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000010000000    7872     832     832 r-x-- uprobe_multi
00000000107b0000      64      64      64 r---- uprobe_multi
00000000107c0000      64      64      64 rw--- uprobe_multi
000001003a6b0000     192      64      64 rw---   [ anon ]
00007fffa3eb0000     832      64       0 r-x-- libzstd.so.1.5.5
00007fffa3f80000      64      64      64 r---- libzstd.so.1.5.5
00007fffa3f90000      64      64      64 rw--- libzstd.so.1.5.5
00007fffa3fa0000    2304    1344       0 r-x-- libc.so.6
00007fffa41e0000      64      64      64 r---- libc.so.6
00007fffa41f0000      64      64      64 rw--- libc.so.6
00007fffa4200000     192      64       0 r-x-- libz.so.1.3.1.zlib-ng
00007fffa4230000      64      64      64 r---- libz.so.1.3.1.zlib-ng
00007fffa4240000      64      64      64 rw--- libz.so.1.3.1.zlib-ng
00007fffa4250000     192      64       0 r-x-- libelf-0.192.so
00007fffa4280000      64      64      64 r---- libelf-0.192.so
00007fffa4290000      64       0       0 rw---   [ anon ]
00007fffa42b0000     256       0       0 r----   [ anon ]
00007fffa42f0000      64      64       0 r-x--   [ anon ]
00007fffa4300000     320     320       0 r-x-- ld64.so.2
00007fffa4350000      64      64      64 r---- ld64.so.2
00007fffa4360000      64      64      64 rw--- ld64.so.2
00007fffc6880000     192      64      64 rw---   [ stack ]
---------------- ------- ------- ------- 
total kB           13184    3584    1664
145238:   ./uprobe_multi uprobe-paged-out
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000010000000    7872     768     768 r-x-- uprobe_multi
00000000107b0000      64      64      64 r---- uprobe_multi
00000000107c0000      64      64      64 rw--- uprobe_multi
000001003a6b0000     192      64      64 rw---   [ anon ]
00007fffa3eb0000     832      64       0 r-x-- libzstd.so.1.5.5
00007fffa3f80000      64      64      64 r---- libzstd.so.1.5.5
00007fffa3f90000      64      64      64 rw--- libzstd.so.1.5.5
00007fffa3fa0000    2304    1344       0 r-x-- libc.so.6
00007fffa41e0000      64      64      64 r---- libc.so.6
00007fffa41f0000      64      64      64 rw--- libc.so.6
00007fffa4200000     192      64       0 r-x-- libz.so.1.3.1.zlib-ng
00007fffa4230000      64      64      64 r---- libz.so.1.3.1.zlib-ng
00007fffa4240000      64      64      64 rw--- libz.so.1.3.1.zlib-ng
00007fffa4250000     192      64       0 r-x-- libelf-0.192.so
00007fffa4280000      64      64      64 r---- libelf-0.192.so
00007fffa4290000      64       0       0 rw---   [ anon ]
00007fffa42b0000     256       0       0 r----   [ anon ]
00007fffa42f0000      64      64       0 r-x--   [ anon ]
00007fffa4300000     320     320       0 r-x-- ld64.so.2
00007fffa4350000      64      64      64 r---- ld64.so.2
00007fffa4360000      64      64      64 rw--- ld64.so.2
00007fffc6880000     192      64      64 rw---   [ stack ]
---------------- ------- ------- ------- 
total kB           13184    3520    1600
Before uprobe: Page residency = resident
After uprobe: Page residency = resident
subtest_nofault:PASS:trigger_uprobe 0 nsec
subtest_nofault:PASS:res 0 nsec
FRAME #00: BUILD ID = 4f635d1d48e4f2b67b62a9a07285668cdc85fb18 OFFSET = 2c3f1c
FRAME #01: BUILD ID = 4f635d1d48e4f2b67b62a9a07285668cdc85fb18 OFFSET = 5a0824
FRAME #02: BUILD ID = 4f635d1d48e4f2b67b62a9a07285668cdc85fb18 OFFSET = 5a0994
FRAME #03: BUILD ID = 09139ae1e5cbaf5c598222698e5b8e2e250260b1 OFFSET = 2aba4
FRAME #04: BUILD ID = 09139ae1e5cbaf5c598222698e5b8e2e250260b1 OFFSET = 2adec
FRAME #05: BUILD ID = 4f635d1d48e4f2b67b62a9a07285668cdc85fb18 OFFSET = fffffffff0000000
subtest_nofault:FAIL:build_id_status unexpected build_id_status: actual 1 != expected 2
#46/1    build_id/nofault-paged-out:FAIL
#46      build_id:FAIL

Here RSS changes(768 -> 832 -> 768) but looks like page is still 
not getting evicted (as shown "Before uprobe: Page residency = resident") 
after MADV_PAGEOUT and the selftest fails.

3. But in the very next run page is evicted and selftest passes:

#./test_progs -t build_id/nofault-paged-out
Entered trigger_uprobe addr -> 0x105b0000
145256:   ./uprobe_multi uprobe-paged-out
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000010000000    7872     768      64 r-x-- uprobe_multi
00000000107b0000      64      64      64 r---- uprobe_multi
00000000107c0000      64      64      64 rw--- uprobe_multi
00000100317b0000     192      64      64 rw---   [ anon ]
00007fffa5cd0000     832      64       0 r-x-- libzstd.so.1.5.5
00007fffa5da0000      64      64      64 r---- libzstd.so.1.5.5
00007fffa5db0000      64      64      64 rw--- libzstd.so.1.5.5
00007fffa5dc0000    2304    1280       0 r-x-- libc.so.6
00007fffa6000000      64      64      64 r---- libc.so.6
00007fffa6010000      64      64      64 rw--- libc.so.6
00007fffa6020000     192      64       0 r-x-- libz.so.1.3.1.zlib-ng
00007fffa6050000      64      64      64 r---- libz.so.1.3.1.zlib-ng
00007fffa6060000      64      64      64 rw--- libz.so.1.3.1.zlib-ng
00007fffa6070000     192      64       0 r-x-- libelf-0.192.so
00007fffa60a0000      64      64      64 r---- libelf-0.192.so
00007fffa60b0000      64       0       0 rw---   [ anon ]
00007fffa60d0000     256       0       0 r----   [ anon ]
00007fffa6110000      64      64       0 r-x--   [ anon ]
00007fffa6120000     320     320       0 r-x-- ld64.so.2
00007fffa6170000      64      64      64 r---- ld64.so.2
00007fffa6180000      64      64      64 rw--- ld64.so.2
00007ffff1890000     192      64      64 rw---   [ stack ]
---------------- ------- ------- ------- 
total kB           13184    3456     896
145256:   ./uprobe_multi uprobe-paged-out
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000010000000    7872     832      64 r-x-- uprobe_multi
00000000107b0000      64      64      64 r---- uprobe_multi
00000000107c0000      64      64      64 rw--- uprobe_multi
00000100317b0000     192      64      64 rw---   [ anon ]
00007fffa5cd0000     832      64       0 r-x-- libzstd.so.1.5.5
00007fffa5da0000      64      64      64 r---- libzstd.so.1.5.5
00007fffa5db0000      64      64      64 rw--- libzstd.so.1.5.5
00007fffa5dc0000    2304    1344       0 r-x-- libc.so.6
00007fffa6000000      64      64      64 r---- libc.so.6
00007fffa6010000      64      64      64 rw--- libc.so.6
00007fffa6020000     192      64       0 r-x-- libz.so.1.3.1.zlib-ng
00007fffa6050000      64      64      64 r---- libz.so.1.3.1.zlib-ng
00007fffa6060000      64      64      64 rw--- libz.so.1.3.1.zlib-ng
00007fffa6070000     192      64       0 r-x-- libelf-0.192.so
00007fffa60a0000      64      64      64 r---- libelf-0.192.so
00007fffa60b0000      64       0       0 rw---   [ anon ]
00007fffa60d0000     256       0       0 r----   [ anon ]
00007fffa6110000      64      64       0 r-x--   [ anon ]
00007fffa6120000     320     320       0 r-x-- ld64.so.2
00007fffa6170000      64      64      64 r---- ld64.so.2
00007fffa6180000      64      64      64 rw--- ld64.so.2
00007ffff1890000     192      64      64 rw---   [ stack ]
---------------- ------- ------- ------- 
total kB           13184    3584     896
145256:   ./uprobe_multi uprobe-paged-out
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000010000000    7872     768      64 r-x-- uprobe_multi
00000000107b0000      64      64      64 r---- uprobe_multi
00000000107c0000      64      64      64 rw--- uprobe_multi
00000100317b0000     192      64      64 rw---   [ anon ]
00007fffa5cd0000     832      64       0 r-x-- libzstd.so.1.5.5
00007fffa5da0000      64      64      64 r---- libzstd.so.1.5.5
00007fffa5db0000      64      64      64 rw--- libzstd.so.1.5.5
00007fffa5dc0000    2304    1344       0 r-x-- libc.so.6
00007fffa6000000      64      64      64 r---- libc.so.6
00007fffa6010000      64      64      64 rw--- libc.so.6
00007fffa6020000     192      64       0 r-x-- libz.so.1.3.1.zlib-ng
00007fffa6050000      64      64      64 r---- libz.so.1.3.1.zlib-ng
00007fffa6060000      64      64      64 rw--- libz.so.1.3.1.zlib-ng
00007fffa6070000     192      64       0 r-x-- libelf-0.192.so
00007fffa60a0000      64      64      64 r---- libelf-0.192.so
00007fffa60b0000      64       0       0 rw---   [ anon ]
00007fffa60d0000     256       0       0 r----   [ anon ]
00007fffa6110000      64      64       0 r-x--   [ anon ]
00007fffa6120000     320     320       0 r-x-- ld64.so.2
00007fffa6170000      64      64      64 r---- ld64.so.2
00007fffa6180000      64      64      64 rw--- ld64.so.2
00007ffff1890000     192      64      64 rw---   [ stack ]
---------------- ------- ------- ------- 
total kB           13184    3520     896
Before uprobe: Page residency = paged out
After uprobe: Page residency = paged out
#46/1    build_id/nofault-paged-out:OK
#46      build_id:OK
#397     stacktrace_build_id:OK
#398     stacktrace_build_id_nmi:OK
Summary: 3/1 PASSED, 0 SKIPPED, 0 FAILED

Here it can be seen that page is evicted (as shown 
"Before uprobe: Page residency = paged out").

Although the selftest occasionally passes, its behavior 
remains flaky and unreliable across runs. But introducing 
a sleep before/after both MADV_POPULATE_READ and MADV_PAGEOUT 
tends to improve the consistency with which the selftest passes.

Your valuable suggestions or thoughts on how best to address/debug
this further would be helpful.

Regards,
Saket
> > jirka
> >
> >
> > ----
> > #
> > # Automatically generated file; DO NOT EDIT.
> > # Linux/x86 6.10.0 Kernel Configuration
> > #
> 
> [...]
> 




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux