From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
To: Jeff Xie <xiehuan09@gmail.com>
Cc: rostedt@goodmis.org, mingo@redhat.com, mhiramat@kernel.org,
zanussi@kernel.org, linux-kernel@vger.kernel.org,
Jonathan Corbet <corbet@lwn.net>,
linux-doc@vger.kernel.org
Subject: Re: [PATCH v12 4/4] trace/objtrace: Add documentation for objtrace
Date: Sun, 26 Jun 2022 01:10:06 +0900 [thread overview]
Message-ID: <20220626011006.22572fbabcac5c8494e09f13@kernel.org> (raw)
In-Reply-To: <20220606160943.663180-5-xiehuan09@gmail.com>
Hi Jeff,
OK, this looks good to me.
Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
And just a note that please add 'Documentation:' tag to the title
and Cc to linux-doc@vger.kernel.org and Jonathan Corbet too since
this is a patch for the Documentation/*.
Thank you,
On Tue, 7 Jun 2022 00:09:43 +0800
Jeff Xie <xiehuan09@gmail.com> wrote:
> Added documentation explaining how to use objtrace trigger to get the value
> of the object.
>
> Signed-off-by: Jeff Xie <xiehuan09@gmail.com>
> ---
> Documentation/trace/events.rst | 83 ++++++++++++++++++++++++++++++++++
> 1 file changed, 83 insertions(+)
>
> diff --git a/Documentation/trace/events.rst b/Documentation/trace/events.rst
> index c47f381d0c00..0dc475160133 100644
> --- a/Documentation/trace/events.rst
> +++ b/Documentation/trace/events.rst
> @@ -546,6 +546,89 @@ The following commands are supported:
>
> See Documentation/trace/histogram.rst for details and examples.
>
> +- objtrace
> +
> + This command provides a way to get the value of any object, The object
> + can be obtained from the dynamic event(kprobe_event/uprobe_event) or the
> + static event(tracepoint).
> +
> + Usage:
> + When using the kprobe event, only need to set the objtrace(a new trigger),
> + we can get the value of the object. The object is from the setting of the
> + kprobe event.
> +
> + For example:
> + For the function bio_add_page():
> +
> + int bio_add_page(struct bio *bio, struct page *page,
> + unsigned int len, unsigned int offset)
> +
> + Firstly, we can set the base of the object, thus the first string "arg1"
> + stands for the value of the first parameter of this function bio_add_gage(),
> +
> + # echo 'p bio_add_page arg1=$arg1' > ./kprobe_events
> +
> + Secondly, we can get the value dynamically based on above object.
> +
> + find the offset of the bi_size in struct bio:
> + $ gdb vmlinux
> + (gdb) p &(((struct bio *)0)->bi_iter.bi_size)
> + $1 = (unsigned int *) 0x28
> +
> + # echo 'objtrace:add:arg1,0x28:u32:1 if comm == "cat"' > ./events/kprobes/ \
> + p_bio_add_page_0/trigger
> +
> + # cd /sys/kernel/debug/tracing/
> + # echo 'p bio_add_page arg1=$arg1' > ./kprobe_events
> + # echo 'objtrace:add:arg1,0x28:u32:1 if comm == "cat"' > ./events/kprobes/p_bio_add_page_0/trigger
> +
> + # du -sh /test.txt
> + 12.0K /test.txt
> +
> + # cat /test.txt > /dev/null
> + # cat ./trace
> + # tracer: nop
> + #
> + # entries-in-buffer/entries-written: 128/128 #P:4
> + #
> + # _-----=> irqs-off/BH-disabled
> + # / _----=> need-resched
> + # | / _---=> hardirq/softirq
> + # || / _--=> preempt-depth
> + # ||| / _-=> migrate-disable
> + # |||| / delay
> + # TASK-PID CPU# ||||| TIMESTAMP FUNCTION
> + # | | | ||||| | |
> + cat-117 [002] ...1. 1.602243: __bio_try_merge_page <-bio_add_page object:0xffff88811bee4000 value:0x0
> + cat-117 [002] ...1. 1.602244: __bio_add_page <-bio_add_page object:0xffff88811bee4000 value:0x0
> + cat-117 [002] ...2. 1.602244: bio_add_page <-ext4_mpage_readpages object:0xffff88811bee4000 value:0x1000
> + cat-117 [002] ...1. 1.602245: __bio_try_merge_page <-bio_add_page object:0xffff88811bee4000 value:0x1000
> + cat-117 [002] ...1. 1.602245: __bio_add_page <-bio_add_page object:0xffff88811bee4000 value:0x1000
> + cat-117 [002] ...2. 1.602245: bio_add_page <-ext4_mpage_readpages object:0xffff88811bee4000 value:0x2000
> + cat-117 [002] ...1. 1.602245: __bio_try_merge_page <-bio_add_page object:0xffff88811bee4000 value:0x2000
> + cat-117 [002] ...1. 1.602245: __bio_add_page <-bio_add_page object:0xffff88811bee4000 value:0x2000
> + cat-117 [002] ...1. 1.602245: submit_bio <-ext4_mpage_readpages object:0xffff88811bee4000 value:0x3000
> + cat-117 [002] ...1. 1.602245: submit_bio_noacct <-ext4_mpage_readpages object:0xffff88811bee4000 value:0x3000
> + cat-117 [002] ...1. 1.602246: __submit_bio <-submit_bio_noacct object:0xffff88811bee4000 value:0x3000
> + cat-117 [002] ...1. 1.602246: submit_bio_checks <-__submit_bio object:0xffff88811bee4000 value:0x3000
> + cat-117 [002] ...1. 1.602246: __cond_resched <-submit_bio_checks object:0xffff88811bee4000 value:0x3000
> + cat-117 [002] ...1. 1.602246: should_fail_bio <-submit_bio_checks object:0xffff88811bee4000 value:0x3000
> + cat-117 [002] ...1. 1.602246: blk_mq_submit_bio <-submit_bio_noacct object:0xffff88811bee4000 value:0x3000
> + cat-117 [002] ...1. 1.602246: blk_attempt_plug_merge <-blk_mq_submit_bio object:0xffff88811bee4000 value:0x3000
> + cat-117 [002] ...1. 1.602246: blk_mq_sched_bio_merge <-blk_mq_submit_bio object:0xffff88811bee4000 value:0x3000
> + cat-117 [002] ...1. 1.602247: __rcu_read_lock <-blk_mq_submit_bio object:0xffff88811bee4000 value:0x3000
> + cat-117 [002] ...1. 1.602247: __rcu_read_unlock <-blk_mq_submit_bio object:0xffff88811bee4000 value:0x3000
> + cat-117 [002] ...1. 1.602247: __blk_mq_alloc_requests <-blk_mq_submit_bio object:0xffff88811bee4000 value:0x3000
> + <idle>-0 [002] d..3. 1.602298: bio_endio <-blk_update_request object:0xffff88811bee4000 value:0x0
> + <idle>-0 [002] d..3. 1.602298: mpage_end_io <-blk_update_request object:0xffff88811bee4000 value:0x0
> + <idle>-0 [002] d..3. 1.602298: __read_end_io <-blk_update_request object:0xffff88811bee4000 value:0x0
> + <idle>-0 [002] d..3. 1.602300: bio_put <-blk_update_request object:0xffff88811bee4000 value:0x0
> + <idle>-0 [002] d..3. 1.602300: bio_free <-blk_update_request object:0xffff88811bee4000 value:0x0
> + <idle>-0 [002] d..3. 1.602300: mempool_free <-blk_update_request object:0xffff88811bee4000 value:0x0
> + <idle>-0 [002] d..3. 1.602300: mempool_free_slab <-blk_update_request object:0xffff88811bee4000 value:0x0
> + <idle>-0 [002] d..3. 1.602300: kmem_cache_free <-blk_update_request object:0xffff88811bee4000 value:0x0
> + ...
> +
> 7. In-kernel trace event API
> ============================
>
> --
> 2.25.1
>
--
Masami Hiramatsu (Google) <mhiramat@kernel.org>
next prev parent reply other threads:[~2022-06-25 16:10 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-06 16:09 [PATCH v12 0/4] trace: Introduce objtrace trigger to trace the kernel object Jeff Xie
2022-06-06 16:09 ` [PATCH v12 1/4] trace: Add trace any " Jeff Xie
2022-06-25 15:59 ` Masami Hiramatsu
2022-06-25 17:10 ` Jeff Xie
2022-06-06 16:09 ` [PATCH v12 2/4] trace/objtrace: Get the value of the object Jeff Xie
2022-06-25 15:58 ` Masami Hiramatsu
2022-06-25 17:01 ` Jeff Xie
2022-06-06 16:09 ` [PATCH v12 3/4] trace/objtrace: Add testcases for objtrace Jeff Xie
2022-06-25 16:03 ` Masami Hiramatsu
2022-06-25 17:05 ` Jeff Xie
2022-06-27 20:00 ` Shuah Khan
2022-06-06 16:09 ` [PATCH v12 4/4] trace/objtrace: Add documentation " Jeff Xie
2022-06-25 16:10 ` Masami Hiramatsu [this message]
2022-06-25 17:07 ` Jeff Xie
2022-06-21 1:55 ` [PATCH v12 0/4] trace: Introduce objtrace trigger to trace the kernel object Jeff Xie
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=20220626011006.22572fbabcac5c8494e09f13@kernel.org \
--to=mhiramat@kernel.org \
--cc=corbet@lwn.net \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=rostedt@goodmis.org \
--cc=xiehuan09@gmail.com \
--cc=zanussi@kernel.org \
/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.