update QUICKSTART
authorcompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Wed, 4 Oct 2006 14:27:41 +0000 (14:27 +0000)
committercompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Wed, 4 Oct 2006 14:27:41 +0000 (14:27 +0000)
git-svn-id: http://ltt.polymtl.ca/svn@2154 04897980-b3bd-0310-b5e0-8ef037075253

ltt/branches/poly/QUICKSTART
ltt/branches/poly/configure.in
ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c
ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c
ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.h

index 356262fc71a5fd9f90cfdbb30154bee3a4bc4e20..f20f0250f3f6b51800a155cf7ccee4c02d2d05ac 100644 (file)
@@ -13,7 +13,7 @@ applications.
 What you will typically want is to read sections 2 and 3 : install LTTng from
 sources and use it.
 
-These operations are made for installing the LTTng 0.5.X tracer on a
+These operations are made for installing the LTTng 0.6.X tracer on a
 linux 2.6.X kernel. You will also find instructions for installation of
 LTTV 0.8.x : the Linux Trace Toolkit Viewer. 
 
@@ -227,19 +227,22 @@ make menuconfig (or make xconfig or make config)
     Select the following options :
     [*] Linux Trace Toolkit Instrumentation Support
     <M> or <*> Linux Trace Toolkit Tracer
+      <M> or <*> Linux Trace Toolkit Relay+DebugFS Support
         It makes no difference for the rest of the procedure whether the Tracer
         is compiled built-in or as a module.
     activate :
        [*] Align Linux Trace Toolkit Traces
        [*] Allow tracing from userspace
+       <M> Linux Trace Toolkit Netlink Controller
+       <M> Linux Trace Toolkit State Dump
     your choice (see < Help >) :
        [ ] Activate Linux Trace Toolkit Heartbeat Timer
-    You may or may not activate instrumentation per facility. They are all
-    selected for logging by default. It can be used as a compile time filter to
-    enable/disable logging of events. It is useful to discard events with a
-    minimal impact on the system and especially useful for now, as the dynamic
-    filter has not been implemented yet.
-    Select <Exit>
+    You may or may not decide to compile probes. Afterward, you will have to
+    load the probe modules to enable tracing of their events. The probes
+    automatically select the appropriate facilities.
+    Static instrumentation is a more invasive type of instrumentation that gives
+    the address taking a lock or doing a printk.
+  Select <Exit>
   Select <Exit>
   Select <Yes>
 make
@@ -281,12 +284,20 @@ then, rebooting or issuing the following command will activate debugfs :
 
 mount /mnt/debugfs
 
-You need to load the ltt-control module to be able to control tracing from user
+You need to load the LTT modules to be able to control tracing from user
 space. This is done by issuing the command :
 
 modprobe ltt-control
 modprobe ltt-core
 modprobe ltt-relay
+modprobe ltt-tracer
+modprobe ltt-probe-mm
+modprobe ltt-probe-kernel
+modprobe ltt-probe-i386 (or x86_64, powerpc, ppc, arm, mips)
+modprobe ltt-probe-net
+modprobe ltt-probe-list
+modprobe ltt-probe-ipc
+modprobe ltt-probe-fs
 
 If you want to have complete information about the kernel state (including all
 the process names), you need to load the ltt-statedump module. This is done by
@@ -296,11 +307,24 @@ modprobe ltt-statedump
 
 You can automate at boot time loading the ltt-control module by :
 
+cp /etc/modules /etc/modules.bkp
 echo ltt-control >> /etc/modules
 echo ltt-core >> /etc/modules
 echo ltt-relay >> /etc/modules
+echo ltt-tracer >> /etc/modules
+echo ltt-probe-mm >> /etc/modules
+echo ltt-probe-kernel >> /etc/modules
+echo ltt-probe-i386 >> /etc/modules (or x86_64, powerpc, ppc, arm, mips)
+echo ltt-probe-net >> /etc/modules
+echo ltt-probe-list >> /etc/modules
+echo ltt-probe-ipc >> /etc/modules
+echo ltt-probe-fs >> /etc/modules
 echo ltt-statedump >> /etc/modules
 
+(note : if you want to probe a marker which is within a module, make sure you
+load the probe _after_ the module, otherwise the probe will not be able to
+connect itself to the marker.)
+
 
 * Getting and installing the ltt-control package (on the traced machine)
 (note : the ltt-control package contains lttd and lttctl. Although it has the
@@ -367,6 +391,10 @@ lttctl -n trace -R
 
 see lttctl --help for details.
 
+(note : to see if the buffers has been filled, look at the dmesg output after
+lttctl -R or after stopping tracing from the GUI, it will show an event lost
+count. If it is the case, try using larger buffers. See lttctl --help to learn 
+how.)
 
 * Use text mode LTTV
 
@@ -379,7 +407,11 @@ lttv -m textDump -t /tmp/trace
 
 see lttv -m textDump --help for detailed command line options of textDump.
 
-
+It is, in the current state of the project, very useful to use "grep" on the
+text output to filter by specific event fields. You can later copy the timestamp
+of the events to the clipboard and paste them in the GUI by clicking on the
+bottom right label "Current time". Support for this type of filtering should
+be added to the filter module soon.
 
 
 ***********************************************************
@@ -400,21 +432,21 @@ make install
 * Add new events to the kernel with genevent
 
 su -
-cd /usr/local/share/LinuxTraceToolkitViewer/facilities
+cd /usr/local/share/ltt-control/facilities
 cp process.xml yourfacility.xml
   * edit yourfacility.xml to fit your needs.
 cd /tmp
-/usr/local/bin/genevent /usr/local/share/LinuxTraceToolkitViewer/facilities/yourfacility.xml
+/usr/local/bin/genevent /usr/local/share/ltt-control/facilities/yourfacility.xml
 cp ltt-facility-yourfacility.h ltt-facility-id-yourfacility.h \
-         /usr/src/linux-2.6.17-lttng-0.x.xx8/include/linux/ltt
+         /usr/src/linux-2.6.17-lttng-0.x.xx8/include/ltt
 cp ltt-facility-loader-yourfacility.c ltt-facility-loader-yourfacility.h \
-         /usr/src/linux-2.6.17-lttng-0.x.xx/ltt
-  * edit the kernel file you want to instrument
-    - Add #include <linux/ltt/ltt-facility-yourfacility.h> at the beginning
-      of the file.
-    - Add a call to the tracing functions. See their names and parameters in
-      /usr/src/linux-2.6.17-lttng-0.x.xx/include/linux/ltt/ltt-facility-yourfacility.h
-    
+         /usr/src/linux-2.6.17-lttng-0.x.xx/ltt/facilities
+  * edit the kernel file you want to instrument to add a marker to it. See
+    include/linux/marker.h.
+  * create a dynamically loadable probe. See ltt/probes for examples. The probe
+    will be connected to your marker and will typically call the logging
+    functions found in the header file you created with genevent.
+
 * Add new events to userspace programs with genevent
 See http://ltt.polymtl.ca/ > USERSPACE TRACING QUICKSTART
 
index e58392399987cfd3d5130be9300a4fc92ae0c786..2520438586c156b96f9fce40b93429cd42f75e9e 100644 (file)
@@ -23,7 +23,7 @@
 AC_PREREQ(2.57)
 AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
 #AC_WITH_LTDL  # not needed ?
-AM_INIT_AUTOMAKE(LinuxTraceToolkitViewer,0.8.61-16092006)
+AM_INIT_AUTOMAKE(LinuxTraceToolkitViewer,0.8.62-03102006)
 AM_CONFIG_HEADER(config.h)
 AM_PROG_LIBTOOL
 
index 240c9c34ea42ac64cc2ec29689c152405ce5c5a1..8db42ca8270e4ff2a08e76aa9fa7f779c86859c2 100644 (file)
@@ -220,7 +220,7 @@ void drawing_data_request(Drawing_t *drawing,
          associated by id hooks. */
 
       hooks = g_array_new(FALSE, FALSE, sizeof(LttvTraceHook));
-      hooks = g_array_set_size(hooks, 17);
+      hooks = g_array_set_size(hooks, 18);
       before_hn = after_hn = 0;
 
       /* before hooks */
@@ -314,6 +314,13 @@ void drawing_data_request(Drawing_t *drawing,
           &g_array_index(hooks, LttvTraceHook, before_hn++));
       if(ret) before_hn--;
 
+      ret = lttv_trace_find_hook(ts->parent.t,
+          LTT_FACILITY_STATEDUMP, LTT_EVENT_STATEDUMP_END,
+          0, 0, 0,
+          before_statedump_end,
+          events_request,
+          &g_array_index(hooks, LttvTraceHook, before_hn++));
+      if(ret) before_hn--;
 
 #if 0
       lttv_trace_find_hook(ts->parent.t,
index 65f47eec4a17c250afd1763f7d6a6cf784bc0a52..b7150cfc899812c16cf74ad0d46ee8a904bc4e83 100644 (file)
@@ -2673,3 +2673,72 @@ int after_chunk(void *hook_data, void *call_data)
   return 0;
 }
 
+/* after_statedump_end
+ * 
+ * @param hook_data ControlFlowData structure of the viewer. 
+ * @param call_data Event context.
+ *
+ * This function adds items to be drawn in a queue for each process.
+ * 
+ */
+int before_statedump_end(void *hook_data, void *call_data)
+{
+  LttvTraceHookByFacility *thf = (LttvTraceHookByFacility*)hook_data;
+  EventsRequest *events_request = (EventsRequest*)thf->hook_data;
+  ControlFlowData *control_flow_data = events_request->viewer_data;
+
+  LttvTracefileContext *tfc = (LttvTracefileContext *)call_data;
+
+  LttvTracefileState *tfs = (LttvTracefileState *)call_data;
+
+  LttvTraceState *ts = (LttvTraceState *)tfc->t_context;
+
+  LttvTracesetState *tss = (LttvTracesetState*)tfc->t_context->ts_context;
+  ProcessList *process_list = control_flow_data->process_list;
+
+  LttEvent *e;
+  e = ltt_tracefile_get_event(tfc->tf);
+
+  LttvFilter *filter = control_flow_data->filter;
+  if(filter != NULL && filter->head != NULL)
+    if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
+          tfc->t_context->t,tfc))
+      return FALSE;
+
+  LttTime evtime = ltt_event_time(e);
+
+  ClosureData closure_data;
+  closure_data.events_request = events_request;
+  closure_data.tss = tss;
+  closure_data.end_time = evtime;
+
+  TimeWindow time_window = 
+          lttvwindow_get_time_window(control_flow_data->tab);
+  guint width = control_flow_data->drawing->width;
+  convert_time_to_pixels(
+            time_window,
+            evtime,
+            width,
+            &closure_data.x_end);
+
+  /* Draw last items */
+  g_hash_table_foreach(process_list->process_hash, draw_closure,
+                        (void*)&closure_data);
+#if 0
+  /* Reactivate sort */
+  gtk_tree_sortable_set_sort_column_id(
+      GTK_TREE_SORTABLE(control_flow_data->process_list->list_store),
+      GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID,
+      GTK_SORT_ASCENDING);
+
+  update_index_to_pixmap(control_flow_data->process_list);
+  /* Request a full expose : drawing scrambled */
+  gtk_widget_queue_draw(control_flow_data->drawing->drawing_area);
+#endif //0
+  /* Request expose (updates damages zone also) */
+  drawing_request_expose(events_request, tss, evtime);
+
+  return 0;
+}
+
+
index 8c74e36c7435787f4d486d6f08090dde33416242..883761236a722d1f640f7d303193d30ac716608e 100644 (file)
@@ -108,6 +108,7 @@ int  before_chunk(void *hook_data, void *call_data);
 int  after_chunk(void *hook_data, void *call_data);
 int  before_request(void *hook_data, void *call_data);
 int  after_request(void *hook_data, void *call_data);
+int  before_statedump_end(void *hook_data, void *call_data);
 
 
 
This page took 0.02769 seconds and 4 git commands to generate.