Repository: incubator-crail-website
Updated Branches:
  refs/heads/asf-site 66f77a586 -> c782b73ad


http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/img/blog/sort/net_vanilla.svg
----------------------------------------------------------------------
diff --git a/content/img/blog/sort/net_vanilla.svg 
b/content/img/blog/sort/net_vanilla.svg
deleted file mode 100644
index cc9583c..0000000
--- a/content/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/c782b73a/content/img/blog/sort/performance_overall.png
----------------------------------------------------------------------
diff --git a/content/img/blog/sort/performance_overall.png 
b/content/img/blog/sort/performance_overall.png
deleted file mode 100644
index 8de369e..0000000
Binary files a/content/img/blog/sort/performance_overall.png and /dev/null 
differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/img/blog/sort/shuffle_rdma.png
----------------------------------------------------------------------
diff --git a/content/img/blog/sort/shuffle_rdma.png 
b/content/img/blog/sort/shuffle_rdma.png
deleted file mode 100644
index 9d3d020..0000000
Binary files a/content/img/blog/sort/shuffle_rdma.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/img/blog/sort/terasort_pipeline.png
----------------------------------------------------------------------
diff --git a/content/img/blog/sort/terasort_pipeline.png 
b/content/img/blog/sort/terasort_pipeline.png
deleted file mode 100644
index f5a11c8..0000000
Binary files a/content/img/blog/sort/terasort_pipeline.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/img/crail-stack-preview.png
----------------------------------------------------------------------
diff --git a/content/img/crail-stack-preview.png 
b/content/img/crail-stack-preview.png
deleted file mode 100644
index e1b258c..0000000
Binary files a/content/img/crail-stack-preview.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/img/crail_logo.png
----------------------------------------------------------------------
diff --git a/content/img/crail_logo.png b/content/img/crail_logo.png
deleted file mode 100644
index 1ca0ce5..0000000
Binary files a/content/img/crail_logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/img/crail_stack.png
----------------------------------------------------------------------
diff --git a/content/img/crail_stack.png b/content/img/crail_stack.png
deleted file mode 100644
index 9708e4b..0000000
Binary files a/content/img/crail_stack.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/img/crail_stack2.png
----------------------------------------------------------------------
diff --git a/content/img/crail_stack2.png b/content/img/crail_stack2.png
deleted file mode 100644
index f2b8315..0000000
Binary files a/content/img/crail_stack2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/img/crail_stack3.png
----------------------------------------------------------------------
diff --git a/content/img/crail_stack3.png b/content/img/crail_stack3.png
deleted file mode 100644
index 424ba46..0000000
Binary files a/content/img/crail_stack3.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/index.html
----------------------------------------------------------------------
diff --git a/content/index.html b/content/index.html
deleted file mode 100644
index 2f044d0..0000000
--- a/content/index.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <meta charset="utf-8">
-        <title>The Apache Crail (Incubating) Project: Overview</title>
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
-        <link href="http://crail.incubator.apache.org/css/bootstrap.min.css"; 
rel="stylesheet">
-        <link href="http://crail.incubator.apache.org/css/group.css"; 
rel="stylesheet">
-        <link rel="alternate" type="application/atom+xml" title="Atom"
-            href="http://crail.incubator.apache.org/blog/blog.xml";>
-        <meta property="og:image" 
content="http://crail.incubator.apache.org/img/crail-stack-preview.png"; />
-        <meta property="og:image:secure_url" 
content="http://crail.incubator.apache.org/img/crail-stack-preview.png"; />
-    </head>
-
-    <body>
-        <div class="container">
-          <div class="header">
-            <ul class="nav nav-pills pull-right">
-              
-              
-                
-                <li class="active">
-                  <a href="http://crail.incubator.apache.org/";>
-                    Home
-                  </a>
-                </li>
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/overview/";>
-                    Overview
-                  </a>
-                </li>
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/blog/";>
-                    Blog
-                  </a>
-                </li>
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/community/";>
-                    Community
-                  </a>
-                </li>
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/documentation/";>
-                    Documentation
-                  </a>
-                </li>
-              
-            </ul>
-            <a href="http://crail.incubator.apache.org/";>
-                <img src="http://crail.incubator.apache.org/img/crail_logo.png";
-                    
srcset="http://crail.incubator.apache.org/img/crail_logo.png";
-                    alt="Crail" id="logo">
-            </a>
-          </div>
-
-          
-          
-
-          <div class="jumbotron">
-<h4>Apache Crail is a high-performance distributed data store designed for 
fast sharing of ephemeral data in distributed data processing workloads</h4>
-</div>
-
-<br>
-<div>
-<center>
-<img src="http://crail.incubator.apache.org/img/crail_stack3.png"; 
align="middle" style="width: 340px; text-align:center;">
-</center>
-</div>
-<br>
-
-<div class="row">
-<div class="col-lg-4">
-<h2>Fast</h2>
-<p align="justify">Crail is designed from ground up for modern 
high-performance networking and storage hardware (RDMA, NVMe, NVMf, etc.). It 
leverages user-level I/O to access hardware directly from the application 
context, providing 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 
&raquo;</a></p>
-</div>
-<div class="col-lg-4">
-<h2>Heterogeneous</h2>
-<p align="justify">Crail offers a unified storage namespace over a 
heterogeneous set of storage resources distributed in a cluster, such as DRAM, 
non-volatile memory (NVM), Flash or GPU memory. Depending on the storage 
policy, data sets may be stored on a particular storage technology or even a 
specific storage device, or be distributed across multiple devices and storage 
technologies. 
-</p>
-<p><a class="btn btn-default" href="overview/index.html#fs">Learn more 
&raquo;</a></p>
-</div>
-<div class="col-lg-4">
-<h2>Modular</h2>
-<p align="justify">Crail provides a modular architecture where new network and 
storage technologies can be integrated in the form of pluggable modules. Crail 
further exports various application interfaces including File System (FS), 
Key-Value (KV) and Streaming, and integrates seamlessly with the Apache 
ecosystem, such as Apache Spark, Apache Parquet, Apache Arrow, etc.</p>
-<p><a class="btn btn-default" href="overview/index.html#spark">Learn more 
&raquo;</a></p>
-</div>
-</div>
-
-<h2>News</h2>
-<ul class="news list-unstyled">
-
-    
-        <li class="shortnews">
-            <span class="date">June 5, 2018</span>
-            <p>A Spark serverless architecture powered by Crail will be 
presented today at the <a 
href="https://databricks.com/session/serverless-machine-learning-on-modern-hardware-using-apache-spark";>Spark
 Summit</a></p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">June 5, 2018</span>
-            <p>Apache Crail (incubating) to feature in the <a 
href="https://dataworkssummit.com/san-jose-2018/session/data-processing-at-the-speed-of-100-gbpsapache-crail-incubating/";>DataWorks
 Summit</a> on June 21st</p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">June 4, 2018</span>
-            <p>Apache Crail 1.0 incubator <a 
href="https://dist.apache.org/repos/dist/release/incubator/crail/1.0-incubating/";>release</a></p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">January 22, 2018</span>
-            <p>Crail is now an Apache Incubator project!</p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">November 23, 2017</span>
-            <p>New blog <a 
href="http://crail.incubator.apache.org/blog/2017/11/crail-metadata.html";>post</a>
 about Crail’s metadata performance and scalability</p>
-
-        </li>
-    
-
-</ul>
-
-
-<p><a href="http://crail.incubator.apache.org/news/";>Older 
posts&hellip;</a></p>
-
-
-
-        <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="http://crail.incubator.apache.org/js/srcset-polyfill.js";></script>
-    </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/js/srcset-polyfill.js
----------------------------------------------------------------------
diff --git a/content/js/srcset-polyfill.js b/content/js/srcset-polyfill.js
deleted file mode 100644
index 9c8d2bc..0000000
--- a/content/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/c782b73a/content/news/index.html
----------------------------------------------------------------------
diff --git a/content/news/index.html b/content/news/index.html
deleted file mode 100644
index ddb093b..0000000
--- a/content/news/index.html
+++ /dev/null
@@ -1,224 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <meta charset="utf-8">
-        <title>The Apache Crail (Incubating) Project: News</title>
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
-        <link href="http://crail.incubator.apache.org/css/bootstrap.min.css"; 
rel="stylesheet">
-        <link href="http://crail.incubator.apache.org/css/group.css"; 
rel="stylesheet">
-        <link rel="alternate" type="application/atom+xml" title="Atom"
-            href="http://crail.incubator.apache.org/blog/blog.xml";>
-        
-        <meta property="og:image" 
content="http://crail.incubator.apache.org/img/blog/preview/news-summary.png"; />
-        <meta property="og:image:secure_url" 
content="http://crail.incubator.apache.org/img/blog/preview/news-summary.png"; />
-    </head>
-
-    <body>
-        <div class="container">
-          <div class="header">
-            <ul class="nav nav-pills pull-right">
-              
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/";>
-                    Home
-                  </a>
-                </li>
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/overview/";>
-                    Overview
-                  </a>
-                </li>
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/blog/";>
-                    Blog
-                  </a>
-                </li>
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/community/";>
-                    Community
-                  </a>
-                </li>
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/documentation/";>
-                    Documentation
-                  </a>
-                </li>
-              
-            </ul>
-            <a href="http://crail.incubator.apache.org/";>
-                <img src="http://crail.incubator.apache.org/img/crail_logo.png";
-                    
srcset="http://crail.incubator.apache.org/img/crail_logo.png";
-                    alt="Crail" id="logo">
-            </a>
-          </div>
-
-          
-          
-          <h2>News</h2>   
-          
-
-          <ul class="news list-unstyled">
-
-    
-        <li class="shortnews">
-            <span class="date">June 5, 2018</span>
-            <p>A Spark serverless architecture powered by Crail will be 
presented today at the <a 
href="https://databricks.com/session/serverless-machine-learning-on-modern-hardware-using-apache-spark";>Spark
 Summit</a></p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">June 5, 2018</span>
-            <p>Apache Crail (incubating) to feature in the <a 
href="https://dataworkssummit.com/san-jose-2018/session/data-processing-at-the-speed-of-100-gbpsapache-crail-incubating/";>DataWorks
 Summit</a> on June 21st</p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">June 4, 2018</span>
-            <p>Apache Crail 1.0 incubator <a 
href="https://dist.apache.org/repos/dist/release/incubator/crail/1.0-incubating/";>release</a></p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">January 22, 2018</span>
-            <p>Crail is now an Apache Incubator project!</p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">November 23, 2017</span>
-            <p>New blog <a 
href="http://crail.incubator.apache.org/blog/2017/11/crail-metadata.html";>post</a>
 about Crail’s metadata performance and scalability</p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">November 17, 2017</span>
-            <p>Crail features in the <a 
href="https://twit.tv/shows/floss-weekly/episodes/458?autostart=false";>FLOSS 
weekly podcast</a></p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">November 17, 2017</span>
-            <p>New blog <a 
href="http://crail.incubator.apache.org/blog/2017/11/rdmashuffle.html";>post</a> 
about SparkRDMA and Crail shuffle plugins</p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">August 4, 2017</span>
-            <p>Crail on OpenPower discussed by Peter Hofstee on <a 
href="https://www.youtube.com/watch?v=f-pgMaEmqn4&amp;feature=youtu.be&amp;platform=hootsuite";>Youtube</a></p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">June 17, 2017</span>
-            <p>DiSNI, the RDMA and NVMe user-level stack used in Crail is now 
available on <a href="https://search.maven.org/";>Maven Central</a></p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">March 29, 2017</span>
-            <p>First release of the NVMeF storage tier for Crail is available 
at <a href="http://github.com/zrlio/crail";>GitHub</a></p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">March 20, 2017</span>
-            <p>We are presenting Crail at the <a 
href="https://spark-summit.org/2017/events/running-apache-spark-on-a-high-performance-cluster-using-rdma-and-nvme-flash";>Spark
 Summit</a> in San Francisco on June 6th</p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">March 16, 2017</span>
-            <p>We are presenting Crail at a <a 
href="https://www.meetup.com/Big-Data-Developers-in-Munich/events/238408703/";>meetup</a>
 before the <a 
href="https://dataworkssummit.com/munich-2017/agenda/#20170404";>DataWorks 
Summit</a> in Munich on April 4th</p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">March 12, 2017</span>
-            <p>We are presenting Crail at the <a 
href="https://www.openfabrics.org/index.php/abstracts-agenda.html";>Open Fabrics 
Workshop</a> in Austin on March 28th</p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">March 10, 2017</span>
-            <p>Our work on Storage disaggregation using Crail at the <a 
href="http://nvmw.ucsd.edu/2017/program";>Non-Volatile Memories Workshop</a></p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">January 17, 2017</span>
-            <p>New blog <a 
href="http://crail.incubator.apache.org/blog/2017/01/sorting.html";>post</a> 
about sorting on a 100Gbit/s cluster using Spark/Crail</p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">January 1, 2017</span>
-            <p>First release of the Spark shuffle engine available at <a 
href="http://github.com/zrlio/spark-io";>GitHub</a></p>
-
-        </li>
-    
-
-    
-        <li class="shortnews">
-            <span class="date">January 1, 2017</span>
-            <p>First release of the Crail distributed file system available at 
<a href="http://github.com/zrlio/crail";>GitHub</a></p>
-
-        </li>
-    
-
-</ul>
-
-
-        <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="http://crail.incubator.apache.org/js/srcset-polyfill.js";></script>
-    </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/overview/architecture.png
----------------------------------------------------------------------
diff --git a/content/overview/architecture.png 
b/content/overview/architecture.png
deleted file mode 100644
index 2f11f95..0000000
Binary files a/content/overview/architecture.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/overview/filesystem.png
----------------------------------------------------------------------
diff --git a/content/overview/filesystem.png b/content/overview/filesystem.png
deleted file mode 100644
index 4b29413..0000000
Binary files a/content/overview/filesystem.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/overview/filesystem2.png
----------------------------------------------------------------------
diff --git a/content/overview/filesystem2.png b/content/overview/filesystem2.png
deleted file mode 100644
index 974e75a..0000000
Binary files a/content/overview/filesystem2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/overview/index.html
----------------------------------------------------------------------
diff --git a/content/overview/index.html b/content/overview/index.html
deleted file mode 100644
index 1605363..0000000
--- a/content/overview/index.html
+++ /dev/null
@@ -1,247 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <meta charset="utf-8">
-        <title>The Apache Crail (Incubating) Project: I/O Challenges</title>
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
-        <link href="http://crail.incubator.apache.org/css/bootstrap.min.css"; 
rel="stylesheet">
-        <link href="http://crail.incubator.apache.org/css/group.css"; 
rel="stylesheet">
-        <link rel="alternate" type="application/atom+xml" title="Atom"
-            href="http://crail.incubator.apache.org/blog/blog.xml";>
-        
-        <meta property="og:image" 
content="http://crail.incubator.apache.org/img/blog/preview/overview-summary.png";
 />
-        <meta property="og:image:secure_url" 
content="http://crail.incubator.apache.org/img/blog/preview/overview-summary.png";
 />
-    </head>
-
-    <body>
-        <div class="container">
-          <div class="header">
-            <ul class="nav nav-pills pull-right">
-              
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/";>
-                    Home
-                  </a>
-                </li>
-              
-                
-                <li class="active">
-                  <a href="http://crail.incubator.apache.org/overview/";>
-                    Overview
-                  </a>
-                </li>
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/blog/";>
-                    Blog
-                  </a>
-                </li>
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/community/";>
-                    Community
-                  </a>
-                </li>
-              
-                
-                <li >
-                  <a href="http://crail.incubator.apache.org/documentation/";>
-                    Documentation
-                  </a>
-                </li>
-              
-            </ul>
-            <a href="http://crail.incubator.apache.org/";>
-                <img src="http://crail.incubator.apache.org/img/crail_logo.png";
-                    
srcset="http://crail.incubator.apache.org/img/crail_logo.png";
-                    alt="Crail" id="logo">
-            </a>
-          </div>
-
-          
-          
-          <h2>I/O Challenges</h2>   
-          
-
-          <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>
-
-<ul>
-  <li>
-    <p>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.</p>
-  </li>
-  <li>
-    <p>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.</p>
-  </li>
-  <li>
-    <p>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.</p>
-  </li>
-</ul>
-
-<p>In the <a href="http://crail.incubator.apache.org/blog";>Blog</a> section we 
discuss each of those challenges in more detail.</p>
-
-<h2 id="crail-architecture">Crail Architecture</h2>
-
-<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>
-<p><br />
-<img src="architecture.png" width="500" align="middle" />
-<br /><br /></p>
-<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="http://crail.incubator.apache.org/overview/filesystem2.png"; width="550" 
/></div>
-<p><br /></p>
-
-<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 upcoming storage and network 
technologies efficiently. 
-</p>
-</div>
-<p><br />
-<img src="tiering.png" width="650" align="middle" />
-<br /><br /></p>
-<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>
-<div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>CrailConfiguration conf = new CrailConfiguration();
-CrailStore store = CrailStore.newInstance(conf);
-CrailFile file = store.createFile(filename, 0, 0).get().syncDir();
-CrailOutputStream outstream = file.getDirectOutputStream();
-ByteBuffer dataBuf = store.allocateBuffer();
-Future&lt;DataResult&gt; future = outputStream.write(dataBuf);
-...
-future.get();
-</code></pre></div></div>
-<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>
-
-<p>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:</p>
-
-<div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>./bin/crail fs -mkdir /test
-./bin/crail fs -ls /
-./bin/crail fs -copyFromLocal &lt;path-to-local-file&gt; 
-./bin/crail fs -cat /test/&lt;file-name&gt;
-</code></pre></div></div>
-
-<p>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):</p>
-
-<div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>Configuration conf = new Configuration();
-FileSystem fs = FileSystem.get(conf);
-fs.create("crail://test/hello.txt");
-</code></pre></div></div>
-
-<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>
-
-<p><br />
-<img src="shuffle.png" width="550" align="middle" />
-<br /><br /></p>
-
-<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>
-
-<div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>spark.shuffle.manager               
org.apache.spark.shuffle.crail.CrailShuffleManager
-spark.broadcast.factory                
org.apache.spark.broadcast.CrailBroadcastFactory
-</code></pre></div></div>
-
-<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>
-
-<p><br />
-<img src="serializer.png" width="490" align="middle" />
-<br /><br /></p>
-
-<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>
-
-<div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>spark.crail.shuffle.serializer  
-spark.crail.shuffle.sorter     
-</code></pre></div></div>
-
-
-
-        <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="http://crail.incubator.apache.org/js/srcset-polyfill.js";></script>
-    </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/overview/serializer.png
----------------------------------------------------------------------
diff --git a/content/overview/serializer.png b/content/overview/serializer.png
deleted file mode 100644
index db99abb..0000000
Binary files a/content/overview/serializer.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/overview/shuffle.png
----------------------------------------------------------------------
diff --git a/content/overview/shuffle.png b/content/overview/shuffle.png
deleted file mode 100644
index 761b964..0000000
Binary files a/content/overview/shuffle.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/c782b73a/content/overview/tiering.png
----------------------------------------------------------------------
diff --git a/content/overview/tiering.png b/content/overview/tiering.png
deleted file mode 100644
index b131f59..0000000
Binary files a/content/overview/tiering.png and /dev/null differ

Reply via email to