You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@crail.apache.org by at...@apache.org on 2018/01/21 10:20:43 UTC
[25/53] [partial] incubator-crail-website git commit: Moving all
website source into a site directory
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/img/blog/sort/net_vanilla.svg
----------------------------------------------------------------------
diff --git a/img/blog/sort/net_vanilla.svg b/img/blog/sort/net_vanilla.svg
deleted file mode 100644
index cc9583c..0000000
--- a/img/blog/sort/net_vanilla.svg
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg
- width="600" height="200"
- viewBox="0 0 600 200"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
->
-
-<title>Gnuplot</title>
-<desc>Produced by GNUPLOT 4.6 patchlevel 4 </desc>
-
-<g id="gnuplot_canvas">
-
-<rect x="0" y="0" width="600" height="200" fill="none"/>
-<defs>
-
- <circle id='gpDot' r='0.5' stroke-width='0.5'/>
- <path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
- <path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
- <path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
- <rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
- <rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
- <circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>
- <use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
- <path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
- <use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
- <use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
- <use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
- <use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
- <use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
-</defs>
-<g style="fill:none; color:white; stroke:black; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
-</g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
-</g>
-<g style="fill:none; color:gray; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='gray' stroke-dasharray=' 2,4' class="gridline" d='M71.9,142.4 L575.0,142.4 h0.01'/></g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M71.9,142.4 L80.9,142.4 h0.01'/> <g transform="translate(63.6,146.9)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:end">
- <text> 0</text>
- </g>
-</g>
-<g style="fill:none; color:gray; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='gray' stroke-dasharray=' 2,4' class="gridline" d='M71.9,117.3 L575.0,117.3 h0.01'/></g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M71.9,117.3 L80.9,117.3 h0.01'/> <g transform="translate(63.6,121.8)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:end">
- <text> 20</text>
- </g>
-</g>
-<g style="fill:none; color:gray; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='gray' stroke-dasharray=' 2,4' class="gridline" d='M71.9,92.1 L575.0,92.1 h0.01'/></g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M71.9,92.1 L80.9,92.1 h0.01'/> <g transform="translate(63.6,96.6)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:end">
- <text> 40</text>
- </g>
-</g>
-<g style="fill:none; color:gray; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='gray' stroke-dasharray=' 2,4' class="gridline" d='M71.9,67.0 L575.0,67.0 h0.01'/></g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M71.9,67.0 L80.9,67.0 h0.01'/> <g transform="translate(63.6,71.5)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:end">
- <text> 60</text>
- </g>
-</g>
-<g style="fill:none; color:gray; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='gray' stroke-dasharray=' 2,4' class="gridline" d='M71.9,41.8 L575.0,41.8 h0.01'/></g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M71.9,41.8 L80.9,41.8 h0.01'/> <g transform="translate(63.6,46.3)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:end">
- <text> 80</text>
- </g>
-</g>
-<g style="fill:none; color:gray; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='gray' stroke-dasharray=' 2,4' class="gridline" d='M71.9,16.7 L575.0,16.7 h0.01'/></g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M71.9,16.7 L80.9,16.7 h0.01'/> <g transform="translate(63.6,21.2)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:end">
- <text> 100</text>
- </g>
-</g>
-<g style="fill:none; color:gray; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='gray' stroke-dasharray=' 2,4' class="gridline" d='M71.9,142.4 L71.9,16.7 h0.01'/></g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M71.9,142.4 L71.9,133.4 h0.01'/> <g transform="translate(71.9,164.9)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:middle">
- <text> 0</text>
- </g>
-</g>
-<g style="fill:none; color:gray; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='gray' stroke-dasharray=' 2,4' class="gridline" d='M163.4,142.4 L163.4,16.7 h0.01'/></g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M163.4,142.4 L163.4,133.4 h0.01'/> <g transform="translate(163.4,164.9)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:middle">
- <text> 100</text>
- </g>
-</g>
-<g style="fill:none; color:gray; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='gray' stroke-dasharray=' 2,4' class="gridline" d='M254.8,142.4 L254.8,16.7 h0.01'/></g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M254.8,142.4 L254.8,133.4 h0.01'/> <g transform="translate(254.8,164.9)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:middle">
- <text> 200</text>
- </g>
-</g>
-<g style="fill:none; color:gray; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='gray' stroke-dasharray=' 2,4' class="gridline" d='M346.3,142.4 L346.3,16.7 h0.01'/></g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M346.3,142.4 L346.3,133.4 h0.01'/> <g transform="translate(346.3,164.9)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:middle">
- <text> 300</text>
- </g>
-</g>
-<g style="fill:none; color:gray; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='gray' stroke-dasharray=' 2,4' class="gridline" d='M437.8,142.4 L437.8,16.7 h0.01'/></g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M437.8,142.4 L437.8,133.4 h0.01'/> <g transform="translate(437.8,164.9)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:middle">
- <text> 400</text>
- </g>
-</g>
-<g style="fill:none; color:gray; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='gray' stroke-dasharray=' 2,4' class="gridline" d='M529.3,142.4 L529.3,16.7 h0.01'/></g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M529.3,142.4 L529.3,133.4 h0.01'/> <g transform="translate(529.3,164.9)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:middle">
- <text> 500</text>
- </g>
- <path stroke='black' d='M71.9,16.7 L71.9,142.4 L575.0,142.4 L575.0,16.7 L71.9,16.7 Z h0.01'/> <g transform="translate(17.6,79.6) rotate(270)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:middle">
- <text>Throughput [Gbit/s]</text>
- </g>
- <g transform="translate(323.4,191.9)" style="stroke:none; fill:black; font-family:Verdana; font-size:12.00pt; text-anchor:middle">
- <text>Elapsed time (seconds)</text>
- </g>
-</g>
- <g id="gnuplot_plot_1" ><title>gnuplot_plot_1</title>
-<g style="fill:none; color:white; stroke:black; stroke-width:4.00; stroke-linecap:butt; stroke-linejoin:miter">
-</g>
-<g style="fill:none; color:red; stroke:currentColor; stroke-width:4.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='rgb(228, 26, 28)' d='M72.8,142.4 L73.7,142.4 L74.6,142.4 L75.6,142.4 L76.5,142.4 L77.4,142.4 L78.3,142.4 L79.2,142.4
- L80.1,142.4 L81.0,142.4 L82.0,142.4 L82.9,142.4 L83.8,142.4 L84.7,142.4 L85.6,142.4 L86.5,142.4
- L87.5,142.4 L88.4,142.4 L89.3,142.4 L90.2,142.4 L91.1,142.4 L92.0,142.4 L92.9,142.4 L93.9,142.4
- L94.8,142.4 L95.7,142.4 L96.6,142.4 L97.5,142.4 L98.4,142.4 L99.3,142.4 L100.3,142.4 L101.2,142.4
- L102.1,142.4 L103.0,142.4 L103.9,142.4 L104.8,142.4 L105.7,142.4 L106.7,142.4 L107.6,142.4 L108.5,142.4
- L109.4,142.4 L110.3,142.4 L111.2,142.4 L112.1,142.4 L113.1,142.4 L114.0,142.4 L114.9,142.4 L115.8,142.4
- L116.7,142.4 L117.6,142.4 L118.6,142.4 L119.5,142.4 L120.4,142.4 L121.3,142.4 L122.2,142.4 L123.1,142.4
- L124.0,142.4 L125.0,142.4 L125.9,142.4 L126.8,142.4 L127.7,142.4 L128.6,142.4 L129.5,142.4 L130.4,142.4
- L131.4,142.4 L132.3,142.4 L133.2,142.4 L134.1,142.4 L135.0,142.4 L135.9,142.4 L136.8,142.4 L137.8,142.4
- L138.7,142.4 L139.6,142.4 L140.5,142.4 L141.4,142.4 L142.3,142.4 L143.2,142.4 L144.2,142.4 L145.1,142.4
- L146.0,142.4 L146.9,142.4 L147.8,142.4 L148.7,142.4 L149.7,142.4 L150.6,142.4 L151.5,142.4 L152.4,142.4
- L153.3,142.4 L154.2,142.4 L155.1,142.4 L156.1,142.4 L157.0,142.4 L157.9,142.4 L158.8,142.4 L159.7,142.4
- L160.6,142.4 L161.5,142.4 L162.5,142.4 L163.4,142.4 L164.3,142.4 L165.2,142.4 L166.1,142.4 L167.0,142.4
- L167.9,142.4 L168.9,142.4 L169.8,142.4 L170.7,142.4 L171.6,142.4 L172.5,142.4 L173.4,142.4 L174.3,142.4
- L175.3,142.4 L176.2,142.4 L177.1,142.4 L178.0,142.4 L178.9,142.4 L179.8,142.4 L180.8,142.4 L181.7,142.4
- L182.6,142.4 L183.5,142.4 L184.4,142.4 L185.3,142.4 L186.2,142.4 L187.2,142.4 L188.1,142.4 L189.0,142.4
- L189.9,142.4 L190.8,142.4 L191.7,142.4 L192.6,142.4 L193.6,142.4 L194.5,142.4 L195.4,142.4 L196.3,142.4
- L197.2,142.4 L198.1,142.4 L199.0,142.4 L200.0,142.4 L200.9,142.4 L201.8,142.0 L202.7,139.5 L203.6,137.0
- L204.5,136.1 L205.5,141.5 L206.4,142.4 L207.3,137.7 L208.2,134.9 L209.1,140.8 L210.0,140.2 L210.9,141.1
- L211.9,141.7 L212.8,141.7 L213.7,142.2 L214.6,142.4 L215.5,142.4 L216.4,139.0 L217.3,140.2 L218.3,142.3
- L219.2,142.2 L220.1,141.8 L221.0,142.2 L221.9,142.3 L222.8,142.4 L223.7,142.2 L224.7,141.9 L225.6,140.8
- L226.5,139.2 L227.4,138.9 L228.3,139.9 L229.2,140.3 L230.1,135.5 L231.1,137.8 L232.0,140.7 L232.9,141.2
- L233.8,141.2 L234.7,141.6 L235.6,141.5 L236.6,138.9 L237.5,139.2 L238.4,141.1 L239.3,142.1 L240.2,141.4
- L241.1,142.1 L242.0,142.1 L243.0,141.9 L243.9,142.0 L244.8,141.6 L245.7,141.7 L246.6,141.6 L247.5,141.2
- L248.4,141.5 L249.4,140.1 L250.3,139.7 L251.2,140.8 L252.1,138.2 L253.0,138.6 L253.9,137.7 L254.8,137.1
- L255.8,138.0 L256.7,139.1 L257.6,140.8 L258.5,141.6 L259.4,141.7 L260.3,141.8 L261.2,142.0 L262.2,142.1
- L263.1,141.6 L264.0,141.1 L264.9,141.2 L265.8,141.2 L266.7,141.6 L267.7,139.4 L268.6,139.3 L269.5,140.6
- L270.4,139.5 L271.3,140.0 L272.2,140.7 L273.1,140.2 L274.1,137.5 L275.0,136.1 L275.9,139.7 L276.8,140.4
- L277.7,141.4 L278.6,140.7 L279.5,140.9 L280.5,141.1 L281.4,141.3 L282.3,141.1 L283.2,140.9 L284.1,140.6
- L285.0,139.9 L285.9,141.2 L286.9,138.0 L287.8,137.6 L288.7,139.3 L289.6,137.7 L290.5,139.7 L291.4,138.7
- L292.3,140.0 L293.3,140.5 L294.2,140.5 L295.1,140.8 L296.0,141.4 L296.9,140.7 L297.8,141.3 L298.8,141.3
- L299.7,141.2 L300.6,141.1 L301.5,141.4 L302.4,139.8 L303.3,136.9 L304.2,136.1 L305.2,139.3 L306.1,141.4
- L307.0,134.9 L307.9,139.0 L308.8,140.2 L309.7,140.7 L310.6,140.6 L311.6,140.5 L312.5,139.6 L313.4,141.8
- L314.3,139.9 L315.2,134.2 L316.1,135.5 L317.0,137.9 L318.0,141.1 L318.9,137.0 L319.8,140.1 L320.7,139.1
- L321.6,140.0 L322.5,139.9 L323.5,139.4 L324.4,140.1 L325.3,140.0 L326.2,137.1 L327.1,137.7 L328.0,139.4
- L328.9,137.3 L329.9,138.9 L330.8,138.3 L331.7,139.1 L332.6,140.7 L333.5,141.9 L334.4,142.0 L335.3,141.8
- L336.3,141.5 L337.2,139.5 L338.1,140.4 L339.0,140.3 L339.9,140.2 L340.8,139.2 L341.7,136.9 L342.7,135.3
- L343.6,139.1 L344.5,141.2 L345.4,135.8 L346.3,137.9 L347.2,139.4 L348.1,141.1 L349.1,140.6 L350.0,140.3
- L350.9,139.6 L351.8,141.0 L352.7,141.9 L353.6,142.4 L354.6,142.1 L355.5,140.2 L356.4,139.9 L357.3,137.9
- L358.2,137.8 L359.1,138.3 L360.0,139.6 L361.0,138.9 L361.9,136.7 L362.8,139.0 L363.7,141.2 L364.6,141.3
- L365.5,140.7 L366.4,139.1 L367.4,139.3 L368.3,141.8 L369.2,139.9 L370.1,140.0 L371.0,138.4 L371.9,139.2
- L372.8,139.6 L373.8,136.8 L374.7,139.1 L375.6,140.7 L376.5,137.0 L377.4,136.6 L378.3,140.3 L379.2,140.6
- L380.2,141.8 L381.1,141.3 L382.0,139.4 L382.9,138.7 L383.8,140.2 L384.7,141.0 L385.7,141.0 L386.6,141.1
- L387.5,139.6 L388.4,139.1 L389.3,138.3 L390.2,140.5 L391.1,135.7 L392.1,136.3 L393.0,134.8 L393.9,139.0
- L394.8,141.4 L395.7,139.1 L396.6,141.7 L397.5,142.2 L398.5,142.3 L399.4,141.8 L400.3,141.5 L401.2,141.3
- L402.1,140.0 L403.0,139.9 L403.9,140.0 L404.9,138.9 L405.8,138.0 L406.7,138.6 L407.6,137.1 L408.5,134.4
- L409.4,137.5 L410.3,140.1 L411.3,140.9 L412.2,139.8 L413.1,140.6 L414.0,138.8 L414.9,140.2 L415.8,138.8
- L416.8,138.9 L417.7,137.0 L418.6,136.8 L419.5,137.8 L420.4,138.6 L421.3,140.0 L422.2,141.5 L423.2,142.1
- L424.1,141.3 L425.0,140.0 L425.9,139.9 L426.8,141.5 L427.7,140.6 L428.6,140.4 L429.6,140.9 L430.5,140.2
- L431.4,140.0 L432.3,138.4 L433.2,135.8 L434.1,137.9 L435.0,137.6 L436.0,138.5 L436.9,138.9 L437.8,137.6
- L438.7,139.5 L439.6,140.0 L440.5,140.1 L441.4,140.0 L442.4,140.7 L443.3,141.6 L444.2,135.0 L445.1,136.1
- L446.0,136.8 L446.9,138.9 L447.9,137.8 L448.8,140.0 L449.7,139.6 L450.6,138.3 L451.5,139.9 L452.4,139.8
- L453.3,139.2 L454.3,139.1 L455.2,139.6 L456.1,137.7 L457.0,138.7 L457.9,135.8 L458.8,139.3 L459.7,139.2
- L460.7,138.5 L461.6,138.5 L462.5,139.0 L463.4,139.7 L464.3,140.8 L465.2,141.3 L466.1,140.8 L467.1,140.2
- L468.0,138.5 L468.9,137.9 L469.8,136.5 L470.7,135.3 L471.6,138.2 L472.6,139.3 L473.5,139.5 L474.4,140.6
- L475.3,140.9 L476.2,141.1 L477.1,140.0 L478.0,136.8 L479.0,140.6 L479.9,142.1 L480.8,142.0 L481.7,140.7
- L482.6,139.4 L483.5,137.8 L484.4,138.7 L485.4,140.5 L486.3,136.8 L487.2,135.7 L488.1,135.7 L489.0,138.5
- L489.9,138.9 L490.8,141.1 L491.8,140.6 L492.7,140.8 L493.6,138.6 L494.5,138.5 L495.4,139.4 L496.3,140.1
- L497.2,139.4 L498.2,140.1 L499.1,139.6 L500.0,138.0 L500.9,138.4 L501.8,139.3 L502.7,137.1 L503.7,137.4
- L504.6,137.5 L505.5,140.6 L506.4,141.6 L507.3,142.2 L508.2,141.2 L509.1,139.1 L510.1,137.2 L511.0,139.4
- L511.9,141.8 L512.8,137.3 L513.7,139.8 L514.6,137.7 L515.5,137.3 L516.5,137.2 L517.4,137.6 L518.3,140.9
- L519.2,141.3 L520.1,141.7 L521.0,142.0 L521.9,141.2 L522.9,139.9 L523.8,139.0 L524.7,139.0 L525.6,138.2
- L526.5,135.2 L527.4,138.0 L528.3,138.5 L529.3,134.6 L530.2,140.0 L531.1,141.2 L532.0,140.8 L532.9,141.4
- L533.8,142.2 L534.8,142.3 L535.7,142.4 L536.6,141.4 L537.5,140.2 L538.4,138.6 L539.3,136.9 L540.2,137.9
- L541.2,137.9 L542.1,137.1 L543.0,137.7 L543.9,134.5 L544.8,141.1 L545.7,140.7 L546.6,141.0 L547.6,139.7
- L548.5,139.1 L549.4,139.1 L550.3,140.0 L551.2,139.1 L552.1,141.5 L553.0,142.2 L554.0,141.9 L554.9,140.6
- L555.8,138.8 L556.7,138.4 L557.6,138.7 L558.5,139.0 L559.4,140.4 L560.4,142.2 L561.3,142.2 L562.2,139.9
- L563.1,139.3 L564.0,142.4 L564.9,142.4 L565.9,142.4 L566.8,142.4 L567.7,142.4 L568.6,142.4 L569.5,142.4
- L570.4,142.4 L571.3,142.4 L572.3,142.4 L573.2,142.4 L574.1,142.4 L575.0,142.4 h0.01'/></g>
- </g>
-<g style="fill:none; color:white; stroke:rgb(228, 26, 28); stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
-</g>
-<g style="fill:none; color:black; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter">
- <path stroke='black' d='M71.9,16.7 L71.9,142.4 L575.0,142.4 L575.0,16.7 L71.9,16.7 Z h0.01'/></g>
-</g>
-</svg>
-
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/img/blog/sort/performance_overall.png
----------------------------------------------------------------------
diff --git a/img/blog/sort/performance_overall.png b/img/blog/sort/performance_overall.png
deleted file mode 100644
index 8de369e..0000000
Binary files a/img/blog/sort/performance_overall.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/img/blog/sort/shuffle_rdma.png
----------------------------------------------------------------------
diff --git a/img/blog/sort/shuffle_rdma.png b/img/blog/sort/shuffle_rdma.png
deleted file mode 100644
index 9d3d020..0000000
Binary files a/img/blog/sort/shuffle_rdma.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/img/blog/sort/terasort_pipeline.png
----------------------------------------------------------------------
diff --git a/img/blog/sort/terasort_pipeline.png b/img/blog/sort/terasort_pipeline.png
deleted file mode 100644
index f5a11c8..0000000
Binary files a/img/blog/sort/terasort_pipeline.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/img/crail_logo.png
----------------------------------------------------------------------
diff --git a/img/crail_logo.png b/img/crail_logo.png
deleted file mode 100644
index 1ca0ce5..0000000
Binary files a/img/crail_logo.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/img/crail_stack.png
----------------------------------------------------------------------
diff --git a/img/crail_stack.png b/img/crail_stack.png
deleted file mode 100644
index 9708e4b..0000000
Binary files a/img/crail_stack.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/img/crail_stack2.png
----------------------------------------------------------------------
diff --git a/img/crail_stack2.png b/img/crail_stack2.png
deleted file mode 100644
index f2b8315..0000000
Binary files a/img/crail_stack2.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
deleted file mode 100644
index 010ffd5..0000000
--- a/index.html
+++ /dev/null
@@ -1,55 +0,0 @@
----
-layout: default
-title: Overview
-notitle: true
----
-<div class="jumbotron">
-<h4>Apache Crail (Incubating) is an open source user-level I/O architecture for the Apache data processing ecosystem designed from ground up for high-performance storage and networking hardware</h4>
-</div>
-
-<br>
-<div>
-<center>
-<img src="{{ site.base }}/img/crail_stack2.png" align="middle" style="width: 340px; text-align:center;">
-</center>
-</div>
-<br>
-
-<div class="row">
-<div class="col-lg-4">
-<h2>Open</h2>
-<p align="justify">Crail is open source and integrates seamlessly with the Apache ecosystem, such as Spark, Flink, Parquet, etc. Crail is based on Crail Store -- a high-performance distributed data store for temporary data -- and a series of modules interfacing with the compute engine. Crail modules provide standard interfaces (e.g. HDFS) and can be loaded transparently at runtime (e.g., Spark shuffle).</p>
-<p><a class="btn btn-default" href="overview/index.html#spark">Learn more »</a></p>
-</div>
-<div class="col-lg-4">
-<h2>Fast</h2>
-<p align="justify">Crail is built explictly for user-level I/O (RDMA, NVMef, etc.), allowing storage and networking hardware to directly access I/O memory within the data processing engine. Bypassing OS and JVM during data access enables delivering bare-metal I/O performance to analytics workloads. For example, Crail achieves data access at rates close to the 100Gb/s network limit with latencies below 10 us.</p>
-<p><a class="btn btn-default" href="overview/index.html#overview">Learn more »</a></p>
-</div>
-<div class="col-lg-4">
-<h2>Heterogeneous</h2>
-<p align="justify">Crail orchestrates I/O operations across different storage tiers including DRAM, flash or GPU memory. Aside from providing fine grained control as to which storage tier is used when storing data, Crail also supports horizontal tiering where higher performing storage resources are filled up across the cluster prior to using lower performing tiers -- making effective use of the storage hardware.</p>
-<p><a class="btn btn-default" href="overview/index.html#fs">Learn more »</a></p>
-</div>
-</div>
-
-<h2>News</h2>
-<ul class="news list-unstyled">
-{% for post in site.categories.news limit: site.front_page_news %}
- {% if post.shortnews %}
- <li class="shortnews">
- <span class="date">{{ post.date | date: "%B %-d, %Y" }}</span>
- {{ post.content }}
- </li>
- {% else %}
- <li class="bloglink">
- <span class="date">{{ post.date | date: "%B %-d, %Y" }}</span>
- <a href="{{ post.url }}">» {{ post.title }}</a>
- </li>
- {% endif %}
-{% endfor %}
-</ul>
-{% assign numposts = site.categories.news | size %}
-{% if numposts >= site.front_page_news %}
-<p><a href="{{ site.base }}/news/">Older posts…</a></p>
-{% endif %}
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/js/srcset-polyfill.js
----------------------------------------------------------------------
diff --git a/js/srcset-polyfill.js b/js/srcset-polyfill.js
deleted file mode 100644
index 9c8d2bc..0000000
--- a/js/srcset-polyfill.js
+++ /dev/null
@@ -1,52 +0,0 @@
-(function(window, document) {
- // Test if it already supports srcset
- if ('srcset' in document.createElement('img'))
- return true;
-
- // We want to get the device pixel ratio
- var maxWidth = (window.innerWidth > 0) ? window.innerWidth : screen.width,
- maxHeight = (window.innerHeight > 0) ? window.innerHeight : screen.height,
- maxDensity = window.devicePixelRatio || 1;
-
- // Implement srcset
- function srcset(image) {
- if (!image.attributes['srcset']) return false;
-
- var candidates = image.attributes['srcset'].nodeValue.split(',');
-
- for (var i = 0; i < candidates.length; i++) {
- // The following regular expression was created based on the rules
- // in the srcset W3C specification available at:
- // http://www.w3.org/html/wg/drafts/srcset/w3c-srcset/
-
- var descriptors = candidates[i].match(
- /^\s*([^\s]+)\s*(\s(\d+)w)?\s*(\s(\d+)h)?\s*(\s(\d+)x)?\s*$/
- ),
- filename = descriptors[1],
- width = descriptors[3] || false,
- height = descriptors[5] || false,
- density = descriptors[7] || 1;
-
- if (width && width > maxWidth) {
- continue;
- }
-
- if (height && height > maxHeight) {
- continue;
- }
-
- if (density && density > maxDensity) {
- continue;
- }
-
- image.src = filename;
- }
- }
-
-
- var images = document.getElementsByTagName('img');
-
- for (var i=0; i < images.length; i++) {
- srcset(images[i]);
- }
-})(window, document);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/news/index.html
----------------------------------------------------------------------
diff --git a/news/index.html b/news/index.html
deleted file mode 100644
index 7cecc84..0000000
--- a/news/index.html
+++ /dev/null
@@ -1,22 +0,0 @@
----
-layout: default
-title: "News"
-description: "showtags"
-tags: [] #list of tags that you want to show in description of blog
----
-
-<ul class="news list-unstyled">
-{% for post in site.categories.news %}
- {% if post.shortnews %}
- <li class="shortnews">
- <span class="date">{{ post.date | date: "%B %-d, %Y" }}</span>
- {{ post.content }}
- </li>
- {% else %}
- <li class="bloglink">
- <span class="date">{{ post.date | date: "%B %-d, %Y" }}</span>
- <a href="{{ post.url }}">» {{ post.title }}</a>
- </li>
- {% endif %}
-{% endfor %}
-</ul>
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/overview/architecture.png
----------------------------------------------------------------------
diff --git a/overview/architecture.png b/overview/architecture.png
deleted file mode 100644
index 2f11f95..0000000
Binary files a/overview/architecture.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/overview/filesystem.png
----------------------------------------------------------------------
diff --git a/overview/filesystem.png b/overview/filesystem.png
deleted file mode 100644
index 4b29413..0000000
Binary files a/overview/filesystem.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/overview/filesystem2.png
----------------------------------------------------------------------
diff --git a/overview/filesystem2.png b/overview/filesystem2.png
deleted file mode 100644
index 974e75a..0000000
Binary files a/overview/filesystem2.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/overview/index.md
----------------------------------------------------------------------
diff --git a/overview/index.md b/overview/index.md
deleted file mode 100644
index 085d5df..0000000
--- a/overview/index.md
+++ /dev/null
@@ -1,164 +0,0 @@
----
-layout: default
-title: I/O Challenges
----
-
-<div style="text-align: justify">
-<p>
-Modern storage and network technologies such as 100Gb/s Ethernet, RDMA, NVMe flash, etc., present new opportunities for data processing systems to further reduce the response times of analytics queries on large data sets. Unfortunately, leveraging modern hardware in systems like Spark, Flink or Hadoop remains challenging, for multiple reasons:
-</p>
-</div>
-
-* Performance: today's data processing stacks employ many software layers, which is key to making the stacks modular and flexible to use. But the software layers also impose overheads during I/O operations that prevent applications from enjoying the full potential of the high-performance hardware. To eliminate these overheads, I/O operations must interact with the hardware directly from within the application context using principles like RDMA, DPDK or SPDK.
-
-* New opportunities: the improved performance of modern networking and storage hardware opens the door to rethinking the interplay of I/O and compute in a distributed data processing system. For instance, low latency remote data access enables schedulers to relax on data locality and in turn make better use of compute resources. At one extreme, storage resources can be completely disaggregated which is more cost effective and simplifies maintenance.
-
-* Heterogeneity: with modern hardware, I/O operations are becoming more complex. Not only are there more options to store data (disk, flash, DRAM, disaggregated storage, etc.) but also it is getting increasingly important to use storage resources efficiently. For instance, some newer technologies such as phase change memory (PCM) permit data access at byte granularity. Mediating storage access through a block device interface is a bad fit in such a case. Moreover, with accelerators like GPUs or FPGAs extending the traditional compute layer, new distributed interfaces to accelerator-local memories are needed.
-
-In the <a href="{{ site.base }}/blog">Blog</a> section we discuss each of those challenges in more detail.
-
-## Crail Architecture
-
-<div style="text-align: justify">
-<p>
-Crail aims at providing a comprehensive solution to the above challenges in a form that is non-intrusive and compatible with the Apache data processing ecosystem. In particular, Crail is designed to be consumeable by different compute engines such as Spark, Flink, Solr, etc., with very little integration effort.
-</p>
-</div>
-
-<h3 id="overview">Overview</h3>
-
-<div style="text-align: justify">
-<p>
-The backbone of the Crail I/O architecture is Crail Store, a high-performance multi-tiered data store for temporary data in analytics workloads. If the context permits we often refer to Crail Store simply as Crail. Data processing frameworks and applications may directly interact with Crail for fast storage of in-flight data, but more commonly the interaction takes place through one of the Crail modules. As an example, the CrailHDFS adapter provides a standard HDFS interface allowing applications to use Crail Store the same way they use regular HDFS. Applications may want to use CrailHDFS for short-lived performance critical data, and regular HDFS for long-term data storage. CrailSparkIO is a Spark specific module which implements various I/O intensive Spark operations such as shuffle, broadcast, etc. Both CrailHDFS and CrailSparkIO can be used transparently with no need to recompile either the application or the data processing framework.
-</p>
-</div>
-<br>
-<img src="architecture.png" width="500" align="middle">
-<br><br>
-<div style="text-align: justify">
-<p>
-Crail modules are thin layers on top of Crail Store. Implementing new modules for a particular data processing framework or a specific I/O operation requires only a moderate amount of work. At the same time, modules inherit the full benefits of Crail in terms of user-level I/O, performance and storage tiering. For instance, in the blog section we show that the Crail-based shuffle engine for Spark permits all-to-all data shuffling very close to the speed of the 100Gb/s network fabric.
-</p>
-</div>
-
-<h3 id="fs">Crail Store</h3>
-
-<div style="text-align: justify">
-<p>
-Crail Store implements a hierarchical namespace across a cluster of RDMA interconnected storage resources such as DRAM or flash. Storage resources may be co-located with the compute nodes of the cluster, or disagreggated inside the data center, or a mix of both. Nodes in the Crail namespace consist of arrays of blocks distributed across storage resources in the cluster. Crail groups storage resources into different tiers (e.g, DRAM, flash, disk) and permits node segments (blocks) to be allocated in specific tiers but also across tiers. For instance, by default Crail uses horizontal tiering where higher performing storage resources are filled up across the cluster prior to using lower performing tiers -- resulting in a more effective usage of storage hardware.
-</p>
-<p>
-Crail currently supports five types of nodes to be stored in its namespace: regular data files, directories, multifiles, tables and keyvalue nodes. Regular data files are append-and-overwrite with only a single-writer permitted per file at a given time. Append-andoverwrite means that – aside from appending data to the file – overwriting existing content of a file is also permitted. Directories in Crail are just regular files containing fixed length directory records. The advantage
-is that directory enumeration becomes just a standard file read operation which makes enumeration fast and
-scalable with regard to the number of directory entries. Multifiles are files that can be written concurrently.
-Internally, a multifile very much resembles a flat directory. Multiple concurrent substreams on a multifile are
-backed with separate files inside the directory. Keyvalue nodes are similar to data files, except that keyvalue nodes can be updated with completely new values. Updating keyvalue nodes can happen concurrently by multiple clients in which case the last update prevails. Keyvalue nodes can only be attached to tables, which are similar to directory with the exception that tables cannot be nested.
-</p>
-</div>
-
-
-<div style="text-align:center"><img src ="{{ site.base }}/overview/filesystem2.png" width="550"></div>
-<br>
-
-<div style="text-align: justify">
-<p>
-Access to storage resources over the network -- as happening during file read/write operations -- are implemented using a variety of network and stoage APIs and protocols. Which API and protocol is uses to read/write a particular block depends to the type of storage that is accessed. For instance, accesses to blocks residing in the DRAM tier are implemented using one-sided read/write RDMA operations. Similarly, access to blocks residing in the NVMe tier of Crail are implemented using NVMe of fabrics (NVMf). In most of the cases, the network and storage devices are access directly from user-space via RDMA or other user-level APIs such as DPDK or SPDK. Crail is built in a way that new storage tiers can be added easily: storage tiers are actual plugins. With this, Crail can support new protocols and APIs and leverage upcomding storage and network technologies efficiently.
-</p>
-</div>
-<br>
-<img src="tiering.png" width="650" align="middle">
-<br><br>
-<div style="text-align: justify">
-<p>
-Crail's top level storage API offers asynchronous non-blocking functions for reading and writing data. Typically, the user-level APIs used by the storage tiers offer an asynchronous interface to the hardware which Crail directly leverages, thus, Crail is naturally asynchronous and does not need to engage any extra threads to provide asynchronism. The asynchronous API is particular important in the context of data processing, as it facilitates interleaving of computation and I/O in data processing workloads. Aside from the standard read/write operations, Crail provides extra semantics geared towards its use case. For instance, Crail exports functions to allocate dedicated I/O buffers from a reuseable pool -- memory that is registered with the hardware if needed to support zero-copy I/O. Moreover, Crail provides detailed control as to which storage tier and location preference should be used when allocating file system resources.
-</p>
-<p>
-Crail not only exports a Java API but also is written entirely in Java, which makes it easy to use and allows for a better integration with data processing frameworks like Spark, Flink, Hadoop, etc. A simple example of a Crail write operation is shown below:
-</p>
-</div>
- CrailConfiguration conf = new CrailConfiguration();
- CrailFS fs = CrailFS.newInstance(conf);
- CrailFile file = fs.createFile(filename, 0, 0).get().syncDir();
- CrailOutputStream outstream = file.getDirectOutputStream();
- ByteBuffer dataBuf = fs.allocateBuffer();
- Future<DataResult> future = outputStream.write(dataBuf);
- ...
- future.get();
-<div style="text-align: justify">
-<p>
-
-Crail uses <a href="https://github.com/zrlio/disni">DiSNI</a>, a user-level network and storage stack for the Java virtual machine. DiSNI allows data to be exchanged in a zero-copy fashion between Java I/O memory and remote storage resources over RDMA.
-</p>
-</div>
-
-<h3>Crail HDFS Adapter</h3>
-
-The Crail HDFS adaptor enables users to access Crail using the standard HDFS API. For instance, administrators can interact with Crail using the standard HDFS shell:
-
- ./bin/crail fs -mkdir /test
- ./bin/crail fs -ls /
- ./bin/crail fs -copyFromLocal <path-to-local-file>
- ./bin/crail fs -cat /test/<file-name>
-
-Moreover, regular HDFS-based applications will transparently work with Crail when using fully qualified path names (or when specifying Crail as the default Hadoop file system):
-
- Configuration conf = new Configuration();
- FileSystem fs = FileSystem.get(conf);
- fs.create("crail://test/hello.txt");
-
- <h3 id="spark">Crail Spark Module</h3>
-
-<div style="text-align: justify">
-<p>
-The Crail Spark module includes a Crail based shuffle engine as well as a broadcast service. The shuffle engine maps key ranges to directories in Crail. Each map task, while partitioning the data, appends key/value pairs to individual files in the corresponding directories. Tasks running on the same core within the cluster append to the same files, which reduces storage fragmentation.
-</p>
-</div>
-
-<br>
-<img src="shuffle.png" width="550" align="middle">
-<br><br>
-
-<div style="text-align: justify">
-<p>
-As is the case with the Crail HDFS adapter, the shuffle engine benefits from the performance and tiering advantages of the Crail data store. For instance, individual shuffle files are served using horizontal tiering. In most cases that means the files are filling up the memory tier as long as there is some DRAM available in the cluster, after which they extend to the flash tier. The shuffle engine further uses the Crail location affinity API to make sure local DRAM and flash is preferred over remote DRAM and flash respectively. Note that the shuffle engine is also completely zero-copy, as it transfers data directly from the I/O memory of the mappers to the I/O memory of the reducers.
-</p>
-</div>
-
-<div style="text-align: justify">
-<p>
-The Crail-based broadcast plugin for Spark stores broadcast variables in Crail files. In contrast to the shuffle engine, broadcast is implemented without location affinity, which makes sure the underlying blocks of the Crail files are distributed across the cluster, leading to a better load balancing when reading broadcast variables. Crail shuffle and broadcast components can be enabled in Spark by setting the following system properties in spark-defaults.conf:
-</p>
-</div>
-
- spark.shuffle.manager org.apache.spark.shuffle.crail.CrailShuffleManager
- spark.broadcast.factory org.apache.spark.broadcast.CrailBroadcastFactory
-
-<div style="text-align: justify">
-<p>
-Both broadcast and shuffle require Spark data objects to be serialized into byte streams (as is also the case for the default Spark broadcast and shuffle components). Even though both Crail components work fine with any of the Spark built-in serializers (e.g. Kryo), to achieve the best possible performance applications running on Crail are encouraged to provide serialization and deserialization methods for their data types explicitly. One reason for this is that the built-in Spark serializers assume byte streams of type java.io.(InputStream/OutputStream). These stream types are less powerful than Crail streams. For instance, streams of type InputStream/OutputStream expose a synchronous API and are restricted to on-heap memory. Crail streams, on the other hand, expose an asynchronous API and integrate well with off-heap memory to reduce data copies. By defining custom serialization/deserialization methods, applications can take full advantage of Crail streams during broadcast and shu
ffle operations. Moreover, serializers dedicated to one particular application type may further exploit information about the specific application data types to achieve a better performance. As we show in the blog, a custom serializer for a sorting application running on key/value objects of a fixed length byte array will not need to store serialization meta data, which reduces the final data size and simplifies the serialization process.
-</p>
-</div>
-
-<br>
-<img src="serializer.png" width="490" align="middle">
-<br><br>
-
-<div style="text-align: justify">
-<p>
-Serialization is one important aspect for broadcast and shuffle operations, sorting another, even though specific to shuffling. Sorting directly follows the network fetch phase in a shuffle operation if a key ordering is requested by the application. Again, the Crail shuffle engine works fine with the Spark built-in sorter, but often the shuffle performance can be improved by an application specific sorter. For instance, an application may use the Crail GPU tier to store data. In that case, sorting can be pushed to the GPU, rather than fetching the data into main memory and sorting it on the CPU. In other cases, the application may know the data types in advance and use the information to simplify sorting (e.g. use Radix sort instead TimSort).
-</p>
-<p>
-Application specific serializers and sorters can be defined by setting the following system properties in spark-defaults.conf:
-</p>
-</div>
-
- spark.crail.shuffle.serializer
- spark.crail.shuffle.sorter
-
-
-
-
-
-
-
-
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/overview/serializer.png
----------------------------------------------------------------------
diff --git a/overview/serializer.png b/overview/serializer.png
deleted file mode 100644
index db99abb..0000000
Binary files a/overview/serializer.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/overview/shuffle.png
----------------------------------------------------------------------
diff --git a/overview/shuffle.png b/overview/shuffle.png
deleted file mode 100644
index 761b964..0000000
Binary files a/overview/shuffle.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/overview/tiering.png
----------------------------------------------------------------------
diff --git a/overview/tiering.png b/overview/tiering.png
deleted file mode 100644
index b131f59..0000000
Binary files a/overview/tiering.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/.gitignore
----------------------------------------------------------------------
diff --git a/site/.gitignore b/site/.gitignore
new file mode 100644
index 0000000..fc87803
--- /dev/null
+++ b/site/.gitignore
@@ -0,0 +1,44 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Mac
+.DS_Store
+
+# Eclipse
+.classpath
+.project
+.settings/
+target/
+
+# Intellij
+.idea/
+.idea_modules/
+*.iml
+*.iws
+*.class
+*.log
+
+# generated site
+_site
+
+# Others
+*~
+.sass-cache
+.jekyll-metadata
+.checkstyle
+.fbExcludeFilterFile
+
+Gemfile.lock
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/404.md
----------------------------------------------------------------------
diff --git a/site/404.md b/site/404.md
new file mode 100644
index 0000000..cf5476f
--- /dev/null
+++ b/site/404.md
@@ -0,0 +1,11 @@
+---
+layout: default
+title: 404 Not Found
+---
+Sorry! The server can't find that page.
+
+Please consider trying to find what you need from <a href="{{ site.base }}/">the home page</a>.
+
+If you think something might be broken, please notify the developers at the <a href="mailto:dev@crail.incubator.apache.org">dev mailing list</a>.
+
+[home]: {{ site.base }}/
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/Gemfile
----------------------------------------------------------------------
diff --git a/site/Gemfile b/site/Gemfile
new file mode 100644
index 0000000..587c0ac
--- /dev/null
+++ b/site/Gemfile
@@ -0,0 +1,7 @@
+source 'https://rubygems.org'
+gem 'github-pages'
+gem 'rouge'
+gem 'jekyll-paginate'
+gem 'jekyll-feed'
+gem 'jekyll-gist'
+gem 'jekyll-oembed', :require => 'jekyll_oembed'
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/Makefile
----------------------------------------------------------------------
diff --git a/site/Makefile b/site/Makefile
new file mode 100644
index 0000000..8f41bab
--- /dev/null
+++ b/site/Makefile
@@ -0,0 +1,24 @@
+PYTHON=python2.7
+
+# targets that aren't filenames
+.PHONY: all clean deploy
+
+all: _site/index.html
+
+BUILDARGS :=
+_site/index.html _site/wacas14/index.html:
+ jekyll build $(BUILDARGS)
+
+#_includes/pubs.html: bib/pubs.bib bib/publications.tmpl
+# mkdir -p _includes
+# $(PYTHON) bibble/bibble.py $+ > $@
+
+_site/index.html: $(wildcard *.html) _config.yml _layouts/default.html
+
+clean:
+ $(RM) -r _site
+
+HOST := https://zrlio.github.io/crail-project
+PATHSVR := www/
+deploy: clean all
+ rsync --compress --recursive --checksum --itemize-changes --delete -e ssh _site/ $(HOST):$(PATHSVR)
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/README.md
----------------------------------------------------------------------
diff --git a/site/README.md b/site/README.md
new file mode 100644
index 0000000..3d35ca8
--- /dev/null
+++ b/site/README.md
@@ -0,0 +1,4 @@
+Crail Website
+================================
+
+This is the source for the Apache Crail (Incubating) website available at http://crail.incubator.apache.org/.
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_config.yml
----------------------------------------------------------------------
diff --git a/site/_config.yml b/site/_config.yml
new file mode 100644
index 0000000..abd2500
--- /dev/null
+++ b/site/_config.yml
@@ -0,0 +1,57 @@
+name: The Apache Crail (Incubating) Project
+url: https://animeshtrivedi.github.io/crail-website/
+
+exclude: [bibble, README.md, Makefile]
+
+# use this library to parse Markdown
+#markdown: kramdown
+#highlighter: rouge
+#exclude: ["less","node_modules","Gruntfile.js","package.json","README.md"]
+#port: 8888
+#permalink: /blog/:title
+#wpm: 150
+
+#redcarpet:
+# extensions: [smart, tables]
+
+# colorize code snippets with the pygments module
+highlighter: rouge
+
+# The path structure for blog posts.
+permalink: /blog/:year/:month/:title.html
+
+categories: [blog, news]
+
+# Number of news stories on the front page.
+front_page_news: 5
+
+# Base pathname for links.
+base: 'https://animeshtrivedi.github.io/crail-website'
+
+
+# gem dependencies
+plugins: [jekyll-paginate, jekyll-feed, jekyll-gist]
+
+# Navigation bar links.
+navigation:
+ - title: Home
+ link: /
+ - title: Overview
+ link: /overview/
+ - title: Blog
+ link: /blog/
+ - title: Community
+ link: /community/
+ - title: Documentation
+ link: /documentation/
+
+# jekyll-paginate
+paginate: 5
+paginate_path: blog/page:num
+
+# gem dependencies
+#gems: [jekyll-paginate, jekyll-feed, jekyll-gist]
+
+#plugins:
+# - regex_filter
+
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_data/table.txt
----------------------------------------------------------------------
diff --git a/site/_data/table.txt b/site/_data/table.txt
new file mode 100644
index 0000000..e19d451
--- /dev/null
+++ b/site/_data/table.txt
@@ -0,0 +1,17 @@
+
+| | Spark/Crail | Spark/Vanilla | Spark/Winner2014 | Tencent/Winner2016 |
+|--------------------|---------------|---------------|------------------------|--------------------------|
+| Data Size | 12.8 TB | 12.8 TB | 100 TB | 100 TB |
+| Elapsed Time | 98 s | 527 s | 1406 s | 98.8 s |
+| Cores | 2560 | 2560 | 6592 | 10240 |
+| Nodes | 128 | 128 | 206 | 512 |
+| Network | 100 Gbit/sec| 100 Gbit/s | 10 Gbit/s | 100 Gbit/s |
+| Sorting rate | 7.8 TB/min | 1.4 TB/min | 4.27 TB/min | 44.78 TB/min |
+| Sorting rate/core | 3.13 GB/min | 0.58 GB/min | 0.66 GB/min | 4.4 GB/min |
+
+The natural follow-up question from these results is about a further breakdown that shows what part of the gains come from the Crail I/O, serializer and sorter. Such a breakdown cannot easily be obtained as in the built-in Spark shuffler these different phases are executed interleaved.
+
+table, th, td {
+ border: 1px solid black;
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_graphix/owl.odp
----------------------------------------------------------------------
diff --git a/site/_graphix/owl.odp b/site/_graphix/owl.odp
new file mode 100644
index 0000000..b73d058
Binary files /dev/null and b/site/_graphix/owl.odp differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_graphix/website.odp
----------------------------------------------------------------------
diff --git a/site/_graphix/website.odp b/site/_graphix/website.odp
new file mode 100644
index 0000000..ee81ebd
Binary files /dev/null and b/site/_graphix/website.odp differ
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_layouts/default.html
----------------------------------------------------------------------
diff --git a/site/_layouts/default.html b/site/_layouts/default.html
new file mode 100644
index 0000000..4c99f7b
--- /dev/null
+++ b/site/_layouts/default.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>{{ site.name }}: {{ page.title }}</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link href="{{ site.base }}/css/bootstrap.min.css" rel="stylesheet">
+ <link href="{{ site.base }}/css/group.css" rel="stylesheet">
+ <link rel="alternate" type="application/atom+xml" title="Atom"
+ href="{{ site.base }}/blog/blog.xml">
+ {% assign path = page.url | split: '/' %}
+ <meta property="og:image" content="{{ site.base }}/img/blog/preview/{{ path | last | replace: '.html','' }}-summary.png" />
+ <meta property="og:image:secure_url" content="{{ site.base }}/img/blog/preview/{{ path | last | replace: '.html','' }}-summary.png" />
+ </head>
+
+ <body>
+ <div class="container">
+ <div class="header">
+ <ul class="nav nav-pills pull-right">
+ {% assign shorturl = page.url | replace:".html",'' %}
+ {% for item in site.navigation %}
+ {% assign itemurl = item.link |replace:".html" ,'' %}
+ <li {% if itemurl == shorturl %}class="active"{% endif %}>
+ <a href="{{ site.base }}{{ item.link }}">
+ {{ item.title }}
+ </a>
+ </li>
+ {% endfor %}
+ </ul>
+ <a href="{{ site.base }}/">
+ <img src="{{ site.base }}/img/crail_logo.png"
+ srcset="{{ site.base }}/img/crail_logo.png"
+ alt="Crail" id="logo">
+ </a>
+ </div>
+
+ {% comment %}Liquid is sort of terrible! I think "!= true" is the
+ only way to do negation?{% endcomment %}
+ {% if page.notitle != true %}
+ <h2>{{ page.title }}</h2>
+ {% endif %}
+
+ {{ content }}
+
+ <br>
+ <br>
+ <div class="footer">
+ <p>Apache Crail is an effort undergoing <a href="https://incubator.apache.org/">incubation</a> at <a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a>, sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
+ </p>
+ </div>
+
+ </div> <!-- /container -->
+
+ <!-- Support retina images. -->
+ <script type="text/javascript"
+ src="{{ site.base }}/js/srcset-polyfill.js"></script>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_layouts/page.html
----------------------------------------------------------------------
diff --git a/site/_layouts/page.html b/site/_layouts/page.html
new file mode 100644
index 0000000..ebdf98d
--- /dev/null
+++ b/site/_layouts/page.html
@@ -0,0 +1,37 @@
+---
+layout: default
+---
+
+<!-- Page Header -->
+<header class="intro-header" style="background-image: url('{{ site.baseurl }}/{% if page.header-img %}{{ page.header-img }}{% else %}{{ site.header-img }}{% endif %}')">
+ <div class="container">
+ <div class="row">
+ <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
+ <div class="site-heading">
+ <h1>{% if page.title %}{{ page.title }}{% else %}{{ site.blog_title }}{% endif %}</h1>
+ <hr class="small">
+ <span class="subheading">
+ {% if page.description == "showtags" %}
+ {% for tag in page.tags %}
+ <a href="/blog/tags/{{ tag }}" style="text-decoration: normal; font-weight: normal; color: #ffffff;"><i class="fa fa-tag"></i>{{ tag }}</a>
+ {% endfor %}
+ {% else %}
+ {{ page.description }}
+ {% endif %}
+ </span>
+ </div>
+ </div>
+ </div>
+ </div>
+</header>
+
+<!-- Main Content -->
+<div class="container">
+ <div class="row">
+ <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
+ {{ content }}
+ </div>
+ </div>
+</div>
+
+<hr>
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_layouts/post.html
----------------------------------------------------------------------
diff --git a/site/_layouts/post.html b/site/_layouts/post.html
new file mode 100644
index 0000000..8d9c93d
--- /dev/null
+++ b/site/_layouts/post.html
@@ -0,0 +1,33 @@
+---
+layout: default
+---
+<p class="meta">{{ page.date | date_to_string }}</p>
+
+<div class="post">
+{{ content }}
+</div>
+
+<!--
+{% if page.comments %}
+<div id="disqus_thread"></div>
+<script>
+
+/**
+* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
+* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/
+/*
+var disqus_config = function () {
+this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable
+this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
+};
+*/
+(function() { // DON'T EDIT BELOW THIS LINE
+var d = document, s = d.createElement('script');
+s.src = '//crail-io.disqus.com/embed.js';
+s.setAttribute('data-timestamp', +new Date());
+(d.head || d.body).appendChild(s);
+})();
+</script>
+<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
+{% endif %}
+-->
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_layouts/tag.html
----------------------------------------------------------------------
diff --git a/site/_layouts/tag.html b/site/_layouts/tag.html
new file mode 100644
index 0000000..35d2742
--- /dev/null
+++ b/site/_layouts/tag.html
@@ -0,0 +1,33 @@
+---
+layout: page
+---
+<h2>Posts marked with: {{ page.tag }}</h2>
+<hr>
+
+{% unless page.content == '' %}
+ <p>{{ page.content }}</p>
+{% endunless %}
+
+{% unless site.tags[page.tag] | size > 0 %}
+ <p>No posts found.</p>
+{% endunless %}
+
+{% for post in site.tags[page.tag] %}
+<div class="post-preview">
+ <a href="{{ post.url | prepend: site.baseurl }}">
+ <h3 class="post-subtitle">
+ {{ post.title }}
+ </h3>
+ </a>
+ <p class="post-meta">
+ Posted by
+ {% if post.author %}
+ {{ post.author }}
+ {% else %}
+ {{ site.title }}
+ {% endif %}
+ on {{ post.date | date: "%B %-d, %Y" }}
+ </p>
+</div>
+<hr>
+{% endfor %}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_layouts/wacas.html
----------------------------------------------------------------------
diff --git a/site/_layouts/wacas.html b/site/_layouts/wacas.html
new file mode 100644
index 0000000..dfffcf3
--- /dev/null
+++ b/site/_layouts/wacas.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>WACAS: {{ page.title }}</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link href="{{ site.base }}/css/bootstrap.min.css" rel="stylesheet">
+ <link href="{{ site.base }}/css/sampa.css" rel="stylesheet">
+ <link href="{{ site.base }}/css/print.css" rel="stylesheet"
+ media="print">
+ </head>
+ <body>
+ <div class="container">
+ <div class="header">
+ <ul class="nav nav-pills pull-right">
+ {% assign shorturl = page.url | replace:'index.html','' %}
+ {% for item in site.nav_wacas %}
+ <li {% if item.link == shorturl %}class="active"{% endif %}>
+ <a href="{{ site.base }}{{ item.link }}">
+ {{ item.title }}
+ </a>
+ </li>
+ {% endfor %}
+ </ul>
+ <a href="./"><img style="float: left; margin-right: 1em"
+ src="{{ site.base }}/img/wacas-small.jpg"
+ width="56" height="56" alt="logo" /></a>
+ <a href="./"><h1>WACAS 2014</h1></a>
+ </a>
+ </div>
+
+ {% comment %}Liquid is sort of terrible! I think "!= true" is the
+ only way to do negation?{% endcomment %}
+ {% if page.notitle != true %}
+ <h2>{{ page.title }}</h2>
+ {% endif %}
+
+ {{ content }}
+
+ </div> <!-- /container -->
+
+ <!-- Support retina images. -->
+ <script type="text/javascript"
+ src="{{ site.base }}/js/srcset-polyfill.js"></script>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_plots/blog/machine-learning/final.dat
----------------------------------------------------------------------
diff --git a/site/_plots/blog/machine-learning/final.dat b/site/_plots/blog/machine-learning/final.dat
new file mode 100644
index 0000000..689251a
--- /dev/null
+++ b/site/_plots/blog/machine-learning/final.dat
@@ -0,0 +1,2 @@
+s Vanilla-compute Vanilla-broadcast Vanilla-reduce Vanilla-total Crail-compute Crail-broadcast Crail-reduce Crail-total
+Runtime 0.471 0.387 1.185 2.488 0.461 0.083 0.680 1.409
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_plots/blog/machine-learning/final.gpt
----------------------------------------------------------------------
diff --git a/site/_plots/blog/machine-learning/final.gpt b/site/_plots/blog/machine-learning/final.gpt
new file mode 100644
index 0000000..cdad36d
--- /dev/null
+++ b/site/_plots/blog/machine-learning/final.gpt
@@ -0,0 +1,40 @@
+#set terminal pdf monochrome size 3.15,2.5
+#set term pdf truecolor size 4.15,2.0 font "Times-Roman, 12"
+#set term svg size 880,300 font "Times-Roman, 14"
+set term svg size 640,300 font "Sans, 10"
+
+set output "final.svg"
+
+#set yrange [0:140]
+#set xrange [0.2:2]
+#set ytics add ("1us" 1, "10us" 10, "100us" 100, "1ms" 1000, "10ms" 10000, "" 100000, "" 1000000, "10s" 10000000, "100s" 100000000, "" 1000000000, "" 1e10)
+set ylabel "time [s]"
+set grid ytics mytic
+set key left
+set style data histogram
+#set style fill solid border -1
+#set boxwidth 0.9
+unset xtics
+set title "Machine Learning"
+
+set style line 1 lc rgb "#4dafa4" lw 4 # green
+set style line 2 lc rgb "#4dafa4" lw 4 # green
+set style line 3 lc rgb "#ff7f00" lw 4 # orange
+set style line 4 lc rgb "#ff7f00" lw 4 # orange
+set style line 5 lc rgb "#e41a1c" lw 4 # red
+set style line 6 lc rgb "#e41a1c" lw 4 # red
+set style line 7 lc rgb "#377eb8" lw 4 # blue
+set style line 8 lc rgb "#377eb8" lw 4 # blue
+
+set style increment user
+
+plot "final.dat" using ($0+1+0.00):($2):(0.2) with boxes axis x1y1 title " Compute (Vanilla)" fs solid 0.9,\
+ "final.dat" using ($0+1+0.23):($6):(0.2) with boxes axis x1y1 title " Compute (Crail)" fs solid 0.9 fillstyle pattern 1,\
+ "final.dat" using ($0+1+0.46):($3):(0.2) with boxes axis x1y1 title " Broadcast (Vanilla)" fs solid 0.9,\
+ "final.dat" using ($0+1+0.69):($7):(0.2) with boxes axis x1y1 title " Broadcast (Crail)" fs solid 0.9 fillstyle pattern 1,\
+ "final.dat" using ($0+1+0.92):($4):(0.2) with boxes axis x1y1 title " Reduce (Vanilla)" fs solid 0.9,\
+ "final.dat" using ($0+1+1.15):($8):(0.2) with boxes axis x1y1 title " Reduce (Crail)" fs solid 0.9 fillstyle pattern 1,\
+ "final.dat" using ($0+1+1.38):($5):(0.2) with boxes axis x1y1 title " Total (Vanilla)" fs solid 0.9,\
+ "final.dat" using ($0+1+1.61):($9):(0.2) with boxes axis x1y1 title " Total (Crail)" fs solid 0.9 fillstyle pattern 1
+
+
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_plots/blog/machine-learning/final.svg
----------------------------------------------------------------------
diff --git a/site/_plots/blog/machine-learning/final.svg b/site/_plots/blog/machine-learning/final.svg
new file mode 100644
index 0000000..bd9a21d
--- /dev/null
+++ b/site/_plots/blog/machine-learning/final.svg
@@ -0,0 +1,326 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<svg
+ width="640" height="300"
+ viewBox="0 0 640 300"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+>
+
+<title>Gnuplot</title>
+<desc>Produced by GNUPLOT 5.0 patchlevel 6 </desc>
+
+<g id="gnuplot_canvas">
+
+<rect x="0" y="0" width="640" height="300" fill="none"/>
+<defs>
+
+ <circle id='gpDot' r='0.5' stroke-width='0.5'/>
+ <path id='gpPt0' stroke-width='0.267' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
+ <path id='gpPt1' stroke-width='0.267' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
+ <path id='gpPt2' stroke-width='0.267' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
+ <rect id='gpPt3' stroke-width='0.267' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
+ <rect id='gpPt4' stroke-width='0.267' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
+ <circle id='gpPt5' stroke-width='0.267' stroke='currentColor' cx='0' cy='0' r='1'/>
+ <use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
+ <path id='gpPt7' stroke-width='0.267' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
+ <use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
+ <use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
+ <use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
+ <use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
+ <use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
+ <path id='gpPt13' stroke-width='0.267' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
+ <use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
+ <filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
+ <feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
+ <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
+ </filter>
+ <filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
+ <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
+ <feComposite in='SourceGraphic' in2='grey' operator='atop'/>
+ </filter>
+</defs>
+<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M60.5,286.0 L618.9,286.0 '/></g>
+<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='black' d='M60.5,286.0 L68.0,286.0 M618.9,286.0 L611.4,286.0 '/> <g transform="translate(53.5,289.3)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > 0</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M60.5,237.8 L618.9,237.8 '/></g>
+<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='black' d='M60.5,237.8 L68.0,237.8 M618.9,237.8 L611.4,237.8 '/> <g transform="translate(53.5,241.1)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > 0.5</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M60.5,189.6 L618.9,189.6 '/></g>
+<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='black' d='M60.5,189.6 L68.0,189.6 M618.9,189.6 L611.4,189.6 '/> <g transform="translate(53.5,192.9)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > 1</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M60.5,141.5 L67.5,141.5 M257.0,141.5 L618.9,141.5 '/></g>
+<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='black' d='M60.5,141.5 L68.0,141.5 M618.9,141.5 L611.4,141.5 '/> <g transform="translate(53.5,144.8)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > 1.5</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M60.5,93.3 L67.5,93.3 M257.0,93.3 L618.9,93.3 '/></g>
+<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='black' d='M60.5,93.3 L68.0,93.3 M618.9,93.3 L611.4,93.3 '/> <g transform="translate(53.5,96.6)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > 2</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M60.5,45.1 L618.9,45.1 '/></g>
+<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='black' d='M60.5,45.1 L68.0,45.1 M618.9,45.1 L611.4,45.1 '/> <g transform="translate(53.5,48.4)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > 2.5</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='black' d='M60.5,45.1 L60.5,286.0 L618.9,286.0 L618.9,45.1 L60.5,45.1 Z '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g transform="translate(14.2,165.6) rotate(270)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="middle">
+ <text><tspan font-family="Sans" >time [s]</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g transform="translate(339.7,25.9)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="middle">
+ <text><tspan font-family="Sans" >Machine Learning</tspan></text>
+ </g>
+</g>
+ <g id="gnuplot_plot_1" ><title> Compute (Vanilla)</title>
+<g fill="none" color="white" stroke="black" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g transform="translate(207.5,63.4)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > Compute (Vanilla)</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'rgb( 77, 175, 164)' fill-opacity = '0.900000' points = '214.5,63.8 250.0,63.8 250.0,56.3 214.5,56.3 '/>
+ </g>
+ <path stroke='rgb( 77, 175, 164)' d='M214.5,63.8 L250.0,63.8 L250.0,56.4 L214.5,56.4 L214.5,63.8 Z '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'rgb( 77, 175, 164)' fill-opacity = '0.900000' points = '259.2,286.0 299.1,286.0 299.1,240.5 259.2,240.5 '/>
+ </g>
+ <path stroke='rgb( 77, 175, 164)' d='M259.2,286.0 L259.2,240.6 L299.0,240.6 L299.0,286.0 L259.2,286.0 Z '/></g>
+ </g>
+ <g id="gnuplot_plot_2" ><title> Compute (Crail)</title>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g transform="translate(207.5,78.4)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > Compute (Crail)</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <defs>
+ <pattern id='gpPat1' patternUnits='userSpaceOnUse' x='0' y='0' width='8' height='8'>
+ <path style='fill:none; stroke:rgb(77,175,164)' d='M0,0 L8,8 M0,8 L8,0'/>
+ </pattern>
+ </defs>
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'url(#gpPat1)' points = '214.5,78.8 250.0,78.8 250.0,71.3 214.5,71.3 '/>
+ </g>
+ <path stroke='rgb( 77, 175, 164)' d='M214.5,78.8 L250.0,78.8 L250.0,71.4 L214.5,71.4 L214.5,78.8 Z '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <defs>
+ <pattern id='gpPat2' patternUnits='userSpaceOnUse' x='0' y='0' width='8' height='8'>
+ <path style='fill:none; stroke:rgb(77,175,164)' d='M0,0 L8,8 M0,8 L8,0'/>
+ </pattern>
+ </defs>
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'url(#gpPat2)' points = '304.9,286.0 344.8,286.0 344.8,241.5 304.9,241.5 '/>
+ </g>
+ <path stroke='rgb( 77, 175, 164)' d='M304.9,286.0 L304.9,241.6 L344.7,241.6 L344.7,286.0 L304.9,286.0 Z '/></g>
+ </g>
+ <g id="gnuplot_plot_3" ><title> Broadcast (Vanilla)</title>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g transform="translate(207.5,93.4)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > Broadcast (Vanilla)</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'rgb(255, 127, 0)' fill-opacity = '0.900000' points = '214.5,93.8 250.0,93.8 250.0,86.3 214.5,86.3 '/>
+ </g>
+ <path stroke='rgb(255, 127, 0)' d='M214.5,93.8 L250.0,93.8 L250.0,86.4 L214.5,86.4 L214.5,93.8 Z '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'rgb(255, 127, 0)' fill-opacity = '0.900000' points = '350.6,286.0 390.5,286.0 390.5,248.6 350.6,248.6 '/>
+ </g>
+ <path stroke='rgb(255, 127, 0)' d='M350.6,286.0 L350.6,248.7 L390.4,248.7 L390.4,286.0 L350.6,286.0 Z '/></g>
+ </g>
+ <g id="gnuplot_plot_4" ><title> Broadcast (Crail)</title>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g transform="translate(207.5,108.4)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > Broadcast (Crail)</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <defs>
+ <pattern id='gpPat3' patternUnits='userSpaceOnUse' x='0' y='0' width='8' height='8'>
+ <path style='fill:none; stroke:rgb(255,127,0)' d='M0,0 L8,8 M0,8 L8,0'/>
+ </pattern>
+ </defs>
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'url(#gpPat3)' points = '214.5,108.8 250.0,108.8 250.0,101.3 214.5,101.3 '/>
+ </g>
+ <path stroke='rgb(255, 127, 0)' d='M214.5,108.8 L250.0,108.8 L250.0,101.4 L214.5,101.4 L214.5,108.8 Z '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <defs>
+ <pattern id='gpPat4' patternUnits='userSpaceOnUse' x='0' y='0' width='8' height='8'>
+ <path style='fill:none; stroke:rgb(255,127,0)' d='M0,0 L8,8 M0,8 L8,0'/>
+ </pattern>
+ </defs>
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'url(#gpPat4)' points = '396.3,286.0 436.2,286.0 436.2,277.9 396.3,277.9 '/>
+ </g>
+ <path stroke='rgb(255, 127, 0)' d='M396.3,286.0 L396.3,278.0 L436.1,278.0 L436.1,286.0 L396.3,286.0 Z '/></g>
+ </g>
+ <g id="gnuplot_plot_5" ><title> Reduce (Vanilla)</title>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g transform="translate(207.5,123.4)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > Reduce (Vanilla)</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'rgb(228, 26, 28)' fill-opacity = '0.900000' points = '214.5,123.8 250.0,123.8 250.0,116.3 214.5,116.3 '/>
+ </g>
+ <path stroke='rgb(228, 26, 28)' d='M214.5,123.8 L250.0,123.8 L250.0,116.4 L214.5,116.4 L214.5,123.8 Z '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'rgb(228, 26, 28)' fill-opacity = '0.900000' points = '442.0,286.0 481.9,286.0 481.9,171.7 442.0,171.7 '/>
+ </g>
+ <path stroke='rgb(228, 26, 28)' d='M442.0,286.0 L442.0,171.8 L481.8,171.8 L481.8,286.0 L442.0,286.0 Z '/></g>
+ </g>
+ <g id="gnuplot_plot_6" ><title> Reduce (Crail)</title>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g transform="translate(207.5,138.4)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > Reduce (Crail)</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <defs>
+ <pattern id='gpPat5' patternUnits='userSpaceOnUse' x='0' y='0' width='8' height='8'>
+ <path style='fill:none; stroke:rgb(228,26,28)' d='M0,0 L8,8 M0,8 L8,0'/>
+ </pattern>
+ </defs>
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'url(#gpPat5)' points = '214.5,138.8 250.0,138.8 250.0,131.3 214.5,131.3 '/>
+ </g>
+ <path stroke='rgb(228, 26, 28)' d='M214.5,138.8 L250.0,138.8 L250.0,131.4 L214.5,131.4 L214.5,138.8 Z '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <defs>
+ <pattern id='gpPat6' patternUnits='userSpaceOnUse' x='0' y='0' width='8' height='8'>
+ <path style='fill:none; stroke:rgb(228,26,28)' d='M0,0 L8,8 M0,8 L8,0'/>
+ </pattern>
+ </defs>
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'url(#gpPat6)' points = '487.7,286.0 527.6,286.0 527.6,220.4 487.7,220.4 '/>
+ </g>
+ <path stroke='rgb(228, 26, 28)' d='M487.7,286.0 L487.7,220.5 L527.5,220.5 L527.5,286.0 L487.7,286.0 Z '/></g>
+ </g>
+ <g id="gnuplot_plot_7" ><title> Total (Vanilla)</title>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g transform="translate(207.5,153.4)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > Total (Vanilla)</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'rgb( 55, 126, 184)' fill-opacity = '0.900000' points = '214.5,153.8 250.0,153.8 250.0,146.3 214.5,146.3 '/>
+ </g>
+ <path stroke='rgb( 55, 126, 184)' d='M214.5,153.8 L250.0,153.8 L250.0,146.4 L214.5,146.4 L214.5,153.8 Z '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'rgb( 55, 126, 184)' fill-opacity = '0.900000' points = '533.5,286.0 573.3,286.0 573.3,46.2 533.5,46.2 '/>
+ </g>
+ <path stroke='rgb( 55, 126, 184)' d='M533.5,286.0 L533.5,46.3 L573.2,46.3 L573.2,286.0 L533.5,286.0 Z '/></g>
+ </g>
+ <g id="gnuplot_plot_8" ><title> Total (Crail)</title>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <g transform="translate(207.5,168.4)" stroke="none" fill="black" font-family="Sans" font-size="10.00" text-anchor="end">
+ <text><tspan font-family="Sans" > Total (Crail)</tspan></text>
+ </g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <defs>
+ <pattern id='gpPat7' patternUnits='userSpaceOnUse' x='0' y='0' width='8' height='8'>
+ <path style='fill:none; stroke:rgb(55,126,184)' d='M0,0 L8,8 M0,8 L8,0'/>
+ </pattern>
+ </defs>
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'url(#gpPat7)' points = '214.5,168.8 250.0,168.8 250.0,161.3 214.5,161.3 '/>
+ </g>
+ <path stroke='rgb( 55, 126, 184)' d='M214.5,168.8 L250.0,168.8 L250.0,161.4 L214.5,161.4 L214.5,168.8 Z '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="4.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <defs>
+ <pattern id='gpPat8' patternUnits='userSpaceOnUse' x='0' y='0' width='8' height='8'>
+ <path style='fill:none; stroke:rgb(55,126,184)' d='M0,0 L8,8 M0,8 L8,0'/>
+ </pattern>
+ </defs>
+ <g stroke='none' shape-rendering='crispEdges'>
+ <polygon fill = 'url(#gpPat8)' points = '579.2,286.0 619.0,286.0 619.0,150.1 579.2,150.1 '/>
+ </g>
+ <path stroke='rgb( 55, 126, 184)' d='M579.2,286.0 L579.2,150.2 L618.9,150.2 L618.9,286.0 L579.2,286.0 Z '/></g>
+ </g>
+<g fill="none" color="white" stroke="rgb( 55, 126, 184)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+ <path stroke='black' d='M60.5,45.1 L60.5,286.0 L618.9,286.0 L618.9,45.1 L60.5,45.1 Z '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+</g>
+</svg>
+
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/39417b15/site/_plots/blog/memory-tier/anatomy/anatomy.odp
----------------------------------------------------------------------
diff --git a/site/_plots/blog/memory-tier/anatomy/anatomy.odp b/site/_plots/blog/memory-tier/anatomy/anatomy.odp
new file mode 100644
index 0000000..b8cd0a1
Binary files /dev/null and b/site/_plots/blog/memory-tier/anatomy/anatomy.odp differ