Add stream header documentation
This commit is contained in:
parent
c83c8d2e56
commit
00872418a1
458
doc/fig/stream.svg
Normal file
458
doc/fig/stream.svg
Normal file
@ -0,0 +1,458 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="370"
|
||||
height="180"
|
||||
viewBox="0 0 97.895833 47.625002"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.2 (dc2aedaf03, 2022-05-15)"
|
||||
sodipodi:docname="stream.svg"
|
||||
inkscape:export-filename="event-payload.png"
|
||||
inkscape:export-xdpi="300"
|
||||
inkscape:export-ydpi="300"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="true"
|
||||
inkscape:zoom="2.8289483"
|
||||
inkscape:cx="200.42784"
|
||||
inkscape:cy="124.78136"
|
||||
inkscape:window-width="1914"
|
||||
inkscape:window-height="1025"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid126"
|
||||
spacingx="2.6458333"
|
||||
spacingy="2.6458333"
|
||||
originx="-10.583333"
|
||||
originy="-2.6458337"
|
||||
empspacing="4" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs2" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-10.583333,-2.6458333)">
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:0.2, 0.600001"
|
||||
id="rect326"
|
||||
width="97.895836"
|
||||
height="47.625"
|
||||
x="10.583333"
|
||||
y="2.6458333" />
|
||||
<rect
|
||||
style="fill:#ffeeaa;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:none"
|
||||
id="rect6884"
|
||||
width="84.666664"
|
||||
height="10.583333"
|
||||
x="21.166666"
|
||||
y="21.166664" />
|
||||
<rect
|
||||
style="fill:#e6e6e6;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:none"
|
||||
id="rect2375"
|
||||
width="84.666664"
|
||||
height="5.2916665"
|
||||
x="21.166666"
|
||||
y="5.2916665" />
|
||||
<rect
|
||||
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:none"
|
||||
id="rect2305"
|
||||
width="84.666672"
|
||||
height="5.2916632"
|
||||
x="21.166662"
|
||||
y="42.333336" />
|
||||
<rect
|
||||
style="fill:#c6e9af;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:none"
|
||||
id="rect1108"
|
||||
width="84.666664"
|
||||
height="10.583333"
|
||||
x="21.166666"
|
||||
y="31.75" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.11667px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="59.082172"
|
||||
y="41.534935"
|
||||
id="text366"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan364"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.11667px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
x="59.082172"
|
||||
y="41.534935">version</tspan></text>
|
||||
<rect
|
||||
style="fill:#e6e6e6;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:none"
|
||||
id="rect2009"
|
||||
width="21.166666"
|
||||
height="7.937499"
|
||||
x="21.166666"
|
||||
y="10.583332" />
|
||||
<rect
|
||||
style="fill:#e6e6e6;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:none"
|
||||
id="rect2013"
|
||||
width="21.166664"
|
||||
height="7.937499"
|
||||
x="42.33334"
|
||||
y="10.583332" />
|
||||
<rect
|
||||
style="fill:#e6e6e6;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:none"
|
||||
id="rect2015"
|
||||
width="21.166666"
|
||||
height="7.937499"
|
||||
x="63.5"
|
||||
y="10.583332" />
|
||||
<rect
|
||||
style="fill:#e6e6e6;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:none"
|
||||
id="rect2017"
|
||||
width="21.16666"
|
||||
height="7.937499"
|
||||
x="84.666672"
|
||||
y="10.583332" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.175px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="30.794245"
|
||||
y="14.384908"
|
||||
id="text2087"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2085"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
x="30.794245"
|
||||
y="14.384908">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.175px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="51.960915"
|
||||
y="14.419789"
|
||||
id="text2091"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2089"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
x="51.960915"
|
||||
y="14.419789">1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.175px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="73.127579"
|
||||
y="14.419789"
|
||||
id="text2095"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2093"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
x="73.127579"
|
||||
y="14.419789">2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.175px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="94.29425"
|
||||
y="14.384908"
|
||||
id="text2099"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2097"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
x="94.29425"
|
||||
y="14.384908">3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:cmr10;-inkscape-font-specification:cmr10;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="57.622673"
|
||||
y="8.6726809"
|
||||
id="text2155"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2153"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
x="57.622673"
|
||||
y="8.6726809">4 Bytes</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="46.346531"
|
||||
y="28.001389"
|
||||
id="text2207"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2205"
|
||||
style="stroke-width:0.264583"
|
||||
x="46.346531"
|
||||
y="28.001389">7</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="56.908157"
|
||||
y="28.0665"
|
||||
id="text2211"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2209"
|
||||
style="stroke-width:0.264583"
|
||||
x="56.908157"
|
||||
y="28.0665">6</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="67.513191"
|
||||
y="28.001389"
|
||||
id="text2215"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2213"
|
||||
style="stroke-width:0.264583"
|
||||
x="67.513191"
|
||||
y="28.001389">6</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="78.100662"
|
||||
y="27.999321"
|
||||
id="text2219"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2217"
|
||||
style="stroke-width:0.264583"
|
||||
x="78.100662"
|
||||
y="27.999321">e</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="88.699493"
|
||||
y="28.001389"
|
||||
id="text2223"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2221"
|
||||
style="stroke-width:0.264583"
|
||||
x="88.699493"
|
||||
y="28.001389">6</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="99.267326"
|
||||
y="27.999321"
|
||||
id="text2227"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2225"
|
||||
style="stroke-width:0.264583"
|
||||
x="99.267326"
|
||||
y="27.999321">9</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="25.226366"
|
||||
y="38.582653"
|
||||
id="text2231"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2229"
|
||||
style="stroke-width:0.264583"
|
||||
x="25.226366"
|
||||
y="38.582653">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="35.692909"
|
||||
y="38.582653"
|
||||
id="text2235"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2233"
|
||||
style="stroke-width:0.264583"
|
||||
x="35.692909"
|
||||
y="38.582653">1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="46.326889"
|
||||
y="38.582653"
|
||||
id="text2239"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2237"
|
||||
style="stroke-width:0.264583"
|
||||
x="46.326889"
|
||||
y="38.582653">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="57.004272"
|
||||
y="38.582653"
|
||||
id="text2243"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2241"
|
||||
style="stroke-width:0.264583"
|
||||
x="57.004272"
|
||||
y="38.582653">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="67.442909"
|
||||
y="38.582653"
|
||||
id="text2247"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2245"
|
||||
style="stroke-width:0.264583"
|
||||
x="67.442909"
|
||||
y="38.582653">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="78.100662"
|
||||
y="38.582653"
|
||||
id="text2251"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2249"
|
||||
style="stroke-width:0.264583"
|
||||
x="78.100662"
|
||||
y="38.582653">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="88.609589"
|
||||
y="38.582653"
|
||||
id="text2255"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2253"
|
||||
style="stroke-width:0.264583"
|
||||
x="88.609589"
|
||||
y="38.582653">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="99.28904"
|
||||
y="38.582653"
|
||||
id="text2259"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2257"
|
||||
style="stroke-width:0.264583"
|
||||
x="99.28904"
|
||||
y="38.582653">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.11667px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="60.563736"
|
||||
y="45.73571"
|
||||
id="text2303"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2301"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.11667px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
x="60.563736"
|
||||
y="45.73571">Events...</tspan></text>
|
||||
<rect
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect2429"
|
||||
width="5.291667"
|
||||
height="21.166666"
|
||||
x="13.229168"
|
||||
y="21.166666" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.175px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="-37.530266"
|
||||
y="17.058649"
|
||||
id="text2433"
|
||||
transform="rotate(-90)"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:3.175px;stroke-width:0.264583"
|
||||
x="-37.530266"
|
||||
y="17.058649"
|
||||
id="tspan15238">Header</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:0.2, 0.6;stroke-dashoffset:0"
|
||||
id="rect2161"
|
||||
width="10.583333"
|
||||
height="2.6458333"
|
||||
x="21.166666"
|
||||
y="15.875" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:0.2, 0.6;stroke-dashoffset:0"
|
||||
id="rect2163"
|
||||
width="10.583333"
|
||||
height="2.6458333"
|
||||
x="31.749998"
|
||||
y="15.875" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:0.2, 0.6;stroke-dashoffset:0"
|
||||
id="rect2165"
|
||||
width="10.583333"
|
||||
height="2.6458333"
|
||||
x="42.33334"
|
||||
y="15.875" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:0.2, 0.6;stroke-dashoffset:0"
|
||||
id="rect2167"
|
||||
width="10.583333"
|
||||
height="2.6458333"
|
||||
x="52.916668"
|
||||
y="15.875" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:0.2, 0.6;stroke-dashoffset:0"
|
||||
id="rect2169"
|
||||
width="10.583333"
|
||||
height="2.6458333"
|
||||
x="63.5"
|
||||
y="15.875" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:0.2, 0.6;stroke-dashoffset:0"
|
||||
id="rect2171"
|
||||
width="10.583333"
|
||||
height="2.6458333"
|
||||
x="74.083344"
|
||||
y="15.875" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:0.2, 0.6;stroke-dashoffset:0"
|
||||
id="rect2173"
|
||||
width="10.583333"
|
||||
height="2.6458333"
|
||||
x="84.666672"
|
||||
y="15.875" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-dasharray:0.2, 0.6;stroke-dashoffset:0"
|
||||
id="rect2175"
|
||||
width="10.583333"
|
||||
height="2.6458333"
|
||||
x="95.249992"
|
||||
y="15.875" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="25.199488"
|
||||
y="28.001389"
|
||||
id="text6878"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6876"
|
||||
style="stroke-width:0.264583"
|
||||
x="25.199488"
|
||||
y="28.001389">6</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="35.767326"
|
||||
y="27.999321"
|
||||
id="text6882"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6880"
|
||||
style="stroke-width:0.264583"
|
||||
x="35.767326"
|
||||
y="27.999321">f</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.11667px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="60.346699"
|
||||
y="30.73921"
|
||||
id="text6888"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6886"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.11667px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
x="60.346699"
|
||||
y="30.73921">magic</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 18 KiB |
@ -1,7 +1,7 @@
|
||||
# Trace specification version 1
|
||||
|
||||
The ovni instrumentation library produces a trace with the following
|
||||
specification.
|
||||
The ovni instrumentation library stores the information collected in a
|
||||
trace following the specification of this document.
|
||||
|
||||
The complete trace is stored in a top-level directory named "ovni".
|
||||
Inside this directory you will find the loom directories with the prefix
|
||||
@ -15,7 +15,7 @@ specified in the `pid` argument to `ovni_proc_init()`.
|
||||
Each process directory contains:
|
||||
|
||||
- The metadata file `metadata.json`.
|
||||
- The thread traces with prefix `thread.`.
|
||||
- The thread streams with prefix `thread.`.
|
||||
|
||||
## Process metadata
|
||||
|
||||
@ -27,6 +27,8 @@ The metadata is stored in the JSON file `metadata.json` inside each
|
||||
process directory and contains the following keys:
|
||||
|
||||
- `version`: a number specifying the version of the metadata format.
|
||||
- `model_version`: a string with the version of each model supported by
|
||||
the emulator.
|
||||
- `app_id`: the application ID, used to distinguish between applications
|
||||
running on the same loom.
|
||||
- `rank`: the rank of the MPI process (optional).
|
||||
@ -38,27 +40,66 @@ process directory and contains the following keys:
|
||||
- `phyid`: the number of the CPU as given by the operating system
|
||||
(which can exceed $`N_c`$).
|
||||
|
||||
## Thread trace
|
||||
Here is an example of the `metadata.json` file:
|
||||
|
||||
The thread trace is a binary file composed of events joined one after
|
||||
the other. Each event has a header with the following information:
|
||||
```
|
||||
{
|
||||
"version": 1,
|
||||
"model_version": "O1 V1 T1 M1 D1 K1",
|
||||
"app_id": 1,
|
||||
"rank": 0,
|
||||
"nranks": 4,
|
||||
"cpus": [
|
||||
{
|
||||
"index": 0,
|
||||
"phyid": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"phyid": 1
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"phyid": 2
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"phyid": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Thread streams
|
||||
|
||||
Streams are a binary files that contains a succession of events with
|
||||
monotonically increasing clock values. Streams have a small header and
|
||||
the variable size events just after the header.
|
||||
|
||||
The header contains the magic 4 bytes of "ovni" and a version number of
|
||||
4 bytes too. Here is a figure of the data stored in disk:
|
||||
|
||||
<img src="fig/stream.svg" alt="Stream" width="400px"/>
|
||||
|
||||
Similarly, events have a fixed size header followed by an optional
|
||||
payload of varying size. The header has the following information:
|
||||
|
||||
- Event flags
|
||||
- Payload size in a special format
|
||||
- Model, category and value codes
|
||||
- Time in nanoseconds
|
||||
- Payload (optional)
|
||||
|
||||
The payload size is specified using 4 bits, with the value `0x0` for no
|
||||
payload, or with value $`v`$ for $`v + 1`$ bytes of payload. This
|
||||
allows us to use 16 bytes of payload with value `0xf` at the cost of
|
||||
The event size can vary depending on the data stored in the payload. The
|
||||
payload size is specified using 4 bits, with the value `0x0` for no
|
||||
payload, or with value $`v`$ for $`v + 1`$ bytes of payload. This allows
|
||||
us to use 16 bytes of payload with value `0xf` at the cost of
|
||||
sacrificing payloads of one byte.
|
||||
|
||||
There are two types of events, depending of the size needed for the
|
||||
payload:
|
||||
|
||||
- Normal: with a payload up to 16 bytes
|
||||
- Jumbo: with a payload up to 2^32 bytes
|
||||
- Normal events: with a payload up to 16 bytes
|
||||
- Jumbo events: with a payload up to 2^32 bytes
|
||||
|
||||
## Normal events
|
||||
|
||||
@ -74,8 +115,7 @@ Here is an example of a normal event without payload, a total of 12
|
||||
bytes:
|
||||
|
||||
```
|
||||
% dd if=thread.552943 skip=5258 bs=1 | hexdump -C
|
||||
00000000 00 4f 48 65 01 c5 cf 1d 96 d0 12 00 |.OHe........|
|
||||
00 4f 48 65 01 c5 cf 1d 96 d0 12 00 |.OHe........|
|
||||
```
|
||||
|
||||
And in the following figure you can see every field annotated:
|
||||
@ -83,12 +123,11 @@ And in the following figure you can see every field annotated:
|
||||
<img src="fig/event-normal.svg" alt="Normal event without payload" width="400px"/>
|
||||
|
||||
Another example of a normal event with 16 bytes of payload, a total of
|
||||
28 bytes as reported by hexdump:
|
||||
28 bytes:
|
||||
|
||||
```
|
||||
% dd if=thread.552943 bs=1 count=28 | hexdump -C
|
||||
00000000 0f 4f 48 78 58 c1 b0 b5 95 43 11 00 00 00 00 00 |.OHxX....C......|
|
||||
00000010 ff ff ff ff 00 00 00 00 00 00 00 00 |............|
|
||||
0f 4f 48 78 58 c1 b0 b5 95 43 11 00 00 00 00 00 |.OHxX....C......|
|
||||
ff ff ff ff 00 00 00 00 00 00 00 00 |............|
|
||||
```
|
||||
|
||||
In the following figure you can see each field annotated:
|
||||
@ -112,8 +151,8 @@ Example of a jumbo event of 30 bytes in total, with 14 bytes of jumbo
|
||||
data:
|
||||
|
||||
```
|
||||
00000000 13 56 59 63 eb c1 4b 1a 96 d0 12 00 0e 00 00 00 |.VYc..K.........|
|
||||
00000010 01 00 00 00 74 65 73 74 74 79 70 65 31 00 |....testtype1.|
|
||||
13 56 59 63 eb c1 4b 1a 96 d0 12 00 0e 00 00 00 |.VYc..K.........|
|
||||
01 00 00 00 74 65 73 74 74 79 70 65 31 00 |....testtype1.|
|
||||
```
|
||||
|
||||
In the following figure you can see each field annotated:
|
||||
@ -122,38 +161,43 @@ In the following figure you can see each field annotated:
|
||||
|
||||
## Design considerations
|
||||
|
||||
The trace format has been designed to be very simple, so writing a
|
||||
parser library would take no more than 2 days.
|
||||
The stream format has been designed to be very simple, so writing a
|
||||
parser library would take no more than 2 days for a single developer.
|
||||
|
||||
The common events don't use any payload, so the size per event is kept
|
||||
at the minimum of 12 bytes.
|
||||
The size of the events has been designed to be small, with 12 bytes per
|
||||
event when no payload is used.
|
||||
|
||||
**Important:** The events are stored in disk following the endianness of
|
||||
the machine where they are generated. So a trace generated with a little
|
||||
endian machine would be different than on a big endian machine. Using
|
||||
the same endiannes avoids the cost of serialization when writting the
|
||||
trace at runtime.
|
||||
the machine where they are generated. So a stream generated with a little
|
||||
endian machine would be different than on a big endian machine. We
|
||||
assume the same endiannes is used to write the trace at runtime and read
|
||||
it after, at the emulation process.
|
||||
|
||||
The events are designed to be easily identified when looking at the
|
||||
raw trace in binary, as the MCV codes can be read as ASCII characters:
|
||||
raw stream in binary, as the MCV codes can be read as ASCII characters:
|
||||
|
||||
```
|
||||
00000000 0f 4f 48 78 58 c1 b0 b5 95 43 11 00 00 00 00 00 |.OHxX....C......|
|
||||
00000010 ff ff ff ff 00 00 00 00 00 00 00 00 00 36 53 72 |.............6Sr|
|
||||
00000020 ab cb b0 b5 95 43 11 00 00 36 53 73 78 c3 b9 b5 |.....C...6Ssx...|
|
||||
00000030 95 43 11 00 00 36 53 40 87 a4 c2 b5 95 43 11 00 |.C...6S@.....C..|
|
||||
00000040 00 36 53 68 9c 4b cb b5 95 43 11 00 00 36 53 66 |.6Sh.K...C...6Sf|
|
||||
00000050 85 44 d4 b5 95 43 11 00 00 36 53 5b cb e7 dc b5 |.D...C...6S[....|
|
||||
00000060 95 43 11 00 00 36 53 5d cf ca e5 b5 95 43 11 00 |.C...6S].....C..|
|
||||
00000070 00 36 53 75 8c db ee b5 95 43 11 00 00 36 53 55 |.6Su.....C...6SU|
|
||||
00000080 5a 70 f8 b5 95 43 11 00 00 36 55 5b 1b ae 01 b6 |Zp...C...6U[....|
|
||||
00000090 95 43 11 00 00 36 55 5d aa 19 0b b6 95 43 11 00 |.C...6U].....C..|
|
||||
00000000 6f 76 6e 69 01 00 00 00 0f 4f 48 78 08 ba 2e 5c |ovni.....OHx...\|
|
||||
00000010 b5 b0 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 |................|
|
||||
00000020 00 00 00 00 13 56 59 63 3c c2 2e 5c b5 b0 00 00 |.....VYc<..\....|
|
||||
00000030 0e 00 00 00 01 00 00 00 74 65 73 74 74 79 70 65 |........testtype|
|
||||
00000040 31 00 07 56 54 63 43 cc 2e 5c b5 b0 00 00 01 00 |1..VTcC..\......|
|
||||
00000050 00 00 01 00 00 00 03 56 54 78 03 cd 2e 5c b5 b0 |.......VTx...\..|
|
||||
00000060 00 00 01 00 00 00 03 56 54 70 2b 7d 37 5c b5 b0 |.......VTp+}7\..|
|
||||
00000070 00 00 01 00 00 00 03 56 54 72 c3 4d 40 5c b5 b0 |.......VTr.M@\..|
|
||||
00000080 00 00 01 00 00 00 03 56 54 65 03 36 49 5c b5 b0 |.......VTe.6I\..|
|
||||
00000090 00 00 01 00 00 00 00 4f 48 65 f5 36 49 5c b5 b0 |.......OHe.6I\..|
|
||||
000000a0 00 00 |..|
|
||||
```
|
||||
|
||||
This allows a human to detect signs of corruption by just visually
|
||||
inspecting the trace.
|
||||
This allows a human to detect signs of corruption by visually inspecting
|
||||
the streams.
|
||||
|
||||
## Limitations
|
||||
|
||||
The traces are designed to be read only forward, as they only contain
|
||||
The streams are designed to be read only forward, as they only contain
|
||||
the size of each event in the header.
|
||||
|
||||
Currently, we only support using the threads as sources of events, using
|
||||
one stream per thread. However, adding support for more streams from
|
||||
multiple sources is planned for the future.
|
||||
|
Loading…
Reference in New Issue
Block a user