From: Ingo Molnar <mingo@elte.hu>
To: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [patch for 2.6.26 0/7] Architecture Independent Markers
Date: Fri, 28 Mar 2008 14:33:01 +0100 [thread overview]
Message-ID: <20080328133301.GA21660@elte.hu> (raw)
In-Reply-To: <20080327203927.GA19968@Krystal>
* Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> wrote:
> 6a5: 89 5c 24 14 mov %ebx,0x14(%esp)
> 6a9: 8b 55 d0 mov -0x30(%ebp),%edx
> 6ac: 89 54 24 10 mov %edx,0x10(%esp)
> 6b0: 89 4c 24 0c mov %ecx,0xc(%esp)
> 6b4: c7 44 24 08 f7 04 00 movl $0x4f7,0x8(%esp)
> 6bb: 00
> 6bc: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp)
> 6c3: 00
> 6c4: c7 04 24 00 00 00 00 movl $0x0,(%esp)
> 6cb: ff 15 0c 00 00 00 call *0xc
> 6d1: e9 c3 fc ff ff jmp 399 <schedule+0x130>
>
> Which adds an extra 50 bytes.
you talk about 32-bit while i talk about 64-bit. All these costs go up
on 64-bit and you should know that. I measured 44 bytes in the fastpath
and 52 bytes in the slowpath, which gives 96 bytes. (with a distro
.config and likely with a different gcc)
96 bytes _per marker_ sprinkled throughout the kernel. This blows up the
cache footprint of the kernel quite substantially, because it's all
fragmented - even if this is in the 'slowpath'.
so yes, that is the bloat i'm talking about.
dont just compare it to ftrace-sched-switch, compare it to dyn-ftrace
which gives us more than 78,000 trace points in the kernel _here and
today_ at no measurable runtime cost, with a 5 byte NOP per trace point
and _zero_ instruction stream (register scheduling, etc.) intrusion. No
slowpath cost.
and the basic API approach of markers is flawed a well - the coupling to
the kernel is too strong. The correct and long-term maintainable
coupling is via ASCII symbol names, not via any binding built into the
kernel.
With dyn-ftrace (see sched-devel.git/latest) tracing filters can be
installed trivially by users, via function _symbols_, via:
/debugfs/tracing/available_filter_functions
/debugfs/tracing/set_ftrace_filter
wildcards are recognized as well, so if you do:
echo '*lock' > /debugfs/tracing/set_ftrace_filter
all functions that have 'lock' in their name will have their tracepoints
activated transparently from that point on.
even multiple names can be passed in at once:
echo 'schedule wake_up* *acpi*' > /debugfs/tracing/set_ftrace_filter
so it's trivial to use it, very powerful and we've only begun exposing
it towards users. I see no good reason why we'd patch any marker into
the kernel - it's a maintenance cost from that point on.
so yes, my argument is: tens of thousands of lightweight tracepoints in
the kernel here and today, which are configurable via function names,
each of which can be turned on and off individually, and none of which
needs any source code level changes - is an obviously superior approach.
Ingo
next prev parent reply other threads:[~2008-03-28 13:33 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-27 13:20 [patch for 2.6.26 0/7] Architecture Independent Markers Mathieu Desnoyers
2008-03-27 13:20 ` [patch for 2.6.26 1/7] Markers - define non optimized marker Mathieu Desnoyers
2008-03-27 13:20 ` [patch for 2.6.26 2/7] LTTng instrumentation fs Mathieu Desnoyers
2008-03-27 13:21 ` [patch for 2.6.26 3/7] LTTng instrumentation ipc Mathieu Desnoyers
2008-03-27 13:21 ` [patch for 2.6.26 4/7] LTTng instrumentation kernel Mathieu Desnoyers
2008-03-27 13:21 ` [patch for 2.6.26 5/7] LTTng instrumentation mm Mathieu Desnoyers
2008-03-27 13:21 ` [patch for 2.6.26 6/7] LTTng instrumentation net Mathieu Desnoyers
2008-03-27 13:21 ` [patch for 2.6.26 7/7] LTTng instrumentation - lib Mathieu Desnoyers
2008-03-27 15:40 ` [patch for 2.6.26 0/7] Architecture Independent Markers Ingo Molnar
2008-03-27 17:08 ` KOSAKI Motohiro
2008-03-28 10:15 ` Ingo Molnar
2008-03-28 13:34 ` [OT] " Masami Hiramatsu
2008-04-01 1:43 ` Denys Vlasenko
2008-04-01 14:30 ` Masami Hiramatsu
2008-03-28 13:40 ` Frank Ch. Eigler
2008-03-28 14:18 ` Ingo Molnar
2008-03-28 14:41 ` Ingo Molnar
2008-03-28 15:31 ` Frank Ch. Eigler
2008-03-27 20:39 ` Mathieu Desnoyers
2008-03-28 9:43 ` Ingo Molnar
2008-03-28 11:22 ` Ingo Molnar
2008-03-28 11:38 ` Mathieu Desnoyers
2008-03-28 13:33 ` Ingo Molnar [this message]
2008-03-29 17:16 ` Mathieu Desnoyers
2008-03-27 21:49 ` Frank Ch. Eigler
2008-03-28 0:01 ` Denys Vlasenko
2008-03-28 1:02 ` [PATCH] Markers - remove extra format argument Mathieu Desnoyers
2008-03-28 5:35 ` Masami Hiramatsu
2008-03-28 1:04 ` [patch for 2.6.26 1/7] Markers - define non optimized marker (updated) Mathieu Desnoyers
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=20080328133301.GA21660@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox