2009-03-05 23:28:47

by Mathieu Desnoyers

[permalink] [raw]
Subject: [RFC patch 29/41] LTTng menus

LTTng build Kconfig and makefiles.

Signed-off-by: Mathieu Desnoyers <[email protected]>
---
ltt/Kconfig | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ltt/Makefile | 14 ++++++
2 files changed, 141 insertions(+)

Index: linux-2.6-lttng/ltt/Kconfig
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6-lttng/ltt/Kconfig 2009-03-05 16:09:08.000000000 -0500
@@ -0,0 +1,127 @@
+menuconfig LTT
+ bool "Linux Trace Toolkit Next Generation (LTTng)"
+ depends on EXPERIMENTAL
+ select MARKERS
+ select TRACEPOINTS
+ default y
+ help
+ It is possible for the kernel to log important events to a trace
+ facility. Doing so enables the use of the generated traces in order
+ to reconstruct the dynamic behavior of the kernel, and hence the
+ whole system.
+
+ The tracing process contains 4 parts :
+ 1) The logging of events by key parts of the kernel.
+ 2) The tracer that keeps the events in a data buffer (uses
+ relay).
+ 3) A trace daemon that interacts with the tracer and is
+ notified every time there is a certain quantity of data to
+ read from the tracer.
+ 4) A trace event data decoder that reads the accumulated data
+ and formats it in a human-readable format.
+
+ If you say Y, the first component will be built into the kernel.
+
+ For more information on kernel tracing, lttctl, lttd or lttv,
+ please check the following address :
+ http://ltt.polymtl.ca
+
+if LTT
+
+config LTT_RELAY_ALLOC
+ def_bool n
+
+config LTT_RELAY_LOCKED
+ tristate "Linux Trace Toolkit Lock-Protected Data Relay"
+ select DEBUG_FS
+ select LTT_RELAY_ALLOC
+ depends on LTT_TRACER
+ default n
+ help
+ Support using the slow spinlock and interrupt disable algorithm to log
+ the data obtained through LTT.
+
+config LTT_RELAY_CHECK_RANDOM_ACCESS
+ bool "Debug check for random access in ltt relay buffers"
+ depends on LTT_RELAY_ALLOC
+ default n
+ help
+ Add checks for random access to LTTng relay buffers. Given those
+ buffers are a linked list, such access are rather slow. Rare accesses
+ are OK; they can be caused by large writes (more than a page large) or
+ by reentrancy (e.g. interrupt nesting over the tracing code).
+
+config LTT_SERIALIZE
+ tristate "Linux Trace Toolkit Serializer"
+ depends on LTT_RELAY_ALLOC
+ default y
+ help
+ Library for serializing information from format string and argument
+ list to the trace buffers.
+
+config LTT_FAST_SERIALIZE
+ tristate "Linux Trace Toolkit Custom Serializer"
+ depends on LTT_RELAY_ALLOC
+ default y
+ help
+ Library for serializing information from custom, efficient, tracepoint
+ probes.
+
+config LTT_TRACE_CONTROL
+ tristate "Linux Trace Toolkit Trace Controller"
+ depends on LTT_TRACER
+ default m
+ help
+ If you enable this option, the debugfs-based Linux Trace Toolkit Trace
+ Controller will be either built in the kernel or as module.
+
+config LTT_TRACER
+ tristate "Linux Trace Toolkit Tracer"
+ default y
+ help
+ If you enable this option, the Linux Trace Toolkit Tracer will be
+ either built in the kernel or as module.
+
+ Critical parts of the kernel will call upon the kernel tracing
+ function. The data is then recorded by the tracer if a trace daemon
+ is running in user-space and has issued a "start" command.
+
+ For more information on kernel tracing, the trace daemon or the event
+ decoder, please check the following address :
+ http://www.opersys.com/ltt
+ See also the experimental page of the project :
+ http://ltt.polymtl.ca
+
+config LTT_ALIGNMENT
+ bool "Align Linux Trace Toolkit Traces"
+ default n
+ help
+ This option enables dynamic alignment of data in buffers. The
+ alignment is made on the smallest size between architecture size
+ and the size of the value to be written.
+
+ Dynamically calculating the offset of the data has a performance cost,
+ but it is more efficient on some architectures (especially 64 bits) to
+ align data than to write it unaligned.
+
+config LTT_CHECK_ARCH_EFFICIENT_UNALIGNED_ACCESS
+ def_bool y
+ select LTT_ALIGNMENT if !HAVE_EFFICIENT_UNALIGNED_ACCESS
+
+config LTT_DEBUG_EVENT_SIZE
+ bool "Add event size field to LTT events for tracer debugging"
+ default n
+ help
+ Tracer-internal option to help debugging event type encoding problems.
+
+config LTT_VMCORE
+ bool "Support trace extraction from crash dump"
+ default y
+ help
+ If you enable this option, the Linux Trace Toolkit Tracer will
+ support extacting ltt log from vmcore, which can be generated with
+ kdump or LKCD tools.
+
+ Special crash extension should be used to extract ltt buffers.
+
+endif # LTT
Index: linux-2.6-lttng/ltt/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6-lttng/ltt/Makefile 2009-03-05 16:09:20.000000000 -0500
@@ -0,0 +1,14 @@
+#
+# Makefile for the LTT objects.
+#
+
+obj-$(CONFIG_MARKERS) += ltt-channels.o
+obj-$(CONFIG_LTT) += ltt-core.o
+obj-$(CONFIG_LTT_TRACER) += ltt-tracer.o
+obj-$(CONFIG_LTT_TRACE_CONTROL) += ltt-marker-control.o
+obj-$(CONFIG_LTT_RELAY_LOCKED) += ltt-relay-locked.o
+obj-$(CONFIG_LTT_RELAY_ALLOC) += ltt-relay-alloc.o
+obj-$(CONFIG_LTT_SERIALIZE) += ltt-serialize.o
+obj-$(CONFIG_LTT_STATEDUMP) += ltt-statedump.o
+obj-$(CONFIG_LTT_FAST_SERIALIZE) += ltt-type-serializer.o
+obj-$(CONFIG_LTT_TRACE_CONTROL) += ltt-trace-control.o

--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68


2009-03-05 23:36:19

by Randy Dunlap

[permalink] [raw]
Subject: Re: [RFC patch 29/41] LTTng menus

Mathieu Desnoyers wrote:

<<attachment :(>>


+menuconfig LTT
+ bool "Linux Trace Toolkit Next Generation (LTTng)"
+ depends on EXPERIMENTAL
+ select MARKERS
+ select TRACEPOINTS
+ default y

Not default 'y', please.

--
~Randy

2009-03-05 23:47:23

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: [RFC patch 29/41] LTTng menus

* Randy Dunlap ([email protected]) wrote:
> Mathieu Desnoyers wrote:
>
> <<attachment :(>>
>
>
> +menuconfig LTT
> + bool "Linux Trace Toolkit Next Generation (LTTng)"
> + depends on EXPERIMENTAL
> + select MARKERS
> + select TRACEPOINTS
> + default y
>
> Not default 'y', please.
>

OK, so default n it is. But I plan to leave the main menu "sub-features" as
default y, given that people get the standard features when they choose
to enable the tracer. Hopefully this is ok ?

Mathieu

> --
> ~Randy

--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2009-03-05 23:53:36

by Randy Dunlap

[permalink] [raw]
Subject: Re: [RFC patch 29/41] LTTng menus

Mathieu Desnoyers wrote:
> * Randy Dunlap ([email protected]) wrote:
>> Mathieu Desnoyers wrote:
>>
>> <<attachment :(>>
>>
>>
>> +menuconfig LTT
>> + bool "Linux Trace Toolkit Next Generation (LTTng)"
>> + depends on EXPERIMENTAL
>> + select MARKERS
>> + select TRACEPOINTS
>> + default y
>>
>> Not default 'y', please.
>>
>
> OK, so default n it is. But I plan to leave the main menu "sub-features" as
> default y, given that people get the standard features when they choose
> to enable the tracer. Hopefully this is ok ?

Sure, as long as it just enables viewing the menu and not adding
code to a growing kernel.

--
~Randy

2009-03-06 00:02:17

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: [ltt-dev] [RFC patch 29/41] LTTng menus

* Randy Dunlap ([email protected]) wrote:
> Mathieu Desnoyers wrote:
> > * Randy Dunlap ([email protected]) wrote:
> >> Mathieu Desnoyers wrote:
> >>
> >> <<attachment :(>>
> >>
> >>
> >> +menuconfig LTT
> >> + bool "Linux Trace Toolkit Next Generation (LTTng)"
> >> + depends on EXPERIMENTAL
> >> + select MARKERS
> >> + select TRACEPOINTS
> >> + default y
> >>
> >> Not default 'y', please.
> >>
> >
> > OK, so default n it is. But I plan to leave the main menu "sub-features" as
> > default y, given that people get the standard features when they choose
> > to enable the tracer. Hopefully this is ok ?
>
> Sure, as long as it just enables viewing the menu and not adding
> code to a growing kernel.
>

I want to be sure to understand your point. Would be following be OK ?

Menu [ ] Linux Trace Toolkit Next Generation (LTTng) ---> (default n)

Within this menu, the following options enable various tracer modules,
some of which are typically needed, except in some very specific tracer
use :

< > Linux Trace Toolkit Lock-Protected Data Relay (default n)
(default y is planned to be used for the lockless data
relay module, which is not posted as part of this patchset)
[ ] Debug check for random access in ltt relay buffers (default n)
<*> Linux Trace Toolkit Serializer (default y)
-*- Linux Trace Toolkit Custom Serializer (default y)
-*- Linux Trace Toolkit Trace Controller (default m)
<*> Linux Trace Toolkit Tracer (default y)
[ ] Align Linux Trace Toolkit Traces (default n, selected of
!HAVE_EFFICIENT_UNALIGNED_ACCESS)
[ ] Add event size field to LTT events for tracer debugging (default n)
<M> Support logging events from userspace (default m)
[*] Support trace extraction from crash dump (default y)
[*] Linux Trace Toolkit Kprobes Support (default y)

I understand from your answer above that just enabling the "LTTng"
submenu should not activate any of these items, am I correct ?

Mathieu

--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2009-03-06 00:13:36

by Randy Dunlap

[permalink] [raw]
Subject: Re: [ltt-dev] [RFC patch 29/41] LTTng menus

Mathieu Desnoyers wrote:
> * Randy Dunlap ([email protected]) wrote:
>> Mathieu Desnoyers wrote:
>>> * Randy Dunlap ([email protected]) wrote:
>>>> Mathieu Desnoyers wrote:
>>>>
>>>> <<attachment :(>>
>>>>
>>>>
>>>> +menuconfig LTT
>>>> + bool "Linux Trace Toolkit Next Generation (LTTng)"
>>>> + depends on EXPERIMENTAL
>>>> + select MARKERS
>>>> + select TRACEPOINTS
>>>> + default y
>>>>
>>>> Not default 'y', please.
>>>>
>>> OK, so default n it is. But I plan to leave the main menu "sub-features" as
>>> default y, given that people get the standard features when they choose
>>> to enable the tracer. Hopefully this is ok ?
>> Sure, as long as it just enables viewing the menu and not adding
>> code to a growing kernel.
>>

I see what you mean now. Thanks for the details.

>
> I want to be sure to understand your point. Would be following be OK ?
>
> Menu [ ] Linux Trace Toolkit Next Generation (LTTng) ---> (default n)
>
> Within this menu, the following options enable various tracer modules,
> some of which are typically needed, except in some very specific tracer
> use :
>
> < > Linux Trace Toolkit Lock-Protected Data Relay (default n)
> (default y is planned to be used for the lockless data
> relay module, which is not posted as part of this patchset)
> [ ] Debug check for random access in ltt relay buffers (default n)
> <*> Linux Trace Toolkit Serializer (default y)
> -*- Linux Trace Toolkit Custom Serializer (default y)
> -*- Linux Trace Toolkit Trace Controller (default m)
> <*> Linux Trace Toolkit Tracer (default y)
> [ ] Align Linux Trace Toolkit Traces (default n, selected of
> !HAVE_EFFICIENT_UNALIGNED_ACCESS)
> [ ] Add event size field to LTT events for tracer debugging (default n)
> <M> Support logging events from userspace (default m)
> [*] Support trace extraction from crash dump (default y)
> [*] Linux Trace Toolkit Kprobes Support (default y)
>
> I understand from your answer above that just enabling the "LTTng"
> submenu should not activate any of these items, am I correct ?

Ideally one wouldn't add bloat to the kernel, but if someone enables
the top-level menu item, I'm OK with enabling others under it.

(not that we all consider the same things to be bloat ;)

--
~Randy