* David Goulet ([email protected]) wrote: > > > Mathieu Desnoyers: > > * David Goulet ([email protected]) wrote: > >> The default per UID subbuffer size are changed from 4096 bytes to 131072 > >> bytes (128k). The rest have the same values as before. > >> > >> Some DEFAULT_CHANNEL_* macros are prefixed with an underscore making > >> sure they are not used elsewhere in the code base and only domain > >> specific values are used. > > > > Looks good, except for one small question: the metadata defaults (e.g. > > DEFAULT_METADATA_SWITCH_TIMER) don't seem to appear anywhere in the > > help/manpage. Any idea on how we could fix that ? > > Right, I guess just adding a "metadata: " everywhere would be the way to > do it ?
Yep. Thanks, Mathieu > > David > > > > > Thanks, > > > > Mathieu > > > > > >> > >> Fixes #524 > >> > >> Signed-off-by: David Goulet <[email protected]> > >> --- > >> doc/man/lttng.1 | 15 ++++-- > >> src/bin/lttng-sessiond/channel.c | 59 ++++++++++++++------- > >> src/bin/lttng-sessiond/channel.h | 3 +- > >> src/bin/lttng-sessiond/cmd.c | 14 +++-- > >> src/bin/lttng-sessiond/trace-ust.c | 4 +- > >> src/bin/lttng-sessiond/ust-app.c | 4 +- > >> src/bin/lttng/commands/enable_channels.c | 32 ++++++++---- > >> src/common/defaults.c | 11 ++-- > >> src/common/defaults.h | 84 > >> +++++++++++++++++------------- > >> src/lib/lttng-ctl/lttng-ctl.c | 36 ++++++++----- > >> tests/unit/test_ust_data.c | 4 +- > >> 11 files changed, 168 insertions(+), 98 deletions(-) > >> > >> diff --git a/doc/man/lttng.1 b/doc/man/lttng.1 > >> index 37c2063..aa98990 100644 > >> --- a/doc/man/lttng.1 > >> +++ b/doc/man/lttng.1 > >> @@ -327,17 +327,21 @@ same type. > >> \-\-overwrite > >> Flight recorder mode : overwrites events when subbuffers are full > >> \-\-subbuf-size SIZE > >> - Subbuffer size in bytes {+k,+M,+G} (default: 4096, kernel > >> default: 262144) > >> + Subbuffer size in bytes {+k,+M,+G} > >> + (default UST uid: 131072, UST pid: 4096, kernel: 262144) > >> Rounded up to the next power of 2. > >> \-\-num-subbuf NUM > >> - Number of subbuffers (default: 4) > >> + Number of subbuffers. (default UST uid: 4, UST pid: 4, kernel: 4) > >> Rounded up to the next power of 2. > >> \-\-switch-timer USEC > >> - Switch subbuffer timer interval in µsec (default: 0) > >> + Switch subbuffer timer interval in µsec. > >> + (default UST uid: 0, UST pid: 0, kernel: 0) > >> \-\-read-timer USEC > >> - Read timer interval in µsec (UST default: 0, kernel default: > >> 200000) > >> + Read timer interval in µsec. > >> + (default UST uid: 0, UST pid: 0, kernel: 200000) > >> \-\-output TYPE > >> Channel output type. Possible values: mmap, splice > >> + (default UST uid: mmap, UST pid: mmap, kernel: splice) > >> \-\-buffers-uid > >> Use per UID buffer (\-u only). Buffers are shared between > >> applications > >> that have the same UID. > >> @@ -347,9 +351,10 @@ same type. > >> Use shared buffer for the whole system (\-k only) > >> \-C, \-\-tracefile-size SIZE > >> Maximum size of each tracefile within a stream (in bytes). > >> + 0 means unlimited. (default: 0) > >> \-W, \-\-tracefile-count COUNT > >> Used in conjunction with \-C option, this will limit the number > >> - of files created to the specified count. > >> + of files created to the specified count. 0 means unlimited. > >> (default: 0) > >> > >> .B EXAMPLES: > >> > >> diff --git a/src/bin/lttng-sessiond/channel.c > >> b/src/bin/lttng-sessiond/channel.c > >> index ff2db69..8f835fd 100644 > >> --- a/src/bin/lttng-sessiond/channel.c > >> +++ b/src/bin/lttng-sessiond/channel.c > >> @@ -33,7 +33,8 @@ > >> /* > >> * Return allocated channel attributes. > >> */ > >> -struct lttng_channel *channel_new_default_attr(int dom) > >> +struct lttng_channel *channel_new_default_attr(int dom, > >> + enum lttng_buffer_type type) > >> { > >> struct lttng_channel *chan; > >> > >> @@ -49,10 +50,14 @@ struct lttng_channel *channel_new_default_attr(int dom) > >> goto error; > >> } > >> > >> + /* Same for all domains. */ > >> chan->attr.overwrite = DEFAULT_CHANNEL_OVERWRITE; > >> + chan->attr.tracefile_size = DEFAULT_CHANNEL_TRACEFILE_SIZE; > >> + chan->attr.tracefile_count = DEFAULT_CHANNEL_TRACEFILE_COUNT; > >> > >> switch (dom) { > >> case LTTNG_DOMAIN_KERNEL: > >> + assert(type == LTTNG_BUFFER_GLOBAL); > >> chan->attr.subbuf_size = > >> default_get_kernel_channel_subbuf_size(); > >> chan->attr.num_subbuf = DEFAULT_KERNEL_CHANNEL_SUBBUF_NUM; > >> @@ -61,16 +66,27 @@ struct lttng_channel *channel_new_default_attr(int dom) > >> chan->attr.read_timer_interval = > >> DEFAULT_KERNEL_CHANNEL_READ_TIMER; > >> break; > >> case LTTNG_DOMAIN_UST: > >> -#if 0 > >> - case LTTNG_DOMAIN_UST_PID: > >> - case LTTNG_DOMAIN_UST_PID_FOLLOW_CHILDREN: > >> - case LTTNG_DOMAIN_UST_EXEC_NAME: > >> -#endif > >> - chan->attr.subbuf_size = default_get_ust_channel_subbuf_size(); > >> - chan->attr.num_subbuf = DEFAULT_UST_CHANNEL_SUBBUF_NUM; > >> - chan->attr.output = DEFAULT_UST_CHANNEL_OUTPUT; > >> - chan->attr.switch_timer_interval = > >> DEFAULT_UST_CHANNEL_SWITCH_TIMER; > >> - chan->attr.read_timer_interval = DEFAULT_UST_CHANNEL_READ_TIMER; > >> + switch (type) { > >> + case LTTNG_BUFFER_PER_UID: > >> + chan->attr.subbuf_size = > >> default_get_ust_uid_channel_subbuf_size(); > >> + chan->attr.num_subbuf = > >> DEFAULT_UST_UID_CHANNEL_SUBBUF_NUM; > >> + chan->attr.output = DEFAULT_UST_UID_CHANNEL_OUTPUT; > >> + chan->attr.switch_timer_interval = > >> + DEFAULT_UST_UID_CHANNEL_SWITCH_TIMER; > >> + chan->attr.read_timer_interval = > >> + DEFAULT_UST_UID_CHANNEL_READ_TIMER; > >> + break; > >> + case LTTNG_BUFFER_PER_PID: > >> + default: > >> + chan->attr.subbuf_size = > >> default_get_ust_pid_channel_subbuf_size(); > >> + chan->attr.num_subbuf = > >> DEFAULT_UST_PID_CHANNEL_SUBBUF_NUM; > >> + chan->attr.output = DEFAULT_UST_PID_CHANNEL_OUTPUT; > >> + chan->attr.switch_timer_interval = > >> + DEFAULT_UST_PID_CHANNEL_SWITCH_TIMER; > >> + chan->attr.read_timer_interval = > >> + DEFAULT_UST_PID_CHANNEL_READ_TIMER; > >> + break; > >> + } > >> break; > >> default: > >> goto error; /* Not implemented */ > >> @@ -158,7 +174,8 @@ int channel_kernel_create(struct ltt_kernel_session > >> *ksession, > >> > >> /* Creating channel attributes if needed */ > >> if (attr == NULL) { > >> - defattr = channel_new_default_attr(LTTNG_DOMAIN_KERNEL); > >> + defattr = channel_new_default_attr(LTTNG_DOMAIN_KERNEL, > >> + LTTNG_BUFFER_GLOBAL); > >> if (defattr == NULL) { > >> ret = LTTNG_ERR_FATAL; > >> goto error; > >> @@ -237,7 +254,7 @@ int channel_ust_create(struct ltt_ust_session *usess, > >> > >> /* Creating channel attributes if needed */ > >> if (attr == NULL) { > >> - defattr = channel_new_default_attr(LTTNG_DOMAIN_UST); > >> + defattr = channel_new_default_attr(LTTNG_DOMAIN_UST, type); > >> if (defattr == NULL) { > >> ret = LTTNG_ERR_FATAL; > >> goto error; > >> @@ -245,11 +262,6 @@ int channel_ust_create(struct ltt_ust_session *usess, > >> attr = defattr; > >> } > >> > >> - if (attr->attr.subbuf_size < DEFAULT_UST_CHANNEL_SUBBUF_SIZE) { > >> - ret = LTTNG_ERR_INVALID; > >> - goto error; > >> - } > >> - > >> /* > >> * Validate UST buffer size and number of buffers: must both be power > >> of 2 > >> * and nonzero. We validate right here for UST, because applications > >> will > >> @@ -285,7 +297,18 @@ int channel_ust_create(struct ltt_ust_session *usess, > >> /* Validate buffer type. */ > >> switch (type) { > >> case LTTNG_BUFFER_PER_PID: > >> + if (attr->attr.subbuf_size < > >> + default_get_ust_pid_channel_subbuf_size()) { > >> + ret = LTTNG_ERR_INVALID; > >> + goto error; > >> + } > >> + break; > >> case LTTNG_BUFFER_PER_UID: > >> + if (attr->attr.subbuf_size < > >> + default_get_ust_uid_channel_subbuf_size()) { > >> + ret = LTTNG_ERR_INVALID; > >> + goto error; > >> + } > >> break; > >> default: > >> ret = LTTNG_ERR_BUFFER_NOT_SUPPORTED; > >> diff --git a/src/bin/lttng-sessiond/channel.h > >> b/src/bin/lttng-sessiond/channel.h > >> index 7fbbb4c..15cabea 100644 > >> --- a/src/bin/lttng-sessiond/channel.h > >> +++ b/src/bin/lttng-sessiond/channel.h > >> @@ -30,7 +30,8 @@ int channel_kernel_enable(struct ltt_kernel_session > >> *ksession, > >> int channel_kernel_create(struct ltt_kernel_session *ksession, > >> struct lttng_channel *chan, int kernel_pipe); > >> > >> -struct lttng_channel *channel_new_default_attr(int domain); > >> +struct lttng_channel *channel_new_default_attr(int domain, > >> + enum lttng_buffer_type type); > >> > >> int channel_ust_create(struct ltt_ust_session *usess, > >> struct lttng_channel *attr, enum lttng_buffer_type type); > >> diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c > >> index 5d2cba1..528665a 100644 > >> --- a/src/bin/lttng-sessiond/cmd.c > >> +++ b/src/bin/lttng-sessiond/cmd.c > >> @@ -1106,7 +1106,7 @@ int cmd_add_context(struct ltt_session *session, int > >> domain, > >> if (chan_count == 0) { > >> struct lttng_channel *attr; > >> /* Create default channel */ > >> - attr = channel_new_default_attr(domain); > >> + attr = channel_new_default_attr(domain, > >> usess->buffer_type); > >> if (attr == NULL) { > >> ret = LTTNG_ERR_FATAL; > >> goto error; > >> @@ -1166,7 +1166,8 @@ int cmd_enable_event(struct ltt_session *session, > >> struct lttng_domain *domain, > >> kchan = trace_kernel_get_channel_by_name(channel_name, > >> session->kernel_session); > >> if (kchan == NULL) { > >> - attr = channel_new_default_attr(LTTNG_DOMAIN_KERNEL); > >> + attr = channel_new_default_attr(LTTNG_DOMAIN_KERNEL, > >> + LTTNG_BUFFER_GLOBAL); > >> if (attr == NULL) { > >> ret = LTTNG_ERR_FATAL; > >> goto error; > >> @@ -1216,7 +1217,8 @@ int cmd_enable_event(struct ltt_session *session, > >> struct lttng_domain *domain, > >> channel_name); > >> if (uchan == NULL) { > >> /* Create default channel */ > >> - attr = channel_new_default_attr(LTTNG_DOMAIN_UST); > >> + attr = channel_new_default_attr(LTTNG_DOMAIN_UST, > >> + usess->buffer_type); > >> if (attr == NULL) { > >> ret = LTTNG_ERR_FATAL; > >> goto error; > >> @@ -1286,7 +1288,8 @@ int cmd_enable_event_all(struct ltt_session *session, > >> session->kernel_session); > >> if (kchan == NULL) { > >> /* Create default channel */ > >> - attr = channel_new_default_attr(LTTNG_DOMAIN_KERNEL); > >> + attr = channel_new_default_attr(LTTNG_DOMAIN_KERNEL, > >> + LTTNG_BUFFER_GLOBAL); > >> if (attr == NULL) { > >> ret = LTTNG_ERR_FATAL; > >> goto error; > >> @@ -1350,7 +1353,8 @@ int cmd_enable_event_all(struct ltt_session *session, > >> channel_name); > >> if (uchan == NULL) { > >> /* Create default channel */ > >> - attr = channel_new_default_attr(LTTNG_DOMAIN_UST); > >> + attr = channel_new_default_attr(LTTNG_DOMAIN_UST, > >> + usess->buffer_type); > >> if (attr == NULL) { > >> ret = LTTNG_ERR_FATAL; > >> goto error; > >> diff --git a/src/bin/lttng-sessiond/trace-ust.c > >> b/src/bin/lttng-sessiond/trace-ust.c > >> index 7592d77..8fb685c 100644 > >> --- a/src/bin/lttng-sessiond/trace-ust.c > >> +++ b/src/bin/lttng-sessiond/trace-ust.c > >> @@ -384,8 +384,8 @@ struct ltt_ust_metadata > >> *trace_ust_create_metadata(char *path) > >> lum->attr.overwrite = DEFAULT_CHANNEL_OVERWRITE; > >> lum->attr.subbuf_size = default_get_metadata_subbuf_size(); > >> lum->attr.num_subbuf = DEFAULT_METADATA_SUBBUF_NUM; > >> - lum->attr.switch_timer_interval = DEFAULT_UST_CHANNEL_SWITCH_TIMER; > >> - lum->attr.read_timer_interval = DEFAULT_UST_CHANNEL_READ_TIMER; > >> + lum->attr.switch_timer_interval = DEFAULT_METADATA_SWITCH_TIMER; > >> + lum->attr.read_timer_interval = DEFAULT_METADATA_READ_TIMER; > >> lum->attr.output = LTTNG_UST_MMAP; > >> > >> lum->handle = -1; > >> diff --git a/src/bin/lttng-sessiond/ust-app.c > >> b/src/bin/lttng-sessiond/ust-app.c > >> index e362381..5710226 100644 > >> --- a/src/bin/lttng-sessiond/ust-app.c > >> +++ b/src/bin/lttng-sessiond/ust-app.c > >> @@ -2527,8 +2527,8 @@ static int create_ust_app_metadata(struct > >> ust_app_session *ua_sess, > >> metadata->attr.overwrite = DEFAULT_CHANNEL_OVERWRITE; > >> metadata->attr.subbuf_size = default_get_metadata_subbuf_size(); > >> metadata->attr.num_subbuf = DEFAULT_METADATA_SUBBUF_NUM; > >> - metadata->attr.switch_timer_interval = > >> DEFAULT_UST_CHANNEL_SWITCH_TIMER; > >> - metadata->attr.read_timer_interval = > >> DEFAULT_UST_CHANNEL_READ_TIMER; > >> + metadata->attr.switch_timer_interval = > >> DEFAULT_METADATA_SWITCH_TIMER; > >> + metadata->attr.read_timer_interval = > >> DEFAULT_METADATA_READ_TIMER; > >> metadata->attr.output = LTTNG_UST_MMAP; > >> metadata->attr.type = LTTNG_UST_CHAN_METADATA; > >> } else { > >> diff --git a/src/bin/lttng/commands/enable_channels.c > >> b/src/bin/lttng/commands/enable_channels.c > >> index 4816d62..c7bbca1 100644 > >> --- a/src/bin/lttng/commands/enable_channels.c > >> +++ b/src/bin/lttng/commands/enable_channels.c > >> @@ -104,28 +104,40 @@ static void usage(FILE *ofp) > >> fprintf(ofp, " --overwrite Flight recorder mode%s\n", > >> DEFAULT_CHANNEL_OVERWRITE ? " (default)" : ""); > >> fprintf(ofp, " --subbuf-size SIZE Subbuffer size in bytes > >> {+k,+M,+G}\n"); > >> - fprintf(ofp, " (default: %zu, kernel > >> default: %zu)\n", > >> - default_get_channel_subbuf_size(), > >> + fprintf(ofp, " (default UST uid: %zu, UST > >> pid: %zu, kernel: %zu)\n", > >> + default_get_ust_uid_channel_subbuf_size(), > >> + default_get_ust_pid_channel_subbuf_size(), > >> default_get_kernel_channel_subbuf_size()); > >> fprintf(ofp, " Rounded up to the next > >> power of 2.\n"); > >> fprintf(ofp, " --num-subbuf NUM Number of subbufers\n"); > >> - fprintf(ofp, " (default: %u)\n", > >> - DEFAULT_CHANNEL_SUBBUF_NUM); > >> + fprintf(ofp, " (default UST uid: %u, UST > >> pid: %u, kernel: %u)\n", > >> + DEFAULT_UST_UID_CHANNEL_SUBBUF_NUM, > >> DEFAULT_UST_PID_CHANNEL_SUBBUF_NUM, > >> + DEFAULT_KERNEL_CHANNEL_SUBBUF_NUM); > >> fprintf(ofp, " Rounded up to the next > >> power of 2.\n"); > >> - fprintf(ofp, " --switch-timer USEC Switch timer interval in usec > >> (default: %u)\n", > >> - DEFAULT_CHANNEL_SWITCH_TIMER); > >> - fprintf(ofp, " --read-timer USEC Read timer interval in usec > >> (UST default: %u, kernel default: %u)\n", > >> - DEFAULT_UST_CHANNEL_READ_TIMER, > >> DEFAULT_KERNEL_CHANNEL_READ_TIMER); > >> + fprintf(ofp, " --switch-timer USEC Switch timer interval in > >> usec\n"); > >> + fprintf(ofp, " (default UST uid: %u, UST > >> pid: %u, kernel: %u)\n", > >> + DEFAULT_UST_UID_CHANNEL_SWITCH_TIMER, > >> DEFAULT_UST_PID_CHANNEL_SWITCH_TIMER, > >> + DEFAULT_KERNEL_CHANNEL_SWITCH_TIMER); > >> + fprintf(ofp, " --read-timer USEC Read timer interval in > >> usec.\n"); > >> + fprintf(ofp, " (default UST uid: %u, UST > >> pid: %u, kernel: %u)\n", > >> + DEFAULT_UST_UID_CHANNEL_READ_TIMER, > >> DEFAULT_UST_UID_CHANNEL_READ_TIMER, > >> + DEFAULT_KERNEL_CHANNEL_READ_TIMER); > >> fprintf(ofp, " --output TYPE Channel output type (Values: > >> %s, %s)\n", > >> output_mmap, output_splice); > >> + fprintf(ofp, " (default UST uid: %s, UST > >> pid: %s, kernel: %s)\n", > >> + DEFAULT_UST_UID_CHANNEL_OUTPUT == LTTNG_EVENT_MMAP ? > >> output_mmap : output_splice, > >> + DEFAULT_UST_PID_CHANNEL_OUTPUT == LTTNG_EVENT_MMAP ? > >> output_mmap : output_splice, > >> + DEFAULT_KERNEL_CHANNEL_OUTPUT == LTTNG_EVENT_MMAP ? > >> output_mmap : output_splice); > >> fprintf(ofp, " --buffers-uid Use per UID buffer (-u > >> only)\n"); > >> fprintf(ofp, " --buffers-pid Use per PID buffer (-u > >> only)\n"); > >> fprintf(ofp, " --buffers-global Use shared buffer for the > >> whole system (-k only)\n"); > >> fprintf(ofp, " -C, --tracefile-size SIZE\n"); > >> - fprintf(ofp, " Maximum size of each tracefile > >> within a stream (in bytes).\n"); > >> + fprintf(ofp, " Maximum size of each tracefile > >> within a stream (in bytes). 0 means unlimited.\n"); > >> + fprintf(ofp, " (default: %u)\n", > >> DEFAULT_CHANNEL_TRACEFILE_SIZE); > >> fprintf(ofp, " -W, --tracefile-count COUNT\n"); > >> fprintf(ofp, " Used in conjunction with -C > >> option, this will limit the number\n"); > >> - fprintf(ofp, " of files created to the > >> specified count.\n"); > >> + fprintf(ofp, " of files created to the > >> specified count. 0 means unlimited.\n"); > >> + fprintf(ofp, " (default: %u)\n", > >> DEFAULT_CHANNEL_TRACEFILE_COUNT); > >> fprintf(ofp, "\n"); > >> } > >> > >> diff --git a/src/common/defaults.c b/src/common/defaults.c > >> index ccdbaf4..d74a42b 100644 > >> --- a/src/common/defaults.c > >> +++ b/src/common/defaults.c > >> @@ -24,7 +24,8 @@ > >> size_t default_channel_subbuf_size; > >> size_t default_metadata_subbuf_size; > >> size_t default_kernel_channel_subbuf_size; > >> -size_t default_ust_channel_subbuf_size; > >> +size_t default_ust_pid_channel_subbuf_size; > >> +size_t default_ust_uid_channel_subbuf_size; > >> > >> static void __attribute__((constructor)) init_defaults(void) > >> { > >> @@ -39,11 +40,13 @@ static void __attribute__((constructor)) > >> init_defaults(void) > >> } > >> > >> default_channel_subbuf_size = > >> - max(DEFAULT_CHANNEL_SUBBUF_SIZE, page_size); > >> + max(_DEFAULT_CHANNEL_SUBBUF_SIZE, page_size); > >> default_metadata_subbuf_size = > >> max(DEFAULT_METADATA_SUBBUF_SIZE, page_size); > >> default_kernel_channel_subbuf_size = > >> max(DEFAULT_KERNEL_CHANNEL_SUBBUF_SIZE, page_size); > >> - default_ust_channel_subbuf_size = > >> - max(DEFAULT_UST_CHANNEL_SUBBUF_SIZE, page_size); > >> + default_ust_pid_channel_subbuf_size = > >> + max(DEFAULT_UST_PID_CHANNEL_SUBBUF_SIZE, page_size); > >> + default_ust_uid_channel_subbuf_size = > >> + max(DEFAULT_UST_UID_CHANNEL_SUBBUF_SIZE, page_size); > >> } > >> diff --git a/src/common/defaults.h b/src/common/defaults.h > >> index fb6a975..2c73277 100644 > >> --- a/src/common/defaults.h > >> +++ b/src/common/defaults.h > >> @@ -112,55 +112,57 @@ > >> > >> /* Default channel attributes */ > >> #define DEFAULT_CHANNEL_NAME "channel0" > >> -#define DEFAULT_CHANNEL_OVERWRITE 0 /* usec */ > >> -/* DEFAULT_CHANNEL_SUBBUF_SIZE must always be a power of 2 */ > >> -#define DEFAULT_CHANNEL_SUBBUF_SIZE 4096 /* bytes */ > >> -/* DEFAULT_CHANNEL_SUBBUF_NUM must always be a power of 2 */ > >> -#define DEFAULT_CHANNEL_SUBBUF_NUM 4 > >> -#define DEFAULT_CHANNEL_SWITCH_TIMER 0 /* usec */ > >> -#define DEFAULT_CHANNEL_READ_TIMER 200000 /* usec */ > >> -#define DEFAULT_CHANNEL_OUTPUT LTTNG_EVENT_MMAP > >> - > >> +#define DEFAULT_CHANNEL_OVERWRITE 0 > >> +#define DEFAULT_CHANNEL_TRACEFILE_SIZE 0 > >> +#define DEFAULT_CHANNEL_TRACEFILE_COUNT 0 > >> + > >> +/* Must always be a power of 2 */ > >> +#define _DEFAULT_CHANNEL_SUBBUF_SIZE 4096 /* bytes */ > >> +/* Must always be a power of 2 */ > >> +#define _DEFAULT_CHANNEL_SUBBUF_NUM 4 > >> +#define _DEFAULT_CHANNEL_SWITCH_TIMER 0 /* usec */ > >> +#define _DEFAULT_CHANNEL_READ_TIMER 200000 /* usec */ > >> +#define _DEFAULT_CHANNEL_OUTPUT LTTNG_EVENT_MMAP > >> + > >> +/* Metadata channel defaults. */ > >> #define DEFAULT_METADATA_SUBBUF_SIZE 4096 > >> #define DEFAULT_METADATA_SUBBUF_NUM 2 > >> #define DEFAULT_METADATA_CACHE_SIZE 4096 > >> +#define DEFAULT_METADATA_SWITCH_TIMER _DEFAULT_CHANNEL_SWITCH_TIMER > >> +#define DEFAULT_METADATA_READ_TIMER > >> _DEFAULT_CHANNEL_READ_TIMER > >> +#define DEFAULT_METADATA_OUTPUT _DEFAULT_CHANNEL_OUTPUT > >> > >> /* Kernel has different defaults */ > >> > >> /* DEFAULT_KERNEL_CHANNEL_SUBBUF_SIZE must always be a power of 2 */ > >> -#define DEFAULT_KERNEL_CHANNEL_SUBBUF_SIZE 262144 /* bytes */ > >> +#define DEFAULT_KERNEL_CHANNEL_SUBBUF_SIZE 262144 /* > >> bytes */ > >> /* > >> * DEFAULT_KERNEL_CHANNEL_SUBBUF_NUM must always be a power of 2. > >> * Update help manually if override. > >> */ > >> -#define DEFAULT_KERNEL_CHANNEL_SUBBUF_NUM DEFAULT_CHANNEL_SUBBUF_NUM > >> +#define DEFAULT_KERNEL_CHANNEL_SUBBUF_NUM > >> _DEFAULT_CHANNEL_SUBBUF_NUM > >> /* See lttng-kernel.h enum lttng_kernel_output for channel output */ > >> -#define DEFAULT_KERNEL_CHANNEL_OUTPUT LTTNG_EVENT_SPLICE > >> -/* By default, unlimited tracefile size */ > >> -#define DEFAULT_KERNEL_CHANNEL_TRACEFILE_SIZE 0 > >> -/* By default, unlimited tracefile count */ > >> -#define DEFAULT_KERNEL_CHANNEL_TRACEFILE_COUNT 0 > >> - > >> -#define DEFAULT_KERNEL_CHANNEL_SWITCH_TIMER \ > >> - DEFAULT_CHANNEL_SWITCH_TIMER > >> -#define DEFAULT_KERNEL_CHANNEL_READ_TIMER 200000 /* usec */ > >> +#define DEFAULT_KERNEL_CHANNEL_OUTPUT > >> LTTNG_EVENT_SPLICE > >> +#define DEFAULT_KERNEL_CHANNEL_SWITCH_TIMER > >> _DEFAULT_CHANNEL_SWITCH_TIMER > >> +#define DEFAULT_KERNEL_CHANNEL_READ_TIMER > >> _DEFAULT_CHANNEL_READ_TIMER > >> > >> /* User space defaults */ > >> > >> /* Must be a power of 2 */ > >> -#define DEFAULT_UST_CHANNEL_SUBBUF_SIZE 4096 /* bytes */ > >> +#define DEFAULT_UST_PID_CHANNEL_SUBBUF_SIZE > >> _DEFAULT_CHANNEL_SUBBUF_SIZE > >> +#define DEFAULT_UST_UID_CHANNEL_SUBBUF_SIZE 131072 /* > >> bytes */ > >> /* Must be a power of 2. Update help manuall if override. */ > >> -#define DEFAULT_UST_CHANNEL_SUBBUF_NUM DEFAULT_CHANNEL_SUBBUF_NUM > >> +#define DEFAULT_UST_PID_CHANNEL_SUBBUF_NUM > >> _DEFAULT_CHANNEL_SUBBUF_NUM > >> +#define DEFAULT_UST_UID_CHANNEL_SUBBUF_NUM > >> _DEFAULT_CHANNEL_SUBBUF_NUM > >> /* See lttng-ust.h enum lttng_ust_output */ > >> -#define DEFAULT_UST_CHANNEL_OUTPUT LTTNG_EVENT_MMAP > >> -/* By default, unlimited tracefile size */ > >> -#define DEFAULT_UST_CHANNEL_TRACEFILE_SIZE 0 > >> -/* By default, unlimited tracefile count */ > >> -#define DEFAULT_UST_CHANNEL_TRACEFILE_COUNT 0 > >> +#define DEFAULT_UST_PID_CHANNEL_OUTPUT > >> _DEFAULT_CHANNEL_OUTPUT > >> +#define DEFAULT_UST_UID_CHANNEL_OUTPUT > >> _DEFAULT_CHANNEL_OUTPUT > >> +/* Timers in usec. */ > >> +#define DEFAULT_UST_PID_CHANNEL_SWITCH_TIMER > >> _DEFAULT_CHANNEL_SWITCH_TIMER > >> +#define DEFAULT_UST_UID_CHANNEL_SWITCH_TIMER > >> _DEFAULT_CHANNEL_SWITCH_TIMER > >> > >> -#define DEFAULT_UST_CHANNEL_SWITCH_TIMER \ > >> - DEFAULT_CHANNEL_SWITCH_TIMER > >> -#define DEFAULT_UST_CHANNEL_READ_TIMER 0 /* usec */ > >> +#define DEFAULT_UST_PID_CHANNEL_READ_TIMER 0 /* usec */ > >> +#define DEFAULT_UST_UID_CHANNEL_READ_TIMER 0 /* usec */ > >> > >> /* > >> * Default timeout value for the sem_timedwait() call. Blocking forever > >> is not > >> @@ -202,10 +204,10 @@ > >> > >> extern size_t default_channel_subbuf_size; > >> extern size_t default_metadata_subbuf_size; > >> -extern size_t default_ust_channel_subbuf_size; > >> +extern size_t default_ust_pid_channel_subbuf_size; > >> +extern size_t default_ust_uid_channel_subbuf_size; > >> extern size_t default_kernel_channel_subbuf_size; > >> > >> - > >> /* > >> * Returns the default subbuf size. > >> * > >> @@ -243,15 +245,27 @@ size_t default_get_kernel_channel_subbuf_size(void) > >> } > >> > >> /* > >> - * Returns the default subbuf size for the UST domain. > >> + * Returns the default subbuf size for the UST domain per PID. > >> + * > >> + * This function depends on a value that is set at constructor time, so > >> it is > >> + * unsafe to call it from another constructor. > >> + */ > >> +static inline > >> +size_t default_get_ust_pid_channel_subbuf_size(void) > >> +{ > >> + return default_ust_pid_channel_subbuf_size; > >> +} > >> + > >> +/* > >> + * Returns the default subbuf size for the UST domain per UID. > >> * > >> * This function depends on a value that is set at constructor time, so > >> it is > >> * unsafe to call it from another constructor. > >> */ > >> static inline > >> -size_t default_get_ust_channel_subbuf_size(void) > >> +size_t default_get_ust_uid_channel_subbuf_size(void) > >> { > >> - return default_ust_channel_subbuf_size; > >> + return default_ust_uid_channel_subbuf_size; > >> } > >> > >> #endif /* _DEFAULTS_H */ > >> diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c > >> index 3787e29..a7328eb 100644 > >> --- a/src/lib/lttng-ctl/lttng-ctl.c > >> +++ b/src/lib/lttng-ctl/lttng-ctl.c > >> @@ -1386,29 +1386,37 @@ void lttng_channel_set_default_attr(struct > >> lttng_domain *domain, > >> > >> memset(attr, 0, sizeof(struct lttng_channel_attr)); > >> > >> + /* Same for all domains. */ > >> + attr->overwrite = DEFAULT_CHANNEL_OVERWRITE; > >> + attr->tracefile_size = DEFAULT_CHANNEL_TRACEFILE_SIZE; > >> + attr->tracefile_count = DEFAULT_CHANNEL_TRACEFILE_COUNT; > >> + > >> switch (domain->type) { > >> case LTTNG_DOMAIN_KERNEL: > >> - attr->overwrite = DEFAULT_CHANNEL_OVERWRITE; > >> attr->switch_timer_interval = > >> DEFAULT_KERNEL_CHANNEL_SWITCH_TIMER; > >> attr->read_timer_interval = DEFAULT_KERNEL_CHANNEL_READ_TIMER; > >> - > >> attr->subbuf_size = default_get_kernel_channel_subbuf_size(); > >> attr->num_subbuf = DEFAULT_KERNEL_CHANNEL_SUBBUF_NUM; > >> attr->output = DEFAULT_KERNEL_CHANNEL_OUTPUT; > >> - attr->tracefile_size = DEFAULT_KERNEL_CHANNEL_TRACEFILE_SIZE; > >> - attr->tracefile_count = DEFAULT_KERNEL_CHANNEL_TRACEFILE_COUNT; > >> break; > >> case LTTNG_DOMAIN_UST: > >> - attr->overwrite = DEFAULT_CHANNEL_OVERWRITE; > >> - attr->switch_timer_interval = DEFAULT_UST_CHANNEL_SWITCH_TIMER; > >> - attr->read_timer_interval = DEFAULT_UST_CHANNEL_READ_TIMER; > >> - > >> - attr->subbuf_size = default_get_ust_channel_subbuf_size(); > >> - attr->num_subbuf = DEFAULT_UST_CHANNEL_SUBBUF_NUM; > >> - attr->output = DEFAULT_UST_CHANNEL_OUTPUT; > >> - attr->tracefile_size = DEFAULT_UST_CHANNEL_TRACEFILE_SIZE; > >> - attr->tracefile_count = DEFAULT_UST_CHANNEL_TRACEFILE_COUNT; > >> - break; > >> + switch (domain->buf_type) { > >> + case LTTNG_BUFFER_PER_UID: > >> + attr->subbuf_size = > >> default_get_ust_uid_channel_subbuf_size(); > >> + attr->num_subbuf = DEFAULT_UST_UID_CHANNEL_SUBBUF_NUM; > >> + attr->output = DEFAULT_UST_UID_CHANNEL_OUTPUT; > >> + attr->switch_timer_interval = > >> DEFAULT_UST_UID_CHANNEL_SWITCH_TIMER; > >> + attr->read_timer_interval = > >> DEFAULT_UST_UID_CHANNEL_READ_TIMER; > >> + break; > >> + case LTTNG_BUFFER_PER_PID: > >> + default: > >> + attr->subbuf_size = > >> default_get_ust_pid_channel_subbuf_size(); > >> + attr->num_subbuf = DEFAULT_UST_PID_CHANNEL_SUBBUF_NUM; > >> + attr->output = DEFAULT_UST_PID_CHANNEL_OUTPUT; > >> + attr->switch_timer_interval = > >> DEFAULT_UST_PID_CHANNEL_SWITCH_TIMER; > >> + attr->read_timer_interval = > >> DEFAULT_UST_PID_CHANNEL_READ_TIMER; > >> + break; > >> + } > >> default: > >> /* Default behavior: leave set to 0. */ > >> break; > >> diff --git a/tests/unit/test_ust_data.c b/tests/unit/test_ust_data.c > >> index a79e2eb..c79dbf6 100644 > >> --- a/tests/unit/test_ust_data.c > >> +++ b/tests/unit/test_ust_data.c > >> @@ -111,9 +111,9 @@ static void test_create_ust_metadata(void) > >> metadata->attr.num_subbuf > >> == DEFAULT_METADATA_SUBBUF_NUM && > >> metadata->attr.switch_timer_interval > >> - == DEFAULT_UST_CHANNEL_SWITCH_TIMER && > >> + == DEFAULT_METADATA_SWITCH_TIMER && > >> metadata->attr.read_timer_interval > >> - == DEFAULT_UST_CHANNEL_READ_TIMER && > >> + == DEFAULT_METADATA_READ_TIMER && > >> metadata->attr.output == LTTNG_UST_MMAP, > >> "Validate UST session metadata"); > >> > >> -- > >> 1.7.10.4 > >> > >> > >> _______________________________________________ > >> lttng-dev mailing list > >> [email protected] > >> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev > > -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
