[lttng-dev] Changed scheduling when using lttng
Mathieu Desnoyers
mathieu.desnoyers at efficios.com
Tue Apr 30 10:43:24 EDT 2013
* Mats Liljegren (liljegren.mats2 at gmail.com) wrote:
> I've done some code diving now, and I feel stupid...
>
> I thought I could get global buffers in kernel traces using option
> --buffers-global, as the help text seemed to indicate this:
> $ lttng enable-channel --help
> usage: lttng enable-channel NAME[,NAME2,...] [-u|-k] [OPTIONS]
>
> Options:
> -h, --help Show this help
> --list-options Simple listing of options
> -s, --session NAME Apply to session name
> -k, --kernel Apply to the kernel tracer
> -u, --userspace Apply to the user-space tracer
>
> Channel options:
> --discard Discard event when buffers are full (default)
> --overwrite Flight recorder mode
> --subbuf-size SIZE Subbuffer size in bytes
> (default: 4096, kernel default: 262144)
> Needs to be a power of 2 for
> kernel and ust tracers
> --num-subbuf NUM Number of subbufers
> (default: 4)
> Needs to be a power of 2 for
> kernel and ust tracers
> --switch-timer USEC Switch timer interval in usec (default: 0)
> --read-timer USEC Read timer interval in usec (UST default:
> 0, kernel default: 200000)
> --output TYPE Channel output type (Values: mmap, splice)
> --buffers-uid Use per UID buffer (-u only)
> --buffers-pid Use per PID buffer (-u only)
> --buffers-global Use shared buffer for the whole system (-k only)
This option would be clearer as "--buffers-per-cpu" maybe ?
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> -C, --tracefile-size SIZE
> Maximum size of of each tracefile within a
> stream (in bytes).
> -W, --tracefile-count COUNT
> Used in conjunction with -C option, this
> will limit the number
> of files created to the specified count.
>
> I look in src/bin/lttng/commands/enable_channels.c, the long option
> array will point to opt_buffer_global. The only use for this file
> private variable is for a single sanity check. I cannot see any other
> use of it. Have I missed something here?
>
> But in this file, function enable_channel(), I see:
>
> dom.buf_type = LTTNG_BUFFER_GLOBAL;
>
> This is executed for the kernel case. But my buffers are still
> allocated per-cpu. What is going on? Where did this configuration go?
> What does it do?
>
> If I take this from the other end, I'd like to use the line:
> .alloc = RING_BUFFER_ALLOC_GLOBAL
> found in
> lttng-ring-buffer-metadata-client.h
> How do I make this happen?
lttng-sessiond never creates buffers shared between CPUs for now (except
for metadata). The "--buffers-global" option is misleading and should
possibly be renamed.
Thanks,
Mathieu
>
> Thanks
> Mats
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
More information about the lttng-dev
mailing list