From 32086343adcf25e4634e3bdc53953107c1be84fd Mon Sep 17 00:00:00 2001 From: guanglei Date: Tue, 24 Oct 2006 07:54:52 +0000 Subject: [PATCH] add lket-b2a man page --- documentation.html | 3 +- man5/lket-b2a.1.html | 387 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 389 insertions(+), 1 deletion(-) create mode 100644 man5/lket-b2a.1.html diff --git a/documentation.html b/documentation.html index 445d57cd..bdc8e2a4 100644 --- a/documentation.html +++ b/documentation.html @@ -72,9 +72,10 @@
  • SCSI probe points
  • Signal probe points
  • TCP probe points
  • -
  • UDP probe points
  • +
  • UDP probe points
  • Linux Kernel Event Trace
  • +
  • Converting and dumping utility for LKET binary trace data
  • Older Stuff

    May be a bit out-of-date.

    diff --git a/man5/lket-b2a.1.html b/man5/lket-b2a.1.html new file mode 100644 index 00000000..d0af8a35 --- /dev/null +++ b/man5/lket-b2a.1.html @@ -0,0 +1,387 @@ +Content-type: text/html + +Manpage of LKET-B2A + +

    LKET-B2A

    +Section: User Commands (1)
    Updated: @DATE@
    Index +Return to Main Contents
    + +  +

    NAME

    + +lket-b2a - Converting and dumping utility for LKET binary trace data +

    + + + +

    +  +

    SYNOPSIS

    + +

    +
    + +lket-b2a + +OPTIONS + +IN_FILENAME... + +
    + +

    +  +

    DESCRIPTION

    + +

    +The trace data generated by +LKET + +is in binary format by default for +better performance and smaller size. +lket-b2a + +is used to convert the +binary trace data into readable data in ascii format and save +them into local file or MySQL database for off-line trace analysis. +It uses the per-cpu binary trace data files (stpd_cpu*) as inputs. +You can use "stap -bM" with LKET to get those per-cpu files before using it. +

    +The database used by +lket-b2a + +is MySQL. So MySQL must be properly installed +and configured in order to make +lket-b2a + +able to dump the trace data into MySQL database. +

    +  +

    OPTIONS

    + +lket-b2a + +supports the following two options. They can be used +together or alone but at least one of them should be specified: +

    +

    +
    -m + +
    +convert and dump trace data into MySQL database. For more details, +See the following section. +
    -f + +
    +convert and dump trace data into local file. For more details, +See the following section. +

    +

    +  +

    DUMP TRACE DATA INTO LOCAL FILE

    + +

    +The generated output file is named +lket.out. + +The following is an example: +

    + +
    + +

    +
    +root:/home/root/data> lket-b2a -f stpd_cpu*
    +root:/home/root/data> cat lket.out
    +LKET Magic:     0xAEFCDB6B
    +InitHdrLen:     9
    +Version Major:  1
    +Version Minor:  1
    +Big endian:     YES
    +Timing method:  do_gettimeofday()
    +Bits width:     64
    +Initial CPU timebase:   187994 (cycles per microsecond)
    +
    +0.2084 APPNAME: (null) PID:20922 CPU:3 HOOKGRP:3 HOOKID:1 tid:20936,pid:20936,ppid:35,pname:systemtap/0,
    +0.2086 APPNAME: (null) PID:20922 CPU:3 HOOKGRP:3 HOOKID:1 tid:20937,pid:20937,ppid:35,pname:systemtap/1,
    +0.2087 APPNAME: (null) PID:20922 CPU:3 HOOKGRP:3 HOOKID:1 tid:20938,pid:20938,ppid:35,pname:systemtap/2,
    +[...]
    +10.24319 APPNAME: sshd PID:7203 CPU:3 HOOKGRP:2 HOOKID:2 syscall:write,
    +10.24324 APPNAME: sshd PID:7203 CPU:3 HOOKGRP:2 HOOKID:1 syscall:compat_sys_select,
    +[...]
    +
    +
    + +
    + + +

    +  +

    DUMP TRACE DATA INTO MYSQL DATABASE

    + +

    +To avoid either reading the complete trace data into internal data +structures to process, or filter through the raw trace data again +and again to calculate the interesting metrics, +lket-b2a + +supports convert and save the binary trace data into MySQL database to +facilitate the query and calculation on the trace data. +

    +lket-b2a + +creates the database name based on current time. And +lket-b2a + +will not only save the trace data, but also some meta data into MySQL +database too, such as trace header, trace table description. +

    +The following is an example of navigating the trace data in MySQL database +created by +lket-b2a: + +

    +Use +lket-b2a + +to convert and dump the binary trace data of +LKET + +into MySQL database: +

    + +
    + +

    +
    +root:/home/root/data> lket-b2a -m stpd_cpu*
    +
    +
    + +
    + + +

    +list all databases in MySQL: +

    + +
    + +

    +
    +mysql> show databases;
    ++------------------+
    +| Database         |
    ++------------------+
    +| DB20061023161626 |
    +| mysql            |
    +| test             |
    ++------------------+
    +3 rows in set (0.00 sec)
    +
    +
    + +
    + + +

    +DB20061023161626 is the newly created database by "lket-b2a -m stpd_cpu*". We can list +all the tables contained in DB20061023161626: +

    + +
    + +

    +
    +mysql> use DB20061023161626
    +Database changed
    +mysql> show tables;
    ++----------------------------+
    +| Tables_in_DB20061023161626 |
    ++----------------------------+
    +| 2_1                        |
    +| 2_2                        |
    +| 3_1                        |
    +| 3_3                        |
    +| 3_5                        |
    +| 4_1                        |
    +| 4_3                        |
    +| 4_4                        |
    +| 8_1                        |
    +| 8_3                        |
    +| appNameMap                 |
    +| table_desc                 |
    +| trace_header               |
    ++----------------------------+
    +13 rows in set (0.00 sec)
    +
    +
    + +
    + + +

    +The table trace_header is used to store the trace header info: +

    + +
    + +

    +
    +mysql> select * from trace_header;
    ++-----------+-----------+------------+-----------------+------------+
    +| Major_Ver | Minor_Ver | Big_Endian | Timing_Method   | Bits_Width |
    ++-----------+-----------+------------+-----------------+------------+
    +|         1 |         1 |          2 | do_gettimeofday |         64 |
    ++-----------+-----------+------------+-----------------+------------+
    +1 row in set (0.00 sec)
    +
    +
    + +
    + + +

    +The table appNameMap is used to store the mapping between PID and process name: +

    + +
    + +

    +
    +mysql> select * from appNameMap;
    ++-------+-----------------+
    +| pid   | pname           |
    ++-------+-----------------+
    +| 10764 | systemtap/0     |
    +| 10765 | systemtap/1     |
    +| 10766 | systemtap/2     |
    +| 10767 | systemtap/3     |
    +| 10768 | systemtap/4     |
    +| 10769 | systemtap/5     |
    +| 10770 | systemtap/6     |
    +| 10771 | systemtap/7     |
    +|     0 | swapper         |
    +|     1 | init            |
    +|     2 | migration/0     |
    +|     3 | ksoftirqd/0     |
    +|     4 | watchdog/0      |
    +|     5 | migration/1     |
    +[...]
    +
    +
    + +
    + + +

    +Each event corresponds to one table which is named as groupid_hookid. For example +table 8_1 corresponds to +addevent.netdev.receive + +whose groupid is 8 and hookid is 1: +

    + +
    + +

    +
    +mysql> select * from table_desc;
    ++------------+----------------------------------+
    +| table_name | table_desc                       |
    ++------------+----------------------------------+
    +| 2_1        | addevent.syscall.entry           |
    +| 2_2        | addevent.syscall.return          |
    +| 3_1        | process_snapshot                 |
    +| 3_3        | addevent.process.execve          |
    +| 3_5        | addevent.process.fork            |
    +| 4_3        | addevent.ioscheduler.elv_next_re |
    +| 4_4        | addevent.ioscheduler.elv_next_re |
    +| 4_1        | addevent.ioscheduler.elv_add_req |
    +| 8_1        | addevent.netdev.receive          |
    +| 8_3        | addevent.netdev.transmit         |
    ++------------+----------------------------------+
    +10 rows in set (0.00 sec)
    +
    +
    + +
    + + +

    +The hookid of a return type event( +addevent.*.return + +) should be an +even number and its value should be the corresponding entry event hookid +1. +For example, the hookid of addevent.syscall.return is 2 and the hookid of +addevent.syscall.entry is 1. And what's more, there will be a new column +named +entry_usec + +for all return type event tables which is the timestamp +of the entry of that event. The column +entry_usec + +is created and calculated by lket-b2a on the fly while processing the binary trace data. +

    + +
    + +

    +
    +mysql> select * from 2_1 limit 4;
    ++---------+--------+--------+------------+--------+--------------+
    +| groupid | hookid | usec   | process_id | cpu_id | syscall      |
    ++---------+--------+--------+------------+--------+--------------+
    +|       2 |      1 |  10727 |      20922 |      2 | read         |
    +|       2 |      1 |  10746 |      20922 |      2 | read         |
    +|       2 |      1 | 729066 |       3605 |      5 | gettimeofday |
    +|       2 |      1 | 729086 |       3605 |      5 | gettimeofday |
    ++---------+--------+--------+------------+--------+--------------+
    +4 rows in set (0.00 sec)
    +
    +mysql> select * from 2_2 limit 4;
    ++---------+--------+--------+------------+--------+------------+--------------+
    +| groupid | hookid | usec   | process_id | cpu_id | entry_usec | syscall      |
    ++---------+--------+--------+------------+--------+------------+--------------+
    +|       2 |      2 |  10742 |      20922 |      2 |      10727 | read         |
    +|       2 |      2 | 729072 |       3605 |      5 |     729066 | gettimeofday |
    +|       2 |      2 | 729089 |       3605 |      5 |     729086 | gettimeofday |
    +|       2 |      2 | 729100 |       3605 |      5 |     729096 | poll         |
    ++---------+--------+--------+------------+--------+------------+--------------+
    +4 rows in set (0.00 sec)
    +
    +
    + +
    + + +

    +  +

    SEE ALSO

    + +stap(1), + +lket(5) + +

    + +


    + 

    Index

    +
    +
    NAME
    +
    SYNOPSIS
    +
    DESCRIPTION
    +
    OPTIONS
    +
    DUMP TRACE DATA INTO LOCAL FILE
    +
    DUMP TRACE DATA INTO MYSQL DATABASE
    +
    SEE ALSO
    +
    +
    +This document was created by +man2html, +using the manual pages.
    +Time: 07:50:26 GMT, October 24, 2006 + + -- 2.43.5