From: Alexis Hallé Date: Fri, 28 May 2010 17:10:37 +0000 (-0400) Subject: add environment variables to set subbuffer options X-Git-Tag: v1.9.1~584 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=223f2e7ce070406f507856fa8f0de508d8a05ad3;p=lttng-ust.git add environment variables to set subbuffer options UST_SUBBUF_SIZE and UST_SUBBUF_NUM control respectively the size and number of subbuffers. Options -S and -N in the usttrace script also control these parameters. --- diff --git a/libust/tracectl.c b/libust/tracectl.c index 7a5cf956..ef0155db 100644 --- a/libust/tracectl.c +++ b/libust/tracectl.c @@ -49,6 +49,8 @@ */ s64 pidunique = -1LL; +extern struct chan_info_struct chan_infos[]; + struct list_head blocked_consumers = LIST_HEAD_INIT(blocked_consumers); static struct ustcomm_app ustcomm_app; @@ -1114,6 +1116,11 @@ static void __attribute__((constructor)) init() { int result; char* autoprobe_val = NULL; + char* subbuffer_size_val = NULL; + char* subbuffer_count_val = NULL; + unsigned int subbuffer_size; + unsigned int subbuffer_count; + unsigned int power; /* Assign the pidunique, to be able to differentiate the processes with same * pid, (before and after an exec). @@ -1197,6 +1204,23 @@ static void __attribute__((constructor)) init() } } + subbuffer_size_val = getenv("UST_SUBBUF_SIZE"); + if(subbuffer_size_val) { + sscanf(subbuffer_size_val, "%u", &subbuffer_size); + power = pow2_higher_or_eq(subbuffer_size); + if(power != subbuffer_size) + WARN("using the next power of two for buffer size = %u\n", power); + chan_infos[LTT_CHANNEL_UST].def_subbufsize = power; + } + + subbuffer_count_val = getenv("UST_SUBBUF_NUM"); + if(subbuffer_count_val) { + sscanf(subbuffer_count_val, "%u", &subbuffer_count); + if(subbuffer_count < 2) + subbuffer_count = 2; + chan_infos[LTT_CHANNEL_UST].def_subbufcount = subbuffer_count; + } + if(getenv("UST_TRACE")) { char trace_name[] = "auto"; char trace_type[] = "ustrelay"; @@ -1263,7 +1287,6 @@ static void __attribute__((constructor)) init() inform_consumer_daemon(trace_name); } - return; /* should decrementally destroy stuff if error */ diff --git a/libust/tracer.c b/libust/tracer.c index baab461f..8c3f7746 100644 --- a/libust/tracer.c +++ b/libust/tracer.c @@ -69,11 +69,7 @@ int (*ltt_statedump_functor)(struct ust_trace *trace) = ltt_statedump_default; struct module *ltt_statedump_owner; -struct chan_info_struct { - const char *name; - unsigned int def_subbufsize; - unsigned int def_subbufcount; -} chan_infos[] = { +struct chan_info_struct chan_infos[] = { [LTT_CHANNEL_METADATA] = { LTT_METADATA_CHANNEL, LTT_DEFAULT_SUBBUF_SIZE_LOW, diff --git a/libust/tracer.h b/libust/tracer.h index 0fa2e4dd..e6134825 100644 --- a/libust/tracer.h +++ b/libust/tracer.h @@ -86,6 +86,12 @@ enum ltt_channels { LTT_CHANNEL_UST, }; +struct chan_info_struct { + const char *name; + unsigned int def_subbufsize; + unsigned int def_subbufcount; +}; + struct ltt_active_marker { struct list_head node; /* active markers list */ const char *channel; diff --git a/usttrace b/usttrace index 6ffc988c..dc159f2c 100755 --- a/usttrace +++ b/usttrace @@ -54,9 +54,11 @@ function usage () { echo " -m Instrument malloc calls." 2>/dev/stderr echo " -f Also trace forked processes." 2>/dev/stderr echo " -s Use system-wide daemon instead of creating one for this session." 2>/dev/stderr + echo " -S Specify the subbuffer size." 2>/dev/stderr + echo " -N Specify the number of subbuffers." 2>/dev/stderr } -while getopts ":hlLmfsW" options; do +while getopts ":hlLmfsWS:N:" options; do case $options in l) arg_preload_libust=1;; L) arg_ld_std_ust=1;; @@ -64,6 +66,8 @@ while getopts ":hlLmfsW" options; do f) arg_preload_fork=1;; s) arg_syswide_daemon=1;; W) where=1;; + S) export UST_SUBBUF_SIZE=$OPTARG;; + N) export UST_SUBBUF_NUM=$OPTARG;; h) usage; exit 0;; \?) usage