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 ? 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 > _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
