si_mem_available_trace 123456stap -ve 'probe kernel.function("si_mem_available") { printf("\n==> si_mem_available() called (pid=%d)\n", pid())}' -DSTP_NO_BUILDID_CHECK 123stap -l 'kernel.function("si_mem_available@mm/page_alloc.c:*")'kernel.function("si_mem_available@mm/page_alloc.c:4846") 123stap -L 'kernel.function("si_mem_available@mm/page_alloc.c:*")'kernel.function("si_mem_available@mm/page_alloc.c:4846") $pages:long unsigned int[] 1234567891011121314[root@ctyunos si_mem_available]# stap -l 'kernel.statement("si_mem_available@mm/page_alloc.c:*")'kernel.statement("si_mem_available@mm/page_alloc.c:4847")kernel.statement("si_mem_available@mm/page_alloc.c:4850")kernel.statement("si_mem_available@mm/page_alloc.c:4855")kernel.statement("si_mem_available@mm/page_alloc.c:4856")kernel.statement("si_mem_available@mm/page_alloc.c:4858")kernel.statement("si_mem_available@mm/page_alloc.c:4859")kernel.statement("si_mem_available@mm/page_alloc.c:4872")kernel.statement("si_mem_available@mm/page_alloc.c:4873")kernel.statement("si_mem_available@mm/page_alloc.c:4881")kernel.statement("si_mem_available@mm/page_alloc.c:4888")kernel.statement("si_mem_available@mm/page_alloc.c:4893")kernel.statement("si_mem_available@mm/page_alloc.c:4894") 1234567891011121314stap -L 'kernel.statement("si_mem_available@mm/page_alloc.c:*")'kernel.statement("si_mem_available@mm/page_alloc.c:4847") $pages:long unsigned int[]kernel.statement("si_mem_available@mm/page_alloc.c:4850") $pages:long unsigned int[]kernel.statement("si_mem_available@mm/page_alloc.c:4855") $pages:long unsigned int[]kernel.statement("si_mem_available@mm/page_alloc.c:4856") $pages:long unsigned int[]kernel.statement("si_mem_available@mm/page_alloc.c:4858") $pages:long unsigned int[]kernel.statement("si_mem_available@mm/page_alloc.c:4859") $wmark_low:long unsigned int $pages:long unsigned int[] $zone:struct zone*kernel.statement("si_mem_available@mm/page_alloc.c:4872") $wmark_low:long unsigned int $pages:long unsigned int[] $zone:struct zone*kernel.statement("si_mem_available@mm/page_alloc.c:4873") $pagecache:long unsigned int $wmark_low:long unsigned int $pages:long unsigned int[]kernel.statement("si_mem_available@mm/page_alloc.c:4881") $pagecache:long unsigned int $wmark_low:long unsigned int $pages:long unsigned int[]kernel.statement("si_mem_available@mm/page_alloc.c:4888") $pagecache:long unsigned int $wmark_low:long unsigned int $pages:long unsigned int[]kernel.statement("si_mem_available@mm/page_alloc.c:4893") $pagecache:long unsigned int $pages:long unsigned int[]kernel.statement("si_mem_available@mm/page_alloc.c:4894") $pagecache:long unsigned int $pages:long unsigned int[] 1234567stap -ve 'probe kernel.statement("si_mem_available@mm/page_alloc.c:*") { printf("%s\n", pp()) printf("通用寄存器:\n") print_regs()}' -DSTP_NO_BUILDID_CHECK 12345bpftrace -e 'kretprobe:si_mem_available { printf("si_mem_available() 返回值: %ld pages (约 %ld MB)\n", retval, retval >> 8); // 页数转MB: 1页=4KB, 256页=1MB}' linux > kernel > mm > bugs > si_mem_available #bpf si_mem_available_trace https://realwujing.github.io/linux/kernel/mm/bugs/si_mem_available/si_mem_available_trace/ 作者 Wu Jing 发布于 2025年7月1日 许可协议 hlist_bl_for_each_entry_rcu遍历d_name 上一篇 netstamp_clear soft lockup 下一篇 Please enable JavaScript to view the comments