add environment variables to set subbuffer options
authorAlexis Hallé <alexis.halle@polymtl.ca>
Fri, 28 May 2010 17:10:37 +0000 (13:10 -0400)
committerPierre-Marc Fournier <pierre-marc.fournier@polymtl.ca>
Mon, 31 May 2010 19:49:21 +0000 (15:49 -0400)
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.

libust/tracectl.c
libust/tracer.c
libust/tracer.h
usttrace

index 7a5cf9562282ce7fe90cc3d5e4c405d3bf44b8c6..ef0155db3388441d83fe3afe813f66b5e78d64e3 100644 (file)
@@ -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 */
index baab461f08317d934236113951efab9aeb926af4..8c3f77466f057f8fc89afcfc3c1dd2a5ac57b45f 100644 (file)
@@ -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,
index 0fa2e4dd929fcb54254fa0fff4f93fae965e5e69..e61348250ff6de9d685fd77bc8dde8182b46e4fd 100644 (file)
@@ -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;
index 6ffc988c4d52b4620325f536b4049803a9d1c2a7..dc159f2cdff33897876b9b793bc9474ccc6c5ab7 100755 (executable)
--- 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
This page took 0.028324 seconds and 4 git commands to generate.