diff --git a/doc/tikz/event.recording.all.tex b/doc/tikz/event.recording.all.tex
new file mode 100644
index 0000000..20f6dc8
--- /dev/null
+++ b/doc/tikz/event.recording.all.tex
@@ -0,0 +1,123 @@
+
+\begin{figure}[!t]
+\begin{center}
+  \begin{footnotesize}
+\subfigure[\fxt{}]{
+    \label{fig:event_recording_fxt}
+    \begin{tikzpicture}[scale=.88]
+    % threads
+    \node at (98.5, 100.3) {Process};
+    \node[rotate=-90] at (100.3, 99.4) {Threads};
+    \draw [blue, line width=.3mm, rounded corners]
+        (100.,100.) rectangle (97.,98.8);
+    \foreach \x in {99.7,99.1,...,97.}
+        \draw [line width=.24mm, decorate,decoration={snake,post length=1mm}] (\x,99.9) -- (\x,98.9);        
+    % buffer
+    \draw [blue, fill=MatrixElementsDark, line width=.3mm, rounded corners]
+        (100.5,98.) rectangle (96.5,96.4);
+    \node at (98.5, 97.2) {B    U    F    F    E    R};
+    % 0
+    \node at (98.2, 98.) (buffer0up) {};
+    \node at (97.23, 98.96) (thread0) {}
+        edge[pil] (buffer0up.north);
+    % 1
+    \node at (98.35, 98.) (buffer1up) {};
+    \node at (97.84, 98.96) (thread1) {}
+        edge[pil] (buffer1up.north);
+    % 2
+    \node at (98.5, 98.) (buffer2up) {};
+    \node at (98.5, 98.96) (thread2) {}
+        edge[pil] (buffer2up.north);
+    % 3
+    \node at (98.65, 98.) (buffer3up) {};
+    \node at (99.13, 98.96) (thread3) {}
+        edge[pil] (buffer3up.north);
+    % 4
+    \node at (98.8, 98.) (buffer4up) {};
+    \node at (99.76, 98.96) (thread4) {}
+        edge[pil] (buffer4up.north);                
+    % trace file
+    \draw [blue, fill=gray, line width=.3mm, rounded corners]
+        (99.8,95.6) rectangle (97.2,94.5);
+    \node at (98.5, 95.6) (trace) {};
+    \node at (98.5, 96.4) (bufferdown) {}
+        edge[pild] (trace.north);
+    \draw [blue, fill=white, line width=.3mm, rounded corners]
+        (99.8,95.3) rectangle (97.2,94.5);    
+    \node at (98.5, 94.9) {Trace File};
+    \end{tikzpicture}
+}\hspace*{8mm}
+\subfigure[\litl]{
+    \label{fig:event_recording_litl}
+    \begin{tikzpicture}[scale=.88]
+    % threads
+    \node at (98.5, 100.3) {Process};
+    \node[rotate=-90] at (100.3, 99.4) {Threads};
+    \draw [blue, line width=.3mm, rounded corners]
+        (100.,100.) rectangle (97.,98.8);
+    \foreach \x in {99.7,99.1,...,97.}
+        \draw [line width=.24mm, decorate,decoration={snake,post length=1mm}] (\x,99.9) -- (\x,98.9);        
+    % buffers
+    % 0
+    \draw [blue, fill=MatrixElementsDark, line width=.3mm, rounded corners]
+        (101.,98.) rectangle (100.3,96.4);
+    \node at (100.55, 98.) (buffer0up) {};
+    \node at (99.66, 98.96) (thread0) {}
+        edge[pil] (buffer0up.north);
+    % 1
+    \draw [blue, fill=MatrixElementsDark, line width=.3mm, rounded corners]
+        (100.,98.) rectangle (99.3,96.4);
+    \node at (99.6, 98.) (buffer1up) {};
+    \node at (99.06, 98.96) (thread1) {}
+        edge[pil] (buffer1up.north);
+    % dots
+    \node at (98.9,97.2) {$\dots$};
+    % 2
+    \draw [blue, fill=MatrixElementsDark, line width=.3mm, rounded corners]
+        (98.5,98.) rectangle (97.8,96.4);
+    \node at (98.13, 98.) (buffer2up) {};
+    \node at (98.53, 98.96) (thread2) {}
+        edge[pil] (buffer2up.north);    
+    % 3
+    \draw [blue, fill=MatrixElementsDark, line width=.3mm, rounded corners]
+        (97.5,98.) rectangle (96.8,96.4);
+    \node at (97.15, 98.) (buffer3up) {};
+    \node at (97.95, 98.96) (thread3) {}
+        edge[pil] (buffer3up.north);    
+    % 4
+    \draw [blue, fill=MatrixElementsDark, line width=.3mm, rounded corners]
+        (96.5,98.) rectangle (95.8,96.4);
+    \node at (96.15, 98.) (buffer4up) {};
+    \node at (97.33, 98.95) (thread4) {}
+        edge[pil] (buffer4up.north);
+        
+    \node[rotate=-90] at (101.35, 97.2) {BUFFERS};
+    % trace file
+    \draw [blue, fill=gray, line width=.3mm, rounded corners]
+        (99.8,95.6) rectangle (97.2,94.5);
+    \draw [blue, fill=white, line width=.3mm, rounded corners]
+        (99.8,95.3) rectangle (97.2,94.5);    
+    \node at (98.5, 94.9) {Trace File};
+    % arrows
+    \node at (98.75, 95.6) (trace0) {};
+    \node at (100.65, 96.4) (buffer0down) {}
+        edge[pil] (trace0.north);
+    \node at (98.55, 95.6) (trace1) {};
+    \node at (99.7, 96.4) (buffer1down) {}
+        edge[pil] (trace1.north);
+    \node at (98.5, 95.6) (trace2) {};
+    \node at (98.13, 96.4) (buffer2down) {}
+        edge[pil] (trace2.north);
+    \node at (98.4, 95.6) (trace3) {};
+    \node at (97.1, 96.4) (buffer3down) {}
+        edge[pil] (trace3.north);
+    \node at (98.2, 95.6) (trace4) {};            
+    \node at (96.1, 96.4) (buffer4down) {}
+        edge[pil] (trace4.north);        
+    \end{tikzpicture}
+    }
+  \end{footnotesize}  
+\caption{Event recording mechanism on multi-threaded applications.}
+\label{fig:event_recording_all}
+\end{center}
+\end{figure}
diff --git a/doc/tikz/event.storage.all.line.packed.tex b/doc/tikz/event.storage.all.line.packed.tex
new file mode 100644
index 0000000..c7dded0
--- /dev/null
+++ b/doc/tikz/event.storage.all.line.packed.tex
@@ -0,0 +1,195 @@
+
+\begin{figure}[!t]
+\begin{center}
+  \begin{footnotesize}
+\subfigure[Regular Events]{
+    \label{fig:event_storage_fxt}
+    \begin{tikzpicture}[scale=.88]
+    % vertical lines
+    \foreach \x in {.125,.25,...,21.875}
+        \draw[MatrixElementsDark,line width=.12mm](\x,1.2) -- (\x,1.6);gray
+    % event5
+    \draw [
+    semithick,
+    decorate,
+    decoration={
+        brace,
+        amplitude=5pt,
+        raise=-0.35cm
+    }] (0.02,2.1) -- (8.98, 2.1) node[midway]{event5}; 
+    \draw (0.5, 1.4) -- (0.5, 1.4) node{time};
+    \draw[gray,line width=.2mm](1.,1.2) -- (1.,1.6);
+    \draw (1.5, 1.4) -- (1.5, 1.4) node{tid};
+    \draw[gray,line width=.2mm](2.,1.2) -- (2.,1.6);
+    \draw (2.25, 1.35) -- (2.25, 1.35) node{cpu};
+    \draw[gray,line width=.2mm](2.5,1.2) -- (2.5,1.6);  
+    \draw (3., 1.4) -- (3., 1.4) node{code};
+    \draw[gray,line width=.2mm](3.5,1.2) -- (3.5,1.6);
+    \draw (3.75, 1.35) -- (3.75, 1.35) node{np};
+    \draw[gray,line width=.2mm](4.,1.2) -- (4.,1.6);    
+    \draw (4.5, 1.4) -- (4.5, 1.4) node{par0};
+    \draw[gray,line width=.2mm](5.,1.2) -- (5.,1.6);
+    \draw (5.5, 1.4) -- (5.5, 1.4) node{par1};
+    \draw[gray,line width=.2mm](6.,1.2) -- (6.,1.6);
+    \draw (6.5, 1.4) -- (6.5, 1.4) node{par2};
+    \draw[gray,line width=.2mm](7.,1.2) -- (7.,1.6);  
+    \draw (7.5, 1.4) -- (7.5, 1.4) node{par3};
+    \draw[gray,line width=.2mm](8.,1.2) -- (8.,1.6);
+    \draw (8.5, 1.4) -- (8.5, 1.4) node{par4};
+    \draw[gray,line width=.4mm](9.,1.2) -- (9.,1.6);    
+    % event2
+    \draw [
+    semithick,
+    decorate,
+    decoration={
+        brace,
+        amplitude=5pt,
+        raise=-0.35cm
+    }] (9.02,2.1) -- (14.98, 2.1) node[midway]{event2};     
+    \draw (9.5, 1.4) -- (9.5, 1.4) node{time};
+    \draw[gray,line width=.2mm](10.,1.2) -- (10.,1.6);
+    \draw (10.5, 1.4) -- (10.5, 1.4) node{tid};
+    \draw[gray,line width=.2mm](11.,1.2) -- (11.,1.6);
+    \draw (11.25, 1.35) -- (11.25, 1.35) node{cpu};
+    \draw[gray,line width=.2mm](11.5,1.2) -- (11.5,1.6);  
+    \draw (12., 1.4) -- (12., 1.4) node{code};
+    \draw[gray,line width=.2mm](12.5,1.2) -- (12.5,1.6);
+    \draw (12.75, 1.35) -- (12.75, 1.35) node{np};
+    \draw[gray,line width=.2mm](13.,1.2) -- (13.,1.6);
+    \draw (13.5, 1.4) -- (13.5, 1.4) node{par0};
+    \draw[gray,line width=.2mm](14.,1.2) -- (14.,1.6);    
+    \draw (14.5, 1.4) -- (14.5, 1.4) node{par1};
+    \draw[gray,line width=.4mm](15.,1.2) -- (15.,1.6);    
+    % event3
+    \draw [
+    semithick,
+    decorate,
+    decoration={
+        brace,
+        amplitude=5pt,
+        raise=-0.35cm
+    }] (15.02,2.1) -- (21.98, 2.1) node[midway]{event3};         
+    \draw (15.5, 1.4) -- (15.5, 1.4) node{time};
+    \draw[gray,line width=.2mm](16.,1.2) -- (16.,1.6);
+    \draw (16.5, 1.4) -- (16.5, 1.4) node{tid};
+    \draw[gray,line width=.2mm](17.,1.2) -- (17.,1.6);
+    \draw (17.25, 1.35) -- (17.25, 1.35) node{cpu};
+    \draw[gray,line width=.2mm](17.5,1.2) -- (17.5,1.6);  
+    \draw (18., 1.4) -- (18., 1.4) node{code};
+    \draw[gray,line width=.2mm](18.5,1.2) -- (18.5,1.6);
+    \draw (18.75, 1.35) -- (18.75, 1.35) node{np};
+    \draw[gray,line width=.2mm](19.,1.2) -- (19.,1.6);
+    \draw (19.5, 1.4) -- (19.5, 1.4) node{par0};
+    \draw[gray,line width=.2mm](20.,1.2) -- (20.,1.6);    
+    \draw (20.5, 1.4) -- (20.5, 1.4) node{par1};
+    \draw[gray,line width=.2mm](21.,1.2) -- (21.,1.6);    
+    \draw (21.5, 1.4) -- (21.5, 1.4) node{par2};
+    % big rectangle
+    \draw [blue, line width=.3mm]
+        (0.,1.2) rectangle (22.,1.6);
+           
+    \end{tikzpicture}
+}
+\subfigure[Packed Events]{
+    \label{fig:event_storage_litl}
+    \hspace*{2mm}\begin{tikzpicture}[scale=.88]
+    % vertical lines
+    \foreach \x in {.125,.25,...,21.875}
+        \draw[MatrixElementsDark,line width=.12mm](\x,1.2) -- (\x,1.6);gray
+    % event5
+    \draw [
+    semithick,
+    decorate,
+    decoration={
+        brace,
+        amplitude=5pt,
+        raise=-0.35cm
+    }] (0.02,2.1) -- (3.105, 2.1) node[midway]{event5}; 
+    \draw (0.5, 1.4) -- (0.5, 1.4) node{time};
+    \draw[gray,line width=.2mm](1.,1.2) -- (1.,1.6);
+    \draw (1.25, 1.4) -- (1.25, 1.4) node{cd};
+    \draw[gray,line width=.2mm](1.5,1.2) -- (1.5,1.6);
+    \draw (1.75, 1.36) -- (1.75, 1.36) node{tp};
+    \draw[gray,line width=.2mm](2.,1.2) -- (2.,1.6);  
+    \draw (2.25, 1.35) -- (2.25, 1.35) node{np};
+    \draw[gray,line width=.2mm](2.5,1.2) -- (2.5,1.6);
+    \draw (2.8, 1.35) -- (2.8, 1.35) node{par};
+    \draw[gray,line width=.4mm](3.125,1.2) -- (3.125,1.6);
+    % event2
+    \draw [
+    semithick,
+    decorate,
+    decoration={
+        brace,
+        amplitude=5pt,
+        raise=-0.35cm
+    }] (3.145,2.1) -- (5.855, 2.1) node[midway]{event2};     
+    \draw (3.625, 1.4) -- (3.625, 1.4) node{time};
+    \draw[gray,line width=.2mm](4.125,1.2) -- (4.125,1.6);
+    \draw (4.375, 1.4) -- (4.375, 1.4) node{cd};
+    \draw[gray,line width=.2mm](4.625,1.2) -- (4.625,1.6);
+    \draw (4.875, 1.36) -- (4.875, 1.36) node{tp};
+    \draw[gray,line width=.2mm](5.125,1.2) -- (5.125,1.6);  
+    \draw (5.375, 1.35) -- (5.375, 1.35) node{np};
+    \draw[gray,line width=.2mm](5.625,1.2) -- (5.625,1.6);
+    \draw [
+    semithick,
+    decorate,
+    decoration={
+        brace,
+        amplitude=2.5pt,
+        raise=-0.065cm
+    }] (5.5,1.13) -- (5.99, 1.13) node[midway,below]{par}; 
+    \draw[gray,line width=.4mm](5.875,1.2) -- (5.875,1.6);
+    % event3
+    \draw [
+    semithick,
+    decorate,
+    decoration={
+        brace,
+        amplitude=5pt,
+        raise=-0.35cm
+    }] (5.895,2.1) -- (8.73, 2.1) node[midway]{event3};         
+    \draw (6.375, 1.4) -- (6.375, 1.4) node{time};
+    \draw[gray,line width=.2mm](6.875,1.2) -- (6.875,1.6);
+    \draw (7.125, 1.4) -- (7.125, 1.4) node{cd};
+    \draw[gray,line width=.2mm](7.375,1.2) -- (7.375,1.6);
+    \draw (7.625, 1.36) -- (7.625, 1.36) node{tp};
+    \draw[gray,line width=.2mm](7.875,1.2) -- (7.875,1.6);  
+    \draw (8.125, 1.35) -- (8.125, 1.35) node{np};
+    \draw[gray,line width=.2mm](8.375,1.2) -- (8.375,1.6);
+    \draw [
+    semithick,
+    decorate,
+    decoration={
+        brace,
+        amplitude=2.5pt,
+        raise=-0.065cm
+    }] (8.305,1.13) -- (8.8, 1.13) node[midway,below]{par};     
+    \draw[gray,line width=.4mm](8.75,1.2) -- (8.75,1.6);
+    % saved space
+    \draw [
+    semithick,
+    decorate,
+    decoration={
+        brace,
+        amplitude=5pt,
+        raise=-0.35cm
+    }] (8.77,2.1) -- (21.98, 2.1) node[midway]{saved space};
+    % gray rectangle
+    \draw [gray, fill=MatrixElementsDark, line width=.12mm]
+        (8.77,1.2) rectangle (22.,1.6);     
+    % big rectangle
+    \draw [blue, line width=.3mm]
+        (0.,1.2) rectangle (22.,1.6);
+           
+    \end{tikzpicture}
+}
+  \end{footnotesize}  
+\caption{Storage of different kinds of events in the trace file. 
+In the figure, \emph{time} is the time when the event occurred; 
+\emph{cd} means the event code; \emph{tp} is the event type; \emph{np} stands 
+for the number of event's parameters; \emph{par}\dash{}an array of parameters.}
+\label{fig:event_storage_all}
+\end{center}
+\end{figure}
diff --git a/doc/tikz/event.storage.trace.file.merge.tex b/doc/tikz/event.storage.trace.file.merge.tex
new file mode 100644
index 0000000..d358b65
--- /dev/null
+++ b/doc/tikz/event.storage.trace.file.merge.tex
@@ -0,0 +1,98 @@
+
+\begin{figure*}[!t]
+\begin{center}
+  \begin{footnotesize}
+    \hspace*{-1mm}
+    \begin{tikzpicture}[scale=1.2]
+    \draw [blue, fill=MatrixElementsDark, line width=.35mm, rounded corners]
+        (0.,0.) rectangle (18.5,1.);
+    % header
+    \draw [MyGreen, fill=white, line width=.3mm, rounded corners]
+        (0.1,0.1) rectangle (7.71,.9);
+    \draw [MyGreen, line width=.3mm] (.1, .6) -- (7.71, .6);
+    \node at (3.7, .73) {H    E    A    D    E    R};
+    % #trace files
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (.15,0.15) rectangle (1.15,.55);
+    \node at (.65, .35) {\#traces};    
+    
+    % fids and offsets
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (1.2,0.15) rectangle (3.32,.55);
+    \node at (1.5, .35) {fid0};
+    \draw [gray, line width=.3mm] (1.76, .15) -- (1.76, .55);
+    \node at (2.1, .35) {size0};
+    \draw [gray, line width=.3mm] (2.43, .15) -- (2.43, .55);
+    \node at (2.86, .35) {offset0};
+    
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (3.37,0.15) rectangle (5.49,.55);
+    \node at (3.66, .35) {fid1};
+    \draw [gray, line width=.3mm] (3.91, .15) -- (3.91, .55);
+    \node at (4.27, .35) {size1};
+    \draw [gray, line width=.3mm] (4.59, .15) -- (4.59, .55);
+    \node at (5.04, .35) {offset1};
+
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (5.54,0.15) rectangle (7.66,.55);
+    \node at (5.83, .35) {fid2};
+    \draw [gray, line width=.3mm] (6.09, .15) -- (6.09, .55);
+    \node at (6.43, .35) {size2};
+    \draw [gray, line width=.3mm] (6.76, .15) -- (6.76, .55);
+    \node at (7.2, .35) {offset2};
+    
+    % trace0
+    \draw [MyGreen, fill=white, line width=.3mm, rounded corners]
+        (7.81,0.1) rectangle (11.27,.9);
+    \draw [MyGreen, line width=.3mm] (7.81, .6) -- (11.27, .6);
+    \node at (9.51, .73) {Trace0};
+    \node at (7.94,.9) (trace0) {};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (7.86,0.15) rectangle (9.56,.55);
+    \node at (8.71, .37) {\textsc{header0}};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (9.61,0.15) rectangle (11.22,.55);
+    \node at (10.42, .35) {\textsc{events}};    
+              
+    % trace1
+    \draw [MyGreen, fill=white, line width=.3mm, rounded corners]
+        (11.37,0.1) rectangle (14.83,.9);
+    \draw [MyGreen, line width=.3mm] (11.37, .6) -- (14.83, .6);
+    \node at (13.07, .73) {Trace1};
+    \node at (11.5,.9) (trace1) {};    
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (11.42,0.15) rectangle (13.07,.55);    
+    \node at (12.25, .37) {\textsc{header1}};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (13.12,0.15) rectangle (14.77,.55);
+    \node at (13.95, .35) {\textsc{events}};        
+    
+    % trace2
+    \draw [MyGreen, fill=white, line width=.3mm, rounded corners]
+        (14.93,0.1) rectangle (18.39,.9);
+    \draw [MyGreen, line width=.3mm] (14.93, .6) -- (18.39, .6);
+    \node at (16.63, .73) {Trace2};
+    \node at (15.06,.9) (trace2) {};        
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (14.98,0.15) rectangle (16.67,.55);    
+    \node at (15.82, .37) {\textsc{header2}};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (16.72,0.15) rectangle (18.34,.55);
+    \node at (17.53, .35) {\textsc{events}};
+    
+    % arrows
+    \node at (2.74, .45) (offset0) {}
+          edge[pil, densely dotted, bend right=-40] (trace0.west);
+    \node at (4.92, .45) (offset1) {}
+          edge[pil, bend right=-40] (trace1.west);
+    \node at (7.08, .45) (offset2) {}
+          edge[pil, dashed, bend right=-40] (trace2.west);
+    
+    \end{tikzpicture}
+  \end{footnotesize} 
+\caption{The structure of an archive composed of multiple trace files. In the 
+figure, \emph{fid} stands for the trace file name; \emph{size} is the size of a 
+merged trace file.}
+\label{fig:storage_trace_merge}
+\end{center}
+\end{figure*}
diff --git a/doc/tikz/event.storage.trace.file.tex b/doc/tikz/event.storage.trace.file.tex
new file mode 100644
index 0000000..c906b10
--- /dev/null
+++ b/doc/tikz/event.storage.trace.file.tex
@@ -0,0 +1,127 @@
+
+\begin{figure*}[!t]
+\begin{center}
+  \begin{footnotesize}
+    \hspace*{-1mm}
+    \begin{tikzpicture}[scale=1.2]
+    \draw [blue, fill=MatrixElementsDark, line width=.35mm, rounded corners]
+        (0.,0.) rectangle (18.5,1.);
+    % header
+    \draw [MyGreen, fill=white, line width=.3mm, rounded corners]
+        (0.1,0.1) rectangle (8.4,.9);
+    \draw [MyGreen, line width=.3mm] (.1, .6) -- (8.4, .6);
+    \draw (4.2, .73) -- (4.2, .73) node{H    E    A    D    E    R};
+    % litl version and OS
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (.15,0.15) rectangle (1.15,.55);
+    %\draw (.65, .35) -- (.65, .35) node{\litl{\_}v};    
+    \node at (.65, .35) {\litl{\_}v};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (1.2,0.15) rectangle (1.6,.55);
+    \draw (1.4, .35) -- (1.4, .35) node{OS};        
+    % buffer size and #threads
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (1.65,0.15) rectangle (2.75,.55);
+    \draw (2.2, .35) -- (2.2, .35) node{\#threads};    
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (2.8,0.15) rectangle (3.85,.55);
+    \draw (3.33, .35) -- (3.33, .35) node{buf\_size};
+    % tids and offsets
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (3.9,0.15) rectangle (5.35,.55);
+    \draw (4.2, .35) -- (4.2, .35) node{tid0};
+    \draw [gray, line width=.3mm] (4.46, .15) -- (4.46, .55);
+    \node at (4.93, .35) {offset0};
+    
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (5.4,0.15) rectangle (6.85,.55);
+    \draw (5.7, .35) -- (5.7, .35) node{tid1};
+    \draw [gray, line width=.3mm] (5.96, .15) -- (5.96, .55);
+    \draw (6.43, .35) -- (6.43, .35) node{offset1};
+    
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (6.9,0.15) rectangle (8.35,.55);
+    \draw (7.2, .35) -- (7.2, .35) node{tid2};
+    \draw [gray, line width=.3mm] (7.46, .15) -- (7.46, .55);
+    \draw (7.93, .35) -- (7.93, .35) node{offset2};
+    % chunk00
+    \draw [MyGreen, fill=white, line width=.3mm, rounded corners]
+        (8.5,0.1) rectangle (10.4,.9);
+    \draw [MyGreen, line width=.3mm] (8.5, .6) -- (10.4, .6);
+    \node at (8.65,0.9) (chunk00) {};
+    \draw (9.45, .73) -- (9.45, .73) node{chunk00};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (8.55,0.15) rectangle (9.35,.55);
+    \draw (8.95, .35) -- (8.95, .35) node{events};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (9.4,0.15) rectangle (10.35,.55);
+    \draw (9.88, .35) -- (9.88, .35) node{offset01};
+    % chunk20
+    \draw [MyGreen, fill=white, line width=.3mm, rounded corners]
+        (10.5,0.1) rectangle (12.4,.9);
+    \draw [MyGreen, line width=.3mm] (10.5, .6) -- (12.4, .6);
+    \draw (11.45, .73) -- (11.45, .73) node{chunk20};
+    \node at (10.65,0.9) (chunk20) {};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (10.55,0.15) rectangle (11.35,.55);
+    \draw (10.95, .35) -- (10.95, .35) node{events};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (11.4,0.15) rectangle (12.35,.55);
+    \draw (11.88, .35) -- (11.88, .35) node{offset21};
+    % chunk01
+    \draw [MyGreen, fill=white, line width=.3mm, rounded corners]
+        (12.5,0.1) rectangle (14.4,.9);
+    \draw [MyGreen, line width=.3mm] (12.5, .6) -- (14.4, .6);
+    \draw (13.45, .73) -- (13.45, .73) node{chunk01};
+    \node at (12.65,0.9) (chunk01) {};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (12.55,0.15) rectangle (13.35,.55);
+    \draw (12.95, .35) -- (12.95, .35) node{events};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (13.4,0.15) rectangle (14.35,.55);
+    \draw (13.88, .35) -- (13.88, .35) node{offset02};
+    % chunk10
+    \draw [MyGreen, fill=white, line width=.3mm, rounded corners]
+        (14.5,0.1) rectangle (16.4,.9);
+    \draw [MyGreen, line width=.3mm] (14.5, .6) -- (16.4, .6);
+    \draw (15.45, .73) -- (15.45, .73) node{chunk10};
+    \node at (14.65,0.9) (chunk10) {};    
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (14.55,0.15) rectangle (15.35,.55);
+    \draw (14.95, .35) -- (14.95, .35) node{events};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (15.4,0.15) rectangle (16.35,.55);
+    \draw (15.88, .35) -- (15.88, .35) node{offset11};
+    % chunk02
+    \draw [MyGreen, fill=white, line width=.3mm, rounded corners]
+        (16.5,0.1) rectangle (18.4,.9);
+    \draw [MyGreen, line width=.3mm] (16.5, .6) -- (18.4, .6);
+    \draw (17.45, .73) -- (17.45, .73) node{chunk02};
+    \node at (16.65,0.9) (chunk02) {};    
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (16.55,0.15) rectangle (17.35,.55);
+    \draw (16.95, .35) -- (16.95, .35) node{events};
+    \draw [gray, fill=white, line width=.3mm, rounded corners]
+        (17.4,0.15) rectangle (18.35,.55);
+    \draw (17.88, .35) -- (17.88, .35) node{offset03};    
+    
+    % arrows
+    \node at (4.8, .45) (offset0) {}
+          edge[pil, bend right=-40] (chunk00.west);
+    \node at (6.3, .45) (offset1) {}
+          edge[pil, dashed, bend right=-40] (chunk10.west);
+    \node at (7.8, .45) (offset2) {}
+          edge[pil, densely dotted, bend right=-40] (chunk20.west);
+    \node at (9.75, .45) (offset01) {}
+          edge[pil, bend right=-40] (chunk01.west);          
+    \node at (13.75, .45) (offset02) {}
+          edge[pil, bend right=-40] (chunk02.west);                    
+    \end{tikzpicture}
+  \end{footnotesize}  
+\caption{Storage of events recorded by \litl{} on multi-threaded 
+applications. In the figure, \emph{\litl{\_}v} contains information about \litl{}; 
+\emph{OS}\dash{}about OS and architecture; \emph{\#threads} stands for the 
+number of threads; \emph{buf\_size}\dash{}the buffer size.}
+\label{fig:event_storage_trace}
+\end{center}
+\end{figure*}
