Commit c0840f81 authored by Robert Ricci's avatar Robert Ricci

Merge commit 'ccf56002' into s15

Conflicts:
	assignments/lab1/notes/reproduce-steps.html
	assignments/lab1/notes/reproduce-steps.md
parents f756081c ccf56002
......@@ -441,53 +441,68 @@ pre[class*="language-"] {
</style>
</head>
<body>
<ol>
<li><p>Start a new experiment with this profile: OnePC-Ubuntu14</p></li>
<li><p>Install required packages:
<code>sudo apt-get update;</code>
<code>sudo apt-get install libprotobuf-dev libx11-dev xorg-dev protobuf-compiler python-matplotlib inkscape gnuplot</code></p></li>
<li><p>Download remy-reproduce-1.0.tar.gz (61 MiB). This is a modified version of
ns-allinone 2.35.
<code>wget http://web.mit.edu/remy/remy-reproduce-1.0.tar.gz</code></p></li>
</ol>
<p>2.1 Download patch:
<code>wget https://gitlab.flux.utah.edu/cs6963-s15/lab1/raw/master/patches/abs.patch</code></p>
<ol>
<li><p>Unpack the tarball:
<code>tar zxvf remy-reproduce-1.0.tar.gz</code></p></li>
<li><p><code>cd remy-reproduce-1.0</code></p></li>
</ol>
<p>4.1 Apply patch:
<code>patch -p1 &lt; ../abs.patch</code></p>
<p>4.2 Re-build some header files:
<code>cd ns-2.35/tcp/remy/</code>
<code>protoc --cpp_out=. dna.proto</code>
<code>cd ../../../</code></p>
<ol>
<li><p>Run <code>./install</code> This will compile the components of ns-allinone, including
our modified ns-2.35.</p></li>
<li><p>If successful, <code>cd ns-2.35/tcl/ex/congctrl</code></p></li>
<li><p>Run <code>./run-figure4-parallel</code>. By default, this runs the simulations
<h1 id="toc_0">How to reproduce Remy results in CloudLab</h1>
<p>0) Start a new experiment with this profile: <a href="https://www.cloudlab.us/p/04a3e6a1-7d83-11e4-afea-001143e453fe">OnePC-Ubuntu14</a></p>
<p>1) Install required packages:</p>
<pre><code>sudo apt-get update
sudo apt-get install libprotobuf-dev libx11-dev xorg-dev protobuf-compiler python-matplotlib inkscape gnuplot</code></pre>
<p>2) Download remy-reproduce-1.0.tar.gz (61 MiB). This is a modified version of
ns-allinone 2.35.</p>
<pre><code>wget http://web.mit.edu/remy/remy-reproduce-1.0.tar.gz</code></pre>
<p>2.1) Download patch:</p>
<pre><code>wget https://gitlab.flux.utah.edu/cs6963-s15/lab1/raw/master/patches/abs.patch</code></pre>
<p>3) Unpack the tarball:</p>
<pre><code>tar zxvf remy-reproduce-1.0.tar.gz</code></pre>
<p>4) Change to tarball directory </p>
<pre><code>cd remy-reproduce-1.0</code></pre>
<p>4.1) Apply patch:</p>
<pre><code>patch -p1 &lt; ../abs.patch</code></pre>
<p>4.2) Re-build some header files:</p>
<pre><code>cd ns-2.35/tcp/remy/
protoc --cpp_out=. dna.proto
cd ../../../</code></pre>
<p>5) Run <code>./install</code> This will compile the components of ns-allinone, including
our modified ns-2.35.</p>
<p>6) If successful, <code>cd ns-2.35/tcl/ex/congctrl</code></p>
<p>7) Run <code>./run-figure4-parallel</code>. By default, this runs the simulations
necessary to construct Figure 4 (a 15 Mbps dumbbell network with RTT of 150
millisecond). This configuration is contained in
remyconf/dumbbell-buf1000-rtt150-bneck15.tcl. The remyconf directory also
includes the configurations used for the other figures. On a typical PC, the
full job will take a long time to complete. It will run the simulations in
parallel and in the background. After it has completed at least a few runs, you
can start to graph the results.</p></li>
<li><p><code>cd ../graphing-scripts</code></p></li>
<li><p>Run <code>./graphmaker ../congctrl/results/</code> This will output an SVG and PNG file
can start to graph the results.</p>
<p>8) Change to directory where graphing scripts live:</p>
<pre><code>cd ../graphing-scripts</code></pre>
<p>9) Run <code>./graphmaker ../congctrl/results/</code> This will output an SVG and PNG file
for each nsrc (maximum degree of multiplexing) enumerated in
run-figure4-parallel. (As distributed, only 8 is tested.) The graphmaker
requires inkscape.</p></li>
<li><p>To view the images, copy them to your local machine. eg.
<code>scp -r &lt;user&gt;@&lt;host&gt;:remy-reproduce-1.0/ns-2.35/tcl/ex/congctrl/results .</code></p></li>
</ol>
requires inkscape.</p>
<p>10) To view the images, copy them to your local machine. eg.</p>
<pre><code>scp -r &lt;user&gt;@&lt;host&gt;:remy-reproduce-1.0/ns-2.35/tcl/ex/congctrl/results .</code></pre>
<script type="text/javascript">
self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{};var Prism=function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content),e.alias):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){var n=t.util.type(e);switch(n){case"Object":var a={};for(var r in e)e.hasOwnProperty(r)&&(a[r]=t.util.clone(e[r]));return a;case"Array":return e.map(function(e){return t.util.clone(e)})}return e}},languages:{extend:function(e,n){var a=t.util.clone(t.languages[e]);for(var r in n)a[r]=n[r];return a},insertBefore:function(e,n,a,r){r=r||t.languages;var i=r[e];if(2==arguments.length){a=arguments[1];for(var l in a)a.hasOwnProperty(l)&&(i[l]=a[l]);return i}var o={};for(var s in i)if(i.hasOwnProperty(s)){if(s==n)for(var l in a)a.hasOwnProperty(l)&&(o[l]=a[l]);o[s]=i[s]}return t.languages.DFS(t.languages,function(t,n){n===r[e]&&t!=e&&(this[t]=o)}),r[e]=o},DFS:function(e,n,a){for(var r in e)e.hasOwnProperty(r)&&(n.call(e,r,e[r],a||r),"Object"===t.util.type(e[r])?t.languages.DFS(e[r],n):"Array"===t.util.type(e[r])&&t.languages.DFS(e[r],n,r))}},highlightAll:function(e,n){for(var a,r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'),i=0;a=r[i++];)t.highlightElement(a,e===!0,n)},highlightElement:function(a,r,i){for(var l,o,s=a;s&&!e.test(s.className);)s=s.parentNode;if(s&&(l=(s.className.match(e)||[,""])[1],o=t.languages[l]),o){a.className=a.className.replace(e,"").replace(/\s+/g," ")+" language-"+l,s=a.parentNode,/pre/i.test(s.nodeName)&&(s.className=s.className.replace(e,"").replace(/\s+/g," ")+" language-"+l);var g=a.textContent;if(g){g=g.replace(/^(?:\r?\n|\r)/,"");var u={element:a,language:l,grammar:o,code:g};if(t.hooks.run("before-highlight",u),r&&self.Worker){var c=new Worker(t.filename);c.onmessage=function(e){u.highlightedCode=n.stringify(JSON.parse(e.data),l),t.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,i&&i.call(u.element),t.hooks.run("after-highlight",u)},c.postMessage(JSON.stringify({language:u.language,code:u.code}))}else u.highlightedCode=t.highlight(u.code,u.grammar,u.language),t.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,i&&i.call(a),t.hooks.run("after-highlight",u)}}},highlight:function(e,a,r){var i=t.tokenize(e,a);return n.stringify(t.util.encode(i),r)},tokenize:function(e,n){var a=t.Token,r=[e],i=n.rest;if(i){for(var l in i)n[l]=i[l];delete n.rest}e:for(var l in n)if(n.hasOwnProperty(l)&&n[l]){var o=n[l];o="Array"===t.util.type(o)?o:[o];for(var s=0;s<o.length;++s){var g=o[s],u=g.inside,c=!!g.lookbehind,f=0,h=g.alias;g=g.pattern||g;for(var p=0;p<r.length;p++){var d=r[p];if(r.length>e.length)break e;if(!(d instanceof a)){g.lastIndex=0;var m=g.exec(d);if(m){c&&(f=m[1].length);var y=m.index-1+f,m=m[0].slice(f),v=m.length,k=y+v,b=d.slice(0,y+1),w=d.slice(k+1),O=[p,1];b&&O.push(b);var N=new a(l,u?t.tokenize(m,u):m,h);O.push(N),w&&O.push(w),Array.prototype.splice.apply(r,O)}}}}}return r},hooks:{all:{},add:function(e,n){var a=t.hooks.all;a[e]=a[e]||[],a[e].push(n)},run:function(e,n){var a=t.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(n)}}},n=t.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(n.stringify=function(e,a,r){if("string"==typeof e)return e;if("[object Array]"==Object.prototype.toString.call(e))return e.map(function(t){return n.stringify(t,a,e)}).join("");var i={type:e.type,content:n.stringify(e.content,a,r),tag:"span",classes:["token",e.type],attributes:{},language:a,parent:r};if("comment"==i.type&&(i.attributes.spellcheck="true"),e.alias){var l="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,l)}t.hooks.run("wrap",i);var o="";for(var s in i.attributes)o+=s+'="'+(i.attributes[s]||"")+'"';return"<"+i.tag+' class="'+i.classes.join(" ")+'" '+o+">"+i.content+"</"+i.tag+">"},!self.document)return self.addEventListener?(self.addEventListener("message",function(e){var n=JSON.parse(e.data),a=n.language,r=n.code;self.postMessage(JSON.stringify(t.util.encode(t.tokenize(r,t.languages[a])))),self.close()},!1),self.Prism):self.Prism;var a=document.getElementsByTagName("script");return a=a[a.length-1],a&&(t.filename=a.src,document.addEventListener&&!a.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism);
......
0. Start a new experiment with this profile: OnePC-Ubuntu14
# How to reproduce Remy results in CloudLab
1. Install required packages:
`sudo apt-get update;`
`sudo apt-get install libprotobuf-dev libx11-dev xorg-dev protobuf-compiler python-matplotlib inkscape gnuplot`
0) Start a new experiment with this profile: [OnePC-Ubuntu14](https://www.cloudlab.us/p/04a3e6a1-7d83-11e4-afea-001143e453fe)
2. Download remy-reproduce-1.0.tar.gz (61 MiB). This is a modified version of
1) Install required packages:
sudo apt-get update
sudo apt-get install libprotobuf-dev libx11-dev xorg-dev protobuf-compiler python-matplotlib inkscape gnuplot
2) Download remy-reproduce-1.0.tar.gz (61 MiB). This is a modified version of
ns-allinone 2.35.
`wget http://web.mit.edu/remy/remy-reproduce-1.0.tar.gz`
wget http://web.mit.edu/remy/remy-reproduce-1.0.tar.gz
2.1) Download patch:
wget https://gitlab.flux.utah.edu/cs6963-s15/lab1/raw/master/patches/abs.patch
3) Unpack the tarball:
2.1 Download patch:
`wget https://gitlab.flux.utah.edu/cs6963-s15/lab1/raw/master/patches/abs.patch`
tar zxvf remy-reproduce-1.0.tar.gz
3. Unpack the tarball:
`tar zxvf remy-reproduce-1.0.tar.gz`
4) Change to tarball directory
4. `cd remy-reproduce-1.0`
cd remy-reproduce-1.0
4.1 Apply patch:
`patch -p1 < ../abs.patch`
4.1) Apply patch:
4.2 Re-build some header files:
`cd ns-2.35/tcp/remy/`
`protoc --cpp_out=. dna.proto`
`cd ../../../`
patch -p1 < ../abs.patch
5. Run `./install` This will compile the components of ns-allinone, including
4.2) Re-build some header files:
cd ns-2.35/tcp/remy/
protoc --cpp_out=. dna.proto
cd ../../../
5) Run `./install` This will compile the components of ns-allinone, including
our modified ns-2.35.
6. If successful, `cd ns-2.35/tcl/ex/congctrl`
6) If successful, `cd ns-2.35/tcl/ex/congctrl`
7. Run `./run-figure4-parallel`. By default, this runs the simulations
7) Run `./run-figure4-parallel`. By default, this runs the simulations
necessary to construct Figure 4 (a 15 Mbps dumbbell network with RTT of 150
millisecond). This configuration is contained in
remyconf/dumbbell-buf1000-rtt150-bneck15.tcl. The remyconf directory also
......@@ -38,12 +48,15 @@ full job will take a long time to complete. It will run the simulations in
parallel and in the background. After it has completed at least a few runs, you
can start to graph the results.
8. `cd ../graphing-scripts`
8) Change to directory where graphing scripts live:
9. Run `./graphmaker ../congctrl/results/` This will output an SVG and PNG file
cd ../graphing-scripts
9) Run `./graphmaker ../congctrl/results/` This will output an SVG and PNG file
for each nsrc (maximum degree of multiplexing) enumerated in
run-figure4-parallel. (As distributed, only 8 is tested.) The graphmaker
requires inkscape.
10. To view the images, copy them to your local machine. eg.
`scp -r <user>@<host>:remy-reproduce-1.0/ns-2.35/tcl/ex/congctrl/results .`
10) To view the images, copy them to your local machine. eg.
scp -r <user>@<host>:remy-reproduce-1.0/ns-2.35/tcl/ex/congctrl/results .
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment