Skip to content
This repository

Event Time Charts

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 README
Octocat-spinner-32 evtchart.pl
Octocat-spinner-32 procevt.d
Octocat-spinner-32 procevt_sample.png
Octocat-spinner-32 procevt_sample.svg
Octocat-spinner-32 procevt_sample.txt
Octocat-spinner-32 sleeptest.sh
README
Event Time Charts visualize event logs

Event logs are a simple format for describing generic events, including start
and end times, event names, and parent-child relationships.  The canonical
example is for process execution, tracing the creation of new processes, their
child processes, and their duration.

An event log has the following format:

	TIME(ns) EVENT ID ID_NAME PARENT_ID EXTRAS

For example, the following shows a process log (generated using the included
procevt.d DTrace script):

	TIME(ns) EVENT ID ID_NAME PARENT_ID EXTRAS
	93830738811087 start 66526 bash 93708
	93830740205965 change 66526 sleeptest.sh 93708
	93830741823055 change 66526 sleeptest.sh->ksh93 93708
	93830746023333 start 66527 ksh93 66526
	93830746221818 change 66527 sleep 66526
	93831749169097 end 66527 sleep 66526
	[...]

This full log is in the included procevt_sample.txt file.  This traces the
execution of the example sleeptest.sh script, also included.

The procevt.d script maps process events to event log fields using:

	EVENT = "start", for fork()
	EVENT = "change", for exec()
	EVENT = "end", for exit()
	ID = PID
	ID_NAME = execname
	PARENT_ID = PPID

It was executed and redirected to the log file using:

# ./procevt.d > procevt_sample.txt

And the event chart SVG (renamed to procevt_sample.svg) was generated using:

$ ./evtchart.pl procevt_sample.txt

There are various tunables at the top of the evtchart.pl program to customize
the output.

A PNG version of procevt_sample.svg has been included (converted using an
external tool).

Event charts can be used for other tasks, including function execution,
provided that an evt log can be collected.
Something went wrong with that request. Please try again.