From 4411d5800eddf536866515c184cd7589ca5c9b0b Mon Sep 17 00:00:00 2001 From: Gaetan Longree Date: Fri, 11 May 2018 15:51:48 +0200 Subject: [PATCH] First commit --- BENCHMARKING/README.md | 62 + BENCHMARKING/RESULTS/combined.xlsx | Bin 0 -> 135980 bytes BENCHMARKING/RESULTS/dns_cont_benchmark.csv | 28 + BENCHMARKING/RESULTS/dns_unik_benchmark.csv | 28 + .../RESULTS/startup_cont_benchmark.csv | 1068 +++++++ .../RESULTS/startup_unik_benchmark.csv | 2681 +++++++++++++++++ .../RESULTS/web_apache_cont_benchmark.csv | 53 + BENCHMARKING/RESULTS/web_cont_benchmark.csv | 2 + BENCHMARKING/RESULTS/web_unik_benchmark.csv | 37 + BENCHMARKING/UNIKERNEL/DNS/CMakeLists.txt | 36 + BENCHMARKING/UNIKERNEL/DNS/cmake_build.sh | 7 + BENCHMARKING/UNIKERNEL/DNS/config.json | 11 + BENCHMARKING/UNIKERNEL/DNS/service.cpp | 262 ++ BENCHMARKING/UNIKERNEL/DNS/vm.json | 6 + .../UNIKERNEL/WebServer/CMakeLists.txt | 42 + .../UNIKERNEL/WebServer/cmake_build.sh | 7 + BENCHMARKING/UNIKERNEL/WebServer/config.json | 13 + .../UNIKERNEL/WebServer/disk/index.html | 15 + BENCHMARKING/UNIKERNEL/WebServer/service.cpp | 47 + BENCHMARKING/bench_container_dns.sh | 38 + BENCHMARKING/bench_container_web.sh | 38 + BENCHMARKING/bench_unikernel_cleanup.sh | 13 + BENCHMARKING/bench_unikernel_dns.sh | 55 + BENCHMARKING/bench_unikernel_web.sh | 52 + BENCHMARKING/cleanup_all.sh | 30 + BENCHMARKING/dns_cont_benchmark.py | 67 + BENCHMARKING/dns_unik_benchmark.py | 67 + BENCHMARKING/install_bench_tools.sh | 24 + BENCHMARKING/startup_cont_benchmark.py | 94 + BENCHMARKING/startup_unik_benchmark.py | 118 + BENCHMARKING/web_cont_benchmark.py | 64 + BENCHMARKING/web_unik_benchmark.py | 64 + DEPLOYMENT/README.md | 54 + DEPLOYMENT/deploy_containers.sh | 43 + DEPLOYMENT/deploy_unikernels.sh | 93 + DEPLOYMENT/pre_deployment_installation.sh | 30 + MEDIA/Benchmark 2.png | Bin 0 -> 17358 bytes MEDIA/Benchmark.png | Bin 0 -> 15557 bytes MEDIA/Benchmark.xml | 1 + MEDIA/CETIC.xml | 1 + MEDIA/PoC Topology.png | Bin 0 -> 25891 bytes MEDIA/hypervisor_container_unikernel.jpg | Bin 0 -> 73327 bytes MEDIA/mutable-vs-immutable-update.PNG | Bin 0 -> 119862 bytes MEDIA/normal_application_stack.PNG | Bin 0 -> 23024 bytes MEDIA/unikernel_application_stack.PNG | Bin 0 -> 18068 bytes MEDIA/unikernel_network.PNG | Bin 0 -> 38416 bytes MEDIA/vms-containers-unikernels.PNG | Bin 0 -> 20716 bytes SOURCE/CONTAINER/DNS/Dockerfile | 5 + SOURCE/CONTAINER/DNS/compile.sh | 3 + SOURCE/CONTAINER/DNS/create_container.sh | 3 + SOURCE/CONTAINER/DNS/dnsServer.cpp | 283 ++ SOURCE/CONTAINER/DNS/run_service.sh | 3 + SOURCE/CONTAINER/DNS/start.sh | 10 + SOURCE/CONTAINER/Dockerfile | 2 + SOURCE/CONTAINER/README.md | 45 + SOURCE/CONTAINER/WebServer/Dockerfile | 6 + SOURCE/CONTAINER/WebServer/compile.sh | 3 + .../CONTAINER/WebServer/create_container.sh | 3 + SOURCE/CONTAINER/WebServer/index.html | 15 + SOURCE/CONTAINER/WebServer/run_service.sh | 3 + SOURCE/CONTAINER/WebServer/start.sh | 10 + SOURCE/CONTAINER/WebServer/webServer.cpp | 120 + SOURCE/CONTAINER/create_compiler.sh | 3 + SOURCE/README.md | 21 + SOURCE/UNIKERNEL/DNS/CMakeLists.txt | 36 + SOURCE/UNIKERNEL/DNS/cmake_build.sh | 7 + SOURCE/UNIKERNEL/DNS/config.json | 11 + SOURCE/UNIKERNEL/DNS/service.cpp | 262 ++ SOURCE/UNIKERNEL/DNS/vm.json | 6 + SOURCE/UNIKERNEL/Firewall/CMakeLists.txt | 42 + SOURCE/UNIKERNEL/Firewall/cmake_build.sh | 7 + SOURCE/UNIKERNEL/Firewall/nacl.txt | 41 + SOURCE/UNIKERNEL/Firewall/service.cpp | 6 + SOURCE/UNIKERNEL/Firewall/vm.json | 6 + SOURCE/UNIKERNEL/Router/CMakeLists.txt | 42 + SOURCE/UNIKERNEL/Router/cmake_build.sh | 7 + SOURCE/UNIKERNEL/Router/config.json | 38 + SOURCE/UNIKERNEL/Router/service.cpp | 17 + SOURCE/UNIKERNEL/Router/vm.json | 6 + SOURCE/UNIKERNEL/WebServer/CMakeLists.txt | 42 + SOURCE/UNIKERNEL/WebServer/cmake_build.sh | 7 + SOURCE/UNIKERNEL/WebServer/config.json | 13 + SOURCE/UNIKERNEL/WebServer/disk/index.html | 15 + SOURCE/UNIKERNEL/WebServer/service.cpp | 47 + SOURCE/UNIKERNEL/external.xml | 10 + SOURCE/UNIKERNEL/firewall.xml | 6 + SOURCE/UNIKERNEL/internal.xml | 10 + 87 files changed, 6573 insertions(+) create mode 100644 BENCHMARKING/README.md create mode 100644 BENCHMARKING/RESULTS/combined.xlsx create mode 100644 BENCHMARKING/RESULTS/dns_cont_benchmark.csv create mode 100644 BENCHMARKING/RESULTS/dns_unik_benchmark.csv create mode 100644 BENCHMARKING/RESULTS/startup_cont_benchmark.csv create mode 100644 BENCHMARKING/RESULTS/startup_unik_benchmark.csv create mode 100644 BENCHMARKING/RESULTS/web_apache_cont_benchmark.csv create mode 100644 BENCHMARKING/RESULTS/web_cont_benchmark.csv create mode 100644 BENCHMARKING/RESULTS/web_unik_benchmark.csv create mode 100644 BENCHMARKING/UNIKERNEL/DNS/CMakeLists.txt create mode 100644 BENCHMARKING/UNIKERNEL/DNS/cmake_build.sh create mode 100644 BENCHMARKING/UNIKERNEL/DNS/config.json create mode 100644 BENCHMARKING/UNIKERNEL/DNS/service.cpp create mode 100644 BENCHMARKING/UNIKERNEL/DNS/vm.json create mode 100644 BENCHMARKING/UNIKERNEL/WebServer/CMakeLists.txt create mode 100644 BENCHMARKING/UNIKERNEL/WebServer/cmake_build.sh create mode 100644 BENCHMARKING/UNIKERNEL/WebServer/config.json create mode 100644 BENCHMARKING/UNIKERNEL/WebServer/disk/index.html create mode 100644 BENCHMARKING/UNIKERNEL/WebServer/service.cpp create mode 100644 BENCHMARKING/bench_container_dns.sh create mode 100644 BENCHMARKING/bench_container_web.sh create mode 100644 BENCHMARKING/bench_unikernel_cleanup.sh create mode 100644 BENCHMARKING/bench_unikernel_dns.sh create mode 100644 BENCHMARKING/bench_unikernel_web.sh create mode 100644 BENCHMARKING/cleanup_all.sh create mode 100644 BENCHMARKING/dns_cont_benchmark.py create mode 100644 BENCHMARKING/dns_unik_benchmark.py create mode 100644 BENCHMARKING/install_bench_tools.sh create mode 100644 BENCHMARKING/startup_cont_benchmark.py create mode 100644 BENCHMARKING/startup_unik_benchmark.py create mode 100644 BENCHMARKING/web_cont_benchmark.py create mode 100644 BENCHMARKING/web_unik_benchmark.py create mode 100644 DEPLOYMENT/README.md create mode 100644 DEPLOYMENT/deploy_containers.sh create mode 100644 DEPLOYMENT/deploy_unikernels.sh create mode 100644 DEPLOYMENT/pre_deployment_installation.sh create mode 100644 MEDIA/Benchmark 2.png create mode 100644 MEDIA/Benchmark.png create mode 100644 MEDIA/Benchmark.xml create mode 100644 MEDIA/CETIC.xml create mode 100644 MEDIA/PoC Topology.png create mode 100644 MEDIA/hypervisor_container_unikernel.jpg create mode 100644 MEDIA/mutable-vs-immutable-update.PNG create mode 100644 MEDIA/normal_application_stack.PNG create mode 100644 MEDIA/unikernel_application_stack.PNG create mode 100644 MEDIA/unikernel_network.PNG create mode 100644 MEDIA/vms-containers-unikernels.PNG create mode 100644 SOURCE/CONTAINER/DNS/Dockerfile create mode 100644 SOURCE/CONTAINER/DNS/compile.sh create mode 100644 SOURCE/CONTAINER/DNS/create_container.sh create mode 100644 SOURCE/CONTAINER/DNS/dnsServer.cpp create mode 100644 SOURCE/CONTAINER/DNS/run_service.sh create mode 100644 SOURCE/CONTAINER/DNS/start.sh create mode 100644 SOURCE/CONTAINER/Dockerfile create mode 100644 SOURCE/CONTAINER/README.md create mode 100644 SOURCE/CONTAINER/WebServer/Dockerfile create mode 100644 SOURCE/CONTAINER/WebServer/compile.sh create mode 100644 SOURCE/CONTAINER/WebServer/create_container.sh create mode 100644 SOURCE/CONTAINER/WebServer/index.html create mode 100644 SOURCE/CONTAINER/WebServer/run_service.sh create mode 100644 SOURCE/CONTAINER/WebServer/start.sh create mode 100644 SOURCE/CONTAINER/WebServer/webServer.cpp create mode 100644 SOURCE/CONTAINER/create_compiler.sh create mode 100644 SOURCE/README.md create mode 100644 SOURCE/UNIKERNEL/DNS/CMakeLists.txt create mode 100644 SOURCE/UNIKERNEL/DNS/cmake_build.sh create mode 100644 SOURCE/UNIKERNEL/DNS/config.json create mode 100644 SOURCE/UNIKERNEL/DNS/service.cpp create mode 100644 SOURCE/UNIKERNEL/DNS/vm.json create mode 100644 SOURCE/UNIKERNEL/Firewall/CMakeLists.txt create mode 100644 SOURCE/UNIKERNEL/Firewall/cmake_build.sh create mode 100644 SOURCE/UNIKERNEL/Firewall/nacl.txt create mode 100644 SOURCE/UNIKERNEL/Firewall/service.cpp create mode 100644 SOURCE/UNIKERNEL/Firewall/vm.json create mode 100644 SOURCE/UNIKERNEL/Router/CMakeLists.txt create mode 100644 SOURCE/UNIKERNEL/Router/cmake_build.sh create mode 100644 SOURCE/UNIKERNEL/Router/config.json create mode 100644 SOURCE/UNIKERNEL/Router/service.cpp create mode 100644 SOURCE/UNIKERNEL/Router/vm.json create mode 100644 SOURCE/UNIKERNEL/WebServer/CMakeLists.txt create mode 100644 SOURCE/UNIKERNEL/WebServer/cmake_build.sh create mode 100644 SOURCE/UNIKERNEL/WebServer/config.json create mode 100644 SOURCE/UNIKERNEL/WebServer/disk/index.html create mode 100644 SOURCE/UNIKERNEL/WebServer/service.cpp create mode 100644 SOURCE/UNIKERNEL/external.xml create mode 100644 SOURCE/UNIKERNEL/firewall.xml create mode 100644 SOURCE/UNIKERNEL/internal.xml diff --git a/BENCHMARKING/README.md b/BENCHMARKING/README.md new file mode 100644 index 0000000..5fdd0b2 --- /dev/null +++ b/BENCHMARKING/README.md @@ -0,0 +1,62 @@ +# Benchmarking + +This section provides the script to launch and reproduce the benchmarks perfromed for this project (and whoses results are posted on the root README file). + +## Preparing the environment + +Prior to launching the benchmarks, you must launch the [pre deployment script](https://git.cetic.be/stages/unikernels/blob/feature/stagelongree2018/DEPLOYMENT/pre_deployment_installation.sh) provided in the DEPLOYMENT folder. + +Then you must install the benchmarking tools using the [install\_bench\_tools.sh](https://git.cetic.be/stages/unikernels/blob/feature/stagelongree2018/BENCHMARKING/install_bench_tools.sh) script. +This script will install the following tools: +* dnsperf and its dependencies for the DNS benchmark (by Nominum) +* wrk2 for the web server benchmark (by Gil Tene, based on original wrk by Will Glozer) + +## Launching the target instance + +To launch an instance to benchmark, launch the **bench_*.sh** scripts: +* bench\_container\_dns.sh +* bench\_container\_web.sh +* bench\_unikernel\_dns.sh +* bench\_unikernel\_web.sh + +The scripts will: +* build the unikernel/container +* stop all running VMs and containers +* launch the unikernel/container, attaching it to the default network + +If you're launching a container, the ports will be mapped on launch. +If you're launching a unikernel, two rules will be inserted in iptables to allow port forwarding to the internal network. + +## Launching the benchmark + +The benchmark scripts are written in python and make use of the tools installed with the install\_bench\_tools.sh script. + +The web and DNS server benchmarking scripts are written to use 4 threads and simulate 100 virtual connections to the target server. + +### Web server benchmark + +To launch the web server, user `python3 web_unik_benchmark.py [server_ip_address]`. + +The benchmark will send HTTP requests to the server for 5 minutes, starting at a pace of 100 queries per second. After 5 minutes it will save the data in a .csv file and then will relaunch the process incrementing by another 100 queries per second. + +### DNS server benchmark + +To launch the web server, user `python3 web__benchmark.py [server_ip_address]`. + +The benchmark will send DNS requests to the server for 5 minutes, starting at a pace of 100 queries per second. After 5 minutes it will save the data in a .csv file and then will relaunch the process incrementing by another 100 queries per second. + +### Boot time benchmark + +To launch the web server, user `python3 startup__benchmark.py [starting number of instances]`. + +The benchmark will start by building and launching the given number of VM or container instances. Then, for 20 minutes, it will send the stop a random instance, send the start command and calculate the time between the start command being sent, and when the target instance responds to a single ping. For each stop/start process, the recorded time is then inserted into a csv file. After 20 minutes, the number of instances is incremented by 10 and the process is repeated. This process repeats itself until 140 instances are launched. + +## Cleaning up the environment + +The individual instance scripts do not stop the instances launched, this needs to be done manually. + +However, each instance start script will stop the currently running containers and virtual machines, as will the boot time benchmark scripts. + +To clean up the iptable rules created for the unikernels use the `./bench_unikernel_cleanup.sh` script. + +To clean up all the instances and iptable rule use the `./cleanup_all.sh` script. diff --git a/BENCHMARKING/RESULTS/combined.xlsx b/BENCHMARKING/RESULTS/combined.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3c68fcaa13a28de5c57a359cd02797a4cba3ca7e GIT binary patch literal 135980 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 z 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

oR>wk_OO zsEa96hW3#q!vJKGO}T}iDfV_#^(@iv5u9pH$`}vMz{`1=Mhe-jmOCg#1PAHwHJ>dm zRErEUEV~OuM%C4?Mq@Z@Qb+QXYn^(Rtw5zj{&+Rp;jV zv6gOL-+_;7+?L9c5r*XPrFc&2fM$MeWW#{H_Z);@E!tMwI)0RoPp+uXd>4jy&K4x$o#!>9!#E6SeXYt;j{UD*Avxn<9dm z6bjT0vB3Kr_Qrt1oR&@^`8m!PntY76%qYxJM)B=K0+9WVtrLCfj)|U7g@qC|46qzy zT-i9x2cvYuq(=d>-$@D&RvXV25qt1$onDd#e5^T9Si1~tiRZJy&0yx|YD1kzg2>1bm9 zFfHec=IOOY`k;&E0U*q3wOZ=Ma!|W#!}~jkD8I&y@^tA&4WW&I>;ATP=gTu}=?@kz zr3v%3M=BuquX8M{mn|YK9x~QTFK%$G`Ked+>F1*T-QQ7nQreY*n_P0y#9~97!X%rb zF9=uIr;co*p|RA0Whq;rgF53GasgMyW*f~XST{d12+ptq^V(*|<#71lt9mcJ=vQB6 zp1VpZp7dOa4F{`B8WW_02>1_+6SFw&L-BTM&57^jU2Npq?yE&hhw&R;)KtPKE>qkn zq}Mj8Xik31s}*%7y08%uHA6QTtf0b0`c$AY2TUtbm)_GWSw0XqDo|G`d=2#yqTV79 zY&JmrbR)~`YfQqJ7WFMYv;dvxo<>C6($|SdcM89gEs8ieo!&&~RF$QcwFyu7k9;O} zo3u(V6wuTJY{2%ENEBMGGMbXCIEM!q6_*|fRVlaO{ZvNv@$BshUGWC`DS3YDk6?#SgNe_JQSW}eYoy+vhiea03>zM|V z8Q(Ti7qq)Ero>WsS=!gCd#ir81eU>kW*mq_Vxl?^R@@snDaFY`)!}U!{0prqHK=wu)pJsUDlrEOvBCLn=ncgw z_1-?GJDfEOW_(7ulo9L%b+T+M5*1wP)Z$80R3VwD_#-g~M?;3}peX|<%Ag@m(qPeU#Co>9M(7gbJ;0hXZ-?<0lp+v z>_E@AoJ%S80jC@$>6rq?B<;%UzV~|zqzNa8uQB!R_cP~~GV_Ej zA3d?uvU_Cj{FkbP$JySEw>Bs9WuIwcD_48#9OFMUCWJt)VA|Q@m9uZU=|) z&Mw9G2Mw;6oe#ih&wNViCHnhb@6P;UW~i4nG3m=_rkwGbT0lmiJXFJT)Nd5IyZ2{2 zuB_5m1F{V}Wm&ZhhCS55iiqnPGitgx*N-l}JaJSo%I_%81%F{d@b(uJiDLqw2)j2H z;?PSofZIuFD%zeAKZU1MhByla?BqJkKU7}ud$z{DxbyD~o#v^Pm;FN54lGIx=@!P@ z$^EtAlHbdA}h(lY7!^QZpv zG~14#lY&?~;m13ozeG2wHUz7S1k^M>IIjCW?!{qv%{XNW#p8`s?Z71os~ioEl57Ys zT0FjcpVNi?3I;OQ3^QZ->&nt{ws$)mO}A(JI$k5b5BKco4Gia_V>65kJ34{oUYFzS zLantM-fOI%e!au&t7B#%{8WRKNGrk)38>zgW-NGrFfVZDmoJB3*1Yb-U8q&~?b?@ZdQWFhPnp`hd;{Fnu-~Qgthdh|3(G@6og*@jl=s>~mM6|@LM$(<7s?DX_t-=b~ZPtLZP#_wG~@6kWt^S6+I<*wGW7n!6eU& zzIHwHaDAicKAJP^H2SAklfwr%RTo$}S3rFP2Y6knqQedu5ei4Y23g+FkR(z1EvlAp z&h^GBl}-V+oFRS{lm`f6=3I1aofGuyP$x07691F_4Lpi2e|QEEns86K`kp=QmKH)x zAgSTVLz^4%%%nv0wz7}cv+Reso(Hx!yN|7hG-m~v8OdGpzH^TAvaGOGXvVGdCoqAT zv+b@gzP2r8OvX9Xv5Q;|&Up(5njN9v+rwFw=={v9q0oK!=d0w;VDA*;&g#VMu5(ID zpW%x+z0c!E^>*JiES^_>X68QlLFbXV0OR-_cUra!C}r-g5LsN>o;!^{f9^4aHgZDa zmQ07aiQgiP7d`KdDLP#^*VD(8>c}oOF$(d1{bI+a`2JX@uZkYEA}1Zy5v`js|Yzjb#FI1-OmP31gpc z7+kfRzcH!2OINGdSmI2>t6lHpznz);_U=W`o`Z7x@&#W%lKV7el=%gb*mmk3`rS^# zxR6-eJs^0pG9h+DVVcrXFFh^suB!#b`<_==OM@$|MFO%*ay9(LZApP@Y*T^BT5f6c zc?;2Q&#J3^_I)>AeW`$9PLxhGLDba2wy|R2YT{lWb&`|=?elQtlNpc$6Cnp)3F@%J zqgs|vs--=nhuYK)d?l7sD2n8$T@h6&AYiIsALUvM_>IsT#X51f!yUH(3R1hPKb+WO zdW6GyCb{zh<8nb8Hki5$iLpR`O!O=(E5E5(yjykb!kcYBATbZt6VOA#r$D1mdb8-? z?piKijm<}BkWh6Y_QQt`23@}t83ccJ>oncUUTjja{?)>@OFfwn zkA($QHa!EqDJOK?{tyv?6Bx)gv@y87?c2fvk~iUVu0=57PewN#{5pgUv03`QL>w7~-Ma zg$Dk>v{O{o8F>xKsLOZaB`kkvnJL&#rFXuRZWbiXKP(?=d6Q1);{r!_rbf%=b3Hlc zbiXS&9GO6xUmSvS1XbLZLi)-9WNn%=0VJ_N(0x>gne3<`e@0l5{Y04_glJy1Vz_ar zwti&A^)3gvG%65snbGubUEp6z$gGB6 zZ`NiTGHK*4xF+@v)1G<6ryUlCy7zNWU<1R~viT*#1%n z`)y%vVRC*ausRWY@_QXWvlI*C`d{f)zb`t>t^YB0x3jkPaA(#wVt)ITV9ZL%%#&3+ z%-osXX;w;{@RpQcdG4%~&q=Fn6-*Z-n4Kc_yDMy1Nmk0=ee=tsU+4CgJ@fS3{DZB5 z<4o0?KO6TOa8taR)x%G>+6K1HyXyzgKbHw49qvy{i z|2n?EdXJUzo>C>ajd{A=|Hp{SIlm?4*C=779I%X7QDHvYEHZD4{`6();+7QVB(Z-+ zfEt1QReH=*w&5si2)V~RtC%hFu(Niu{`+%FH^OVP?@m5sW20c%S={Kpy`>w!dY82^ z?KXQ}Tg2VO8zE^jcvN~_ek_- zf-F t6<7z}mIT%Z*-gUs9lr=$50?M*%TA^|8ylM}^Q&tg8{6ew%qJ1H{|BgmJPiN< literal 0 HcmV?d00001 diff --git a/BENCHMARKING/RESULTS/dns_cont_benchmark.csv b/BENCHMARKING/RESULTS/dns_cont_benchmark.csv new file mode 100644 index 0000000..2c51b2b --- /dev/null +++ b/BENCHMARKING/RESULTS/dns_cont_benchmark.csv @@ -0,0 +1,28 @@ +TEST_RUN,QUERIES_SENT,QUERIES_COMPLETED,QUERIES_LOST,QUERIES_PER_SECOND,AVG_LATENCY_SECONDS,MIN,MAX,LATENCY_STD_DEV_SECONDS +1,30300,30300,0,100.999942,0.000435,0.000677,0.038042,0.000463 +2,60600,60600,0,201.999868,0.000413,0.000548,0.045776,0.000575 +3,90900,90900,0,302.999799,0.000410,0.000522,0.045355,0.000601 +4,120000,120000,0,399.999763,0.000469,0.000531,0.047507,0.000620 +5,150300,150300,0,500.999641,0.000401,0.000499,0.050776,0.000639 +6,180600,180600,0,601.999573,0.000399,0.000448,0.048009,0.000649 +7,210900,210900,0,702.999531,0.000397,0.000436,0.048220,0.000649 +8,240000,240000,0,799.999397,0.000457,0.000530,0.050598,0.000664 +9,270300,270300,0,900.999381,0.000405,0.000447,0.049469,0.000682 +10,300600,300600,0,1001.999476,0.000387,0.000452,0.048770,0.000673 +11,330900,330900,0,1102.999158,0.000385,0.000463,0.051058,0.000625 +12,360000,360000,0,1199.999244,0.000468,0.000455,0.064912,0.000742 +13,390300,390300,0,1300.999553,0.000407,0.000430,0.053302,0.000715 +14,420600,420600,0,1401.999248,0.000368,0.000443,0.050178,0.000646 +15,450900,450900,0,1502.999083,0.000398,0.000420,0.049944,0.000696 +16,480000,480000,0,1599.998837,0.000477,0.000455,0.062380,0.000803 +17,510300,510300,0,1700.998883,0.000386,0.000421,0.051476,0.000672 +18,540600,540600,0,1801.998793,0.000376,0.000405,0.061594,0.000691 +19,570900,570900,0,1902.998744,0.000401,0.000392,0.074226,0.000725 +20,600000,600000,0,1999.999260,0.000446,0.000447,0.060142,0.000730 +21,630300,630300,0,2100.998823,0.000386,0.000388,0.055958,0.000697 +22,660600,660600,0,2201.998349,0.000384,0.000394,0.063996,0.000722 +23,690900,690900,0,2302.998572,0.000389,0.000395,0.052586,0.000711 +24,720000,720000,0,2399.998472,0.000435,0.000440,0.057137,0.000699 +25,750300,750300,0,2500.998533,0.000402,0.000391,0.072312,0.000743 +26,780600,780600,0,2601.998439,0.000385,0.000389,0.064135,0.000734 +27,810900,810900,0,2702.998423,0.000386,0.000393,0.073673,0.000745 diff --git a/BENCHMARKING/RESULTS/dns_unik_benchmark.csv b/BENCHMARKING/RESULTS/dns_unik_benchmark.csv new file mode 100644 index 0000000..fad4a36 --- /dev/null +++ b/BENCHMARKING/RESULTS/dns_unik_benchmark.csv @@ -0,0 +1,28 @@ +TEST_RUN,QUERIES_SENT,QUERIES_COMPLETED,QUERIES_LOST,QUERIES_PER_SECOND,AVG_LATENCY_SECONDS,MIN,MAX,LATENCY_STD_DEV_SECONDS +1,30300,30300,0,100.999941,0.006355,0.005415,0.098812,0.002519 +2,60600,60600,0,201.999860,0.005617,0.005722,0.080283,0.002087 +3,90900,90900,0,302.999889,0.005715,0.005411,0.101761,0.002100 +4,120000,120000,0,399.999672,0.006401,0.005320,0.158964,0.001903 +5,150300,150300,0,500.999711,0.005402,0.004774,0.271349,0.003626 +6,180600,180600,0,601.999603,0.006268,0.004755,0.725090,0.007226 +7,210900,210900,0,702.999536,0.011069,0.004425,0.618359,0.015394 +8,240000,240000,0,799.937413,0.037150,0.004729,0.615609,0.036375 +9,253892,253892,0,846.044238,0.118990,0.041761,8.319091,0.055582 +10,255867,255867,0,852.822877,0.118098,0.046127,5.168513,0.024260 +11,255428,255428,0,851.255666,0.118290,0.046994,4.080020,0.019123 +12,253791,253791,0,845.691776,0.119118,0.046585,7.608933,0.036147 +13,254861,254861,0,849.297151,0.118604,0.042165,4.014139,0.018720 +14,254055,254055,0,846.612175,0.118889,0.037720,7.076644,0.033647 +15,255951,255951,0,852.928016,0.118049,0.035549,0.581656,0.006604 +16,254741,254741,0,849.026353,0.118526,0.044648,2.758404,0.013401 +17,255579,255579,0,851.654708,0.118254,0.037696,0.587303,0.006576 +18,250233,250233,0,834.063092,0.120648,0.050919,6.691459,0.042768 +19,253722,253722,0,845.695581,0.119023,0.051268,0.693072,0.007301 +20,252384,252384,0,841.134621,0.119705,0.042426,7.830838,0.039162 +21,255698,255698,0,852.217853,0.118158,0.043026,0.596498,0.006608 +22,251706,251706,0,838.762075,0.120080,0.042971,7.658614,0.042178 +23,254452,254452,0,848.033594,0.118793,0.047975,0.570417,0.006341 +24,252446,252446,0,841.183336,0.119791,0.046854,7.977354,0.037990 +25,253242,253242,0,843.946885,0.119344,0.046943,0.708790,0.006546 +26,252173,252173,0,840.376755,0.119819,0.049304,6.509316,0.030894 +27,250928,250928,0,836.353101,0.120345,0.042280,6.734916,0.037482 diff --git a/BENCHMARKING/RESULTS/startup_cont_benchmark.csv b/BENCHMARKING/RESULTS/startup_cont_benchmark.csv new file mode 100644 index 0000000..b4e1d59 --- /dev/null +++ b/BENCHMARKING/RESULTS/startup_cont_benchmark.csv @@ -0,0 +1,1068 @@ +NBR_OF_GUESTS,GUEST_STOPPED,STARTUP_TIME_SECONDS +10,VM_7,0.005545 +10,VM_6,0.006002 +10,VM_3,0.005724 +10,VM_8,0.004414 +10,VM_7,0.006721 +10,VM_7,0.004554 +10,VM_2,0.0056 +10,VM_7,0.005106 +10,VM_1,0.005371 +10,VM_3,0.005556 +10,VM_8,0.005782 +10,VM_9,0.006337 +10,VM_8,0.006104 +10,VM_9,0.005567 +10,VM_0,0.005403 +10,VM_2,0.00571 +10,VM_1,0.007848 +10,VM_9,0.004975 +10,VM_6,0.00632 +10,VM_2,0.006977 +10,VM_2,0.009633 +10,VM_0,0.005214 +10,VM_4,0.006876 +10,VM_9,0.007372 +10,VM_3,0.006119 +10,VM_9,0.005278 +10,VM_9,0.006147 +10,VM_4,0.006082 +10,VM_5,0.013269 +10,VM_5,0.005984 +10,VM_1,0.006004 +10,VM_8,0.005764 +10,VM_2,0.005029 +10,VM_1,0.010681 +10,VM_1,0.005064 +10,VM_3,0.004942 +10,VM_5,0.006298 +10,VM_8,0.006918 +10,VM_6,0.005915 +10,VM_8,0.00519 +10,VM_7,0.006729 +10,VM_9,0.005906 +10,VM_3,0.006618 +10,VM_7,0.007958 +10,VM_6,0.004867 +10,VM_4,0.012777 +10,VM_5,0.005884 +10,VM_9,0.005034 +10,VM_2,0.005835 +10,VM_4,0.005421 +10,VM_1,0.006554 +10,VM_4,0.005275 +10,VM_8,0.005959 +10,VM_1,0.006517 +10,VM_1,0.007048 +10,VM_3,0.019142 +10,VM_2,0.006845 +10,VM_5,0.017689 +10,VM_8,0.006113 +10,VM_3,0.005903 +10,VM_0,0.004584 +10,VM_3,0.010075 +10,VM_9,0.011123 +10,VM_1,0.006544 +10,VM_5,0.006979 +10,VM_0,0.00478 +10,VM_8,0.00538 +10,VM_9,0.005784 +10,VM_2,0.00626 +10,VM_7,0.005714 +10,VM_1,0.006642 +10,VM_6,0.006585 +10,VM_4,0.014057 +10,VM_5,0.004188 +10,VM_4,0.006646 +10,VM_5,0.004923 +10,VM_7,0.00443 +10,VM_3,0.004846 +20,VM_5,0.004239 +20,VM_0,0.005422 +20,VM_12,0.005913 +20,VM_2,0.005359 +20,VM_13,0.006721 +20,VM_19,0.004208 +20,VM_15,0.005432 +20,VM_14,0.004884 +20,VM_18,0.005821 +20,VM_16,0.017886 +20,VM_8,0.00556 +20,VM_18,0.003964 +20,VM_7,0.005532 +20,VM_5,0.004855 +20,VM_7,0.005807 +20,VM_7,0.006134 +20,VM_7,0.005669 +20,VM_17,0.004062 +20,VM_0,0.006276 +20,VM_12,0.005716 +20,VM_18,0.006077 +20,VM_3,0.007004 +20,VM_11,0.005851 +20,VM_12,0.005258 +20,VM_16,0.007432 +20,VM_11,0.005711 +20,VM_6,0.008029 +20,VM_13,0.005397 +20,VM_3,0.005484 +20,VM_16,0.006758 +20,VM_19,0.008466 +20,VM_15,0.006203 +20,VM_10,0.010629 +20,VM_18,0.005271 +20,VM_13,0.006732 +20,VM_13,0.00495 +20,VM_13,0.005344 +20,VM_6,0.005887 +20,VM_12,0.007968 +20,VM_7,0.004574 +20,VM_16,0.006039 +20,VM_10,0.005547 +20,VM_4,0.005833 +20,VM_5,0.005572 +20,VM_13,0.00666 +20,VM_1,0.004872 +20,VM_10,0.006188 +20,VM_16,0.004852 +20,VM_5,0.007977 +20,VM_17,0.005594 +20,VM_13,0.004919 +20,VM_4,0.007081 +20,VM_17,0.005279 +20,VM_2,0.008127 +20,VM_7,0.005499 +20,VM_3,0.006768 +20,VM_13,0.006397 +20,VM_19,0.005332 +20,VM_16,0.005337 +20,VM_10,0.004637 +20,VM_17,0.005281 +20,VM_10,0.006284 +20,VM_1,0.006163 +20,VM_19,0.005039 +20,VM_13,0.00567 +20,VM_16,0.005531 +20,VM_8,0.005021 +20,VM_11,0.005722 +20,VM_17,0.006898 +20,VM_18,0.004515 +20,VM_10,0.005673 +20,VM_8,0.004451 +20,VM_6,0.005668 +20,VM_1,0.005798 +20,VM_2,0.005723 +20,VM_16,0.005628 +30,VM_17,0.005497 +30,VM_14,0.008395 +30,VM_13,0.007278 +30,VM_1,0.01344 +30,VM_22,0.024871 +30,VM_5,0.006226 +30,VM_26,0.005716 +30,VM_20,0.005522 +30,VM_20,0.004282 +30,VM_2,0.005972 +30,VM_19,0.005851 +30,VM_24,0.003039 +30,VM_20,0.00576 +30,VM_13,0.004479 +30,VM_17,0.005992 +30,VM_13,0.009284 +30,VM_16,0.005838 +30,VM_15,0.006378 +30,VM_3,0.005801 +30,VM_17,0.005686 +30,VM_0,0.00571 +30,VM_13,0.005877 +30,VM_27,0.021626 +30,VM_24,0.005324 +30,VM_28,0.019304 +30,VM_4,0.005487 +30,VM_27,0.005814 +30,VM_23,0.022145 +30,VM_22,0.005246 +30,VM_9,0.006332 +30,VM_8,0.007115 +30,VM_18,0.005221 +30,VM_7,0.005274 +30,VM_20,0.005416 +30,VM_11,0.005416 +30,VM_28,0.005922 +30,VM_11,0.005683 +30,VM_18,0.008173 +30,VM_21,0.020847 +30,VM_27,0.005753 +30,VM_21,0.005613 +30,VM_24,0.00987 +30,VM_21,0.006265 +30,VM_1,0.005339 +30,VM_26,0.00537 +30,VM_1,0.007187 +30,VM_29,0.017797 +30,VM_11,0.003756 +30,VM_24,0.00599 +30,VM_24,0.006363 +30,VM_27,0.006124 +30,VM_23,0.005596 +30,VM_17,0.005425 +30,VM_25,0.034057 +30,VM_19,0.005786 +30,VM_10,0.005766 +30,VM_24,0.006455 +30,VM_6,0.006144 +30,VM_9,0.005177 +30,VM_21,0.005681 +30,VM_5,0.004841 +30,VM_22,0.005282 +30,VM_0,0.005286 +30,VM_28,0.008208 +30,VM_10,0.005825 +30,VM_16,0.005703 +30,VM_21,0.006955 +30,VM_8,0.00574 +30,VM_9,0.008162 +30,VM_12,0.005757 +30,VM_27,0.006946 +30,VM_16,0.005112 +30,VM_10,0.006547 +30,VM_9,0.004332 +30,VM_22,0.005681 +30,VM_19,0.005906 +40,VM_12,0.007583 +40,VM_2,0.005628 +40,VM_32,0.02445 +40,VM_29,0.005185 +40,VM_30,0.006581 +40,VM_6,0.005983 +40,VM_17,0.00557 +40,VM_0,0.00735 +40,VM_20,0.005558 +40,VM_38,0.028951 +40,VM_28,0.006051 +40,VM_12,0.005618 +40,VM_7,0.004618 +40,VM_27,0.005814 +40,VM_4,0.009118 +40,VM_31,0.011334 +40,VM_24,0.005823 +40,VM_8,0.005881 +40,VM_23,0.006183 +40,VM_27,0.004581 +40,VM_3,0.005337 +40,VM_16,0.004626 +40,VM_4,0.006215 +40,VM_26,0.005536 +40,VM_32,0.006132 +40,VM_34,0.015898 +40,VM_15,0.006234 +40,VM_22,0.006396 +40,VM_17,0.00611 +40,VM_19,0.005066 +40,VM_6,0.005944 +40,VM_25,0.00621 +40,VM_34,0.006678 +40,VM_19,0.00416 +40,VM_14,0.006221 +40,VM_33,0.025413 +40,VM_36,0.005257 +40,VM_34,0.004958 +40,VM_20,0.006995 +40,VM_33,0.005824 +40,VM_26,0.006384 +40,VM_29,0.005073 +40,VM_34,0.005953 +40,VM_33,0.005212 +40,VM_2,0.005442 +40,VM_16,0.005517 +40,VM_24,0.005796 +40,VM_9,0.005931 +40,VM_1,0.005113 +40,VM_6,0.006139 +40,VM_7,0.00521 +40,VM_15,0.006582 +40,VM_34,0.00487 +40,VM_2,0.005072 +40,VM_5,0.006314 +40,VM_6,0.004219 +40,VM_15,0.006459 +40,VM_10,0.004874 +40,VM_20,0.005342 +40,VM_18,0.006433 +40,VM_17,0.006084 +40,VM_9,0.00933 +40,VM_29,0.004551 +40,VM_23,0.006127 +40,VM_1,0.006479 +40,VM_3,0.005396 +40,VM_34,0.004945 +40,VM_6,0.005757 +40,VM_37,0.022602 +40,VM_22,0.005252 +40,VM_34,0.006854 +40,VM_19,0.005727 +40,VM_35,0.008089 +40,VM_37,0.005061 +40,VM_24,0.006932 +40,VM_3,0.006618 +50,VM_7,0.005517 +50,VM_48,0.006434 +50,VM_39,0.024111 +50,VM_35,0.005051 +50,VM_40,0.030847 +50,VM_41,0.019922 +50,VM_19,0.004435 +50,VM_36,0.005576 +50,VM_16,0.006058 +50,VM_41,0.006225 +50,VM_39,0.00659 +50,VM_45,0.020195 +50,VM_39,0.007264 +50,VM_5,0.004696 +50,VM_9,0.005828 +50,VM_24,0.005646 +50,VM_1,0.005628 +50,VM_34,0.00603 +50,VM_27,0.005352 +50,VM_0,0.005724 +50,VM_5,0.006073 +50,VM_39,0.005558 +50,VM_41,0.006172 +50,VM_49,0.021327 +50,VM_4,0.005764 +50,VM_6,0.005283 +50,VM_44,0.018877 +50,VM_37,0.005501 +50,VM_24,0.005727 +50,VM_2,0.005501 +50,VM_43,0.020414 +50,VM_45,0.005029 +50,VM_24,0.00519 +50,VM_8,0.004628 +50,VM_25,0.006069 +50,VM_16,0.007162 +50,VM_11,0.005198 +50,VM_43,0.006221 +50,VM_7,0.006232 +50,VM_30,0.006037 +50,VM_27,0.004827 +50,VM_33,0.006942 +50,VM_41,0.006956 +50,VM_46,0.026356 +50,VM_48,0.005463 +50,VM_17,0.005012 +50,VM_37,0.006333 +50,VM_28,0.005177 +50,VM_48,0.005293 +50,VM_47,0.025524 +50,VM_0,0.005632 +50,VM_41,0.004928 +50,VM_35,0.005724 +50,VM_14,0.003774 +50,VM_49,0.006015 +50,VM_18,0.009594 +50,VM_9,0.006696 +50,VM_23,0.006597 +50,VM_9,0.005575 +50,VM_22,0.006622 +50,VM_25,0.005003 +50,VM_18,0.005287 +50,VM_21,0.00523 +50,VM_25,0.006146 +50,VM_24,0.005531 +50,VM_31,0.005541 +50,VM_32,0.006222 +50,VM_43,0.005231 +50,VM_37,0.005603 +50,VM_21,0.005182 +50,VM_34,0.006672 +50,VM_43,0.008377 +50,VM_7,0.005721 +50,VM_7,0.006687 +50,VM_42,0.011954 +50,VM_39,0.006218 +60,VM_35,0.005259 +60,VM_3,0.005582 +60,VM_11,0.006055 +60,VM_41,0.005669 +60,VM_16,0.005314 +60,VM_16,0.006856 +60,VM_15,0.006484 +60,VM_23,0.005579 +60,VM_53,0.010976 +60,VM_54,0.026014 +60,VM_44,0.006396 +60,VM_11,0.006071 +60,VM_58,0.030679 +60,VM_19,0.004847 +60,VM_59,0.029281 +60,VM_24,0.003928 +60,VM_37,0.006058 +60,VM_22,0.005248 +60,VM_13,0.006312 +60,VM_37,0.003621 +60,VM_53,0.005576 +60,VM_57,0.008582 +60,VM_21,0.0071 +60,VM_22,0.005837 +60,VM_40,0.006104 +60,VM_15,0.005663 +60,VM_7,0.004289 +60,VM_34,0.006171 +60,VM_6,0.005968 +60,VM_49,0.005676 +60,VM_59,0.005772 +60,VM_7,0.007009 +60,VM_43,0.005576 +60,VM_16,0.006028 +60,VM_10,0.007065 +60,VM_31,0.006594 +60,VM_45,0.005988 +60,VM_6,0.008751 +60,VM_51,0.030741 +60,VM_55,0.023613 +60,VM_13,0.004394 +60,VM_18,0.005769 +60,VM_35,0.005893 +60,VM_6,0.006726 +60,VM_37,0.005596 +60,VM_35,0.006606 +60,VM_31,0.014693 +60,VM_10,0.004918 +60,VM_59,0.005583 +60,VM_1,0.005017 +60,VM_59,0.00625 +60,VM_36,0.005905 +60,VM_29,0.005675 +60,VM_25,0.007421 +60,VM_44,0.005269 +60,VM_13,0.004878 +60,VM_1,0.005608 +60,VM_29,0.004293 +60,VM_56,0.025779 +60,VM_40,0.006112 +60,VM_42,0.005871 +60,VM_12,0.004952 +60,VM_13,0.008583 +60,VM_51,0.007122 +60,VM_50,0.009826 +60,VM_49,0.023681 +60,VM_33,0.011649 +60,VM_34,0.022403 +60,VM_55,0.015799 +60,VM_38,0.020244 +60,VM_1,0.022006 +60,VM_21,0.033312 +60,VM_50,0.005308 +60,VM_15,0.02426 +60,VM_6,0.01121 +60,VM_25,0.022779 +60,VM_57,0.008282 +70,VM_7,0.004957 +70,VM_6,0.005691 +70,VM_68,0.010237 +70,VM_45,0.012373 +70,VM_40,0.032779 +70,VM_20,0.028313 +70,VM_53,0.009549 +70,VM_37,0.036077 +70,VM_45,0.005753 +70,VM_27,0.00797 +70,VM_37,0.006005 +70,VM_65,0.02443 +70,VM_44,0.031203 +70,VM_48,0.017968 +70,VM_3,0.032803 +70,VM_4,0.023315 +70,VM_22,0.032589 +70,VM_14,0.006003 +70,VM_17,0.009747 +70,VM_46,0.02226 +70,VM_13,0.005119 +70,VM_66,0.021583 +70,VM_5,0.012542 +70,VM_1,0.004895 +70,VM_44,0.005601 +70,VM_24,0.017416 +70,VM_68,0.012321 +70,VM_38,0.006645 +70,VM_39,0.014548 +70,VM_44,0.004897 +70,VM_42,0.016844 +70,VM_52,0.019842 +70,VM_39,0.006519 +70,VM_55,0.004898 +70,VM_0,0.030665 +70,VM_1,0.004437 +70,VM_16,0.02324 +70,VM_23,0.013668 +70,VM_67,0.033708 +70,VM_68,0.00584 +70,VM_66,0.004915 +70,VM_38,0.005999 +70,VM_7,0.006446 +70,VM_51,0.006931 +70,VM_11,0.031611 +70,VM_14,0.004025 +70,VM_55,0.005658 +70,VM_49,0.004841 +70,VM_8,0.021818 +70,VM_36,0.02359 +70,VM_60,0.005233 +70,VM_20,0.00459 +70,VM_29,0.003766 +70,VM_57,0.005291 +70,VM_61,0.025221 +70,VM_0,0.011606 +70,VM_12,0.007094 +70,VM_12,0.007174 +70,VM_51,0.00624 +70,VM_14,0.013554 +70,VM_64,0.01307 +70,VM_61,0.005975 +70,VM_46,0.005879 +70,VM_53,0.011094 +70,VM_28,0.026992 +70,VM_42,0.004172 +70,VM_5,0.005165 +70,VM_60,0.006445 +70,VM_69,0.003607 +70,VM_59,0.023994 +70,VM_0,0.004886 +70,VM_10,0.032864 +70,VM_62,0.011897 +70,VM_67,0.004896 +70,VM_1,0.005896 +80,VM_67,0.005949 +80,VM_20,0.006457 +80,VM_59,0.006569 +80,VM_64,0.006898 +80,VM_12,0.005593 +80,VM_63,0.004695 +80,VM_3,0.007885 +80,VM_8,0.005983 +80,VM_53,0.005304 +80,VM_68,0.006111 +80,VM_74,0.00986 +80,VM_25,0.005221 +80,VM_76,0.028994 +80,VM_42,0.015613 +80,VM_78,0.012043 +80,VM_15,0.006141 +80,VM_44,0.005167 +80,VM_8,0.005742 +80,VM_74,0.005653 +80,VM_61,0.006143 +80,VM_70,0.02632 +80,VM_64,0.004929 +80,VM_33,0.007394 +80,VM_72,0.011668 +80,VM_74,0.008003 +80,VM_53,0.005693 +80,VM_2,0.024595 +80,VM_40,0.005671 +80,VM_59,0.00592 +80,VM_77,0.029391 +80,VM_77,0.006401 +80,VM_24,0.00566 +80,VM_45,0.006553 +80,VM_26,0.022956 +80,VM_56,0.025696 +80,VM_25,0.006034 +80,VM_50,0.006689 +80,VM_69,0.006909 +80,VM_77,0.005795 +80,VM_30,0.016754 +80,VM_57,0.004983 +80,VM_23,0.007292 +80,VM_44,0.006381 +80,VM_71,0.015437 +80,VM_53,0.005276 +80,VM_4,0.006443 +80,VM_1,0.006236 +80,VM_14,0.005467 +80,VM_30,0.005219 +80,VM_67,0.007325 +80,VM_31,0.010071 +80,VM_39,0.005816 +80,VM_24,0.006563 +80,VM_13,0.00624 +80,VM_14,0.005578 +80,VM_15,0.006082 +80,VM_63,0.005474 +80,VM_72,0.00678 +80,VM_79,0.006951 +80,VM_40,0.005252 +80,VM_22,0.005014 +80,VM_69,0.006269 +80,VM_5,0.005306 +80,VM_69,0.006394 +80,VM_18,0.033364 +80,VM_62,0.005449 +80,VM_64,0.005726 +80,VM_37,0.006002 +80,VM_56,0.005888 +80,VM_19,0.013005 +80,VM_56,0.006435 +80,VM_8,0.005347 +80,VM_46,0.005799 +80,VM_25,0.006074 +80,VM_75,0.022684 +80,VM_44,0.027322 +80,VM_9,0.01492 +90,VM_44,0.00551 +90,VM_60,0.028697 +90,VM_26,0.036664 +90,VM_27,0.027214 +90,VM_5,0.009281 +90,VM_7,0.021962 +90,VM_26,0.006175 +90,VM_53,0.033376 +90,VM_3,0.013883 +90,VM_39,0.021694 +90,VM_57,0.008588 +90,VM_47,0.004674 +90,VM_30,0.017991 +90,VM_13,0.01352 +90,VM_58,0.033956 +90,VM_48,0.010381 +90,VM_59,0.015949 +90,VM_85,0.004447 +90,VM_57,0.005645 +90,VM_57,0.010181 +90,VM_68,0.006865 +90,VM_64,0.011625 +90,VM_67,0.006671 +90,VM_39,0.00566 +90,VM_24,0.008682 +90,VM_89,0.021377 +90,VM_38,0.004842 +90,VM_11,0.032475 +90,VM_58,0.00656 +90,VM_36,0.024161 +90,VM_77,0.028836 +90,VM_61,0.009598 +90,VM_15,0.020836 +90,VM_58,0.007255 +90,VM_8,0.005624 +90,VM_43,0.011547 +90,VM_65,0.019635 +90,VM_36,0.006255 +90,VM_1,0.02899 +90,VM_43,0.006126 +90,VM_33,0.028302 +90,VM_66,0.030367 +90,VM_59,0.006097 +90,VM_24,0.010517 +90,VM_27,0.006438 +90,VM_18,0.027236 +90,VM_14,0.022786 +90,VM_43,0.006476 +90,VM_87,0.033048 +90,VM_41,0.028901 +90,VM_5,0.010425 +90,VM_13,0.006457 +90,VM_89,0.005801 +90,VM_21,0.019315 +90,VM_25,0.006892 +90,VM_21,0.006064 +90,VM_64,0.005512 +90,VM_3,0.005937 +90,VM_67,0.00578 +90,VM_27,0.008058 +90,VM_16,0.017267 +90,VM_28,0.00628 +90,VM_68,0.005863 +90,VM_44,0.010967 +90,VM_54,0.015631 +90,VM_73,0.03316 +90,VM_82,0.031574 +90,VM_84,0.004459 +90,VM_22,0.007764 +90,VM_44,0.005448 +90,VM_35,0.034204 +90,VM_89,0.005523 +90,VM_33,0.005721 +90,VM_8,0.006421 +90,VM_24,0.010369 +100,VM_25,0.005702 +100,VM_56,0.007977 +100,VM_56,0.006331 +100,VM_13,0.010419 +100,VM_85,0.005919 +100,VM_92,0.033522 +100,VM_34,0.02934 +100,VM_64,0.00585 +100,VM_71,0.02966 +100,VM_67,0.009418 +100,VM_57,0.006145 +100,VM_17,0.016008 +100,VM_77,0.005352 +100,VM_98,0.025488 +100,VM_28,0.004464 +100,VM_59,0.006011 +100,VM_83,0.010766 +100,VM_36,0.006899 +100,VM_30,0.006279 +100,VM_2,0.013601 +100,VM_99,0.009566 +100,VM_42,0.021822 +100,VM_67,0.005258 +100,VM_92,0.005614 +100,VM_96,0.004232 +100,VM_94,0.015298 +100,VM_4,0.020057 +100,VM_54,0.006787 +100,VM_1,0.005784 +100,VM_59,0.005841 +100,VM_77,0.005199 +100,VM_92,0.005497 +100,VM_13,0.009653 +100,VM_87,0.005802 +100,VM_34,0.005468 +100,VM_18,0.006621 +100,VM_43,0.00657 +100,VM_56,0.004568 +100,VM_93,0.032599 +100,VM_77,0.004582 +100,VM_88,0.026521 +100,VM_39,0.007976 +100,VM_61,0.005546 +100,VM_8,0.006909 +100,VM_38,0.005482 +100,VM_68,0.005976 +100,VM_19,0.006767 +100,VM_24,0.006735 +100,VM_80,0.009805 +100,VM_11,0.005482 +100,VM_53,0.005367 +100,VM_40,0.029738 +100,VM_72,0.020552 +100,VM_93,0.004656 +100,VM_83,0.005585 +100,VM_0,0.03092 +100,VM_99,0.005999 +100,VM_34,0.005083 +100,VM_61,0.005339 +100,VM_72,0.0055 +100,VM_7,0.005688 +100,VM_64,0.005832 +100,VM_82,0.006253 +100,VM_8,0.007058 +100,VM_41,0.006022 +100,VM_61,0.010844 +100,VM_1,0.006831 +100,VM_41,0.00575 +100,VM_11,0.015686 +100,VM_71,0.020228 +100,VM_38,0.024204 +100,VM_74,0.004026 +100,VM_74,0.005421 +100,VM_31,0.034887 +100,VM_82,0.032354 +100,VM_43,0.006083 +100,VM_30,0.031528 +110,VM_102,0.013193 +110,VM_10,0.028989 +110,VM_63,0.034314 +110,VM_21,0.03157 +110,VM_101,0.004821 +110,VM_63,0.005799 +110,VM_73,0.02606 +110,VM_22,0.025773 +110,VM_50,0.030142 +110,VM_30,0.006646 +110,VM_93,0.016279 +110,VM_19,0.004254 +110,VM_68,0.01749 +110,VM_14,0.004796 +110,VM_74,0.006192 +110,VM_64,0.007189 +110,VM_54,0.008091 +110,VM_59,0.006692 +110,VM_17,0.007767 +110,VM_44,0.006629 +110,VM_83,0.015219 +110,VM_96,0.026843 +110,VM_25,0.029314 +110,VM_45,0.012908 +110,VM_85,0.00826 +110,VM_21,0.005611 +110,VM_58,0.035614 +110,VM_18,0.017948 +110,VM_58,0.006835 +110,VM_72,0.019978 +110,VM_37,0.017125 +110,VM_82,0.005552 +110,VM_61,0.005195 +110,VM_68,0.005837 +110,VM_63,0.006235 +110,VM_66,0.031609 +110,VM_97,0.027523 +110,VM_9,0.024398 +110,VM_8,0.028585 +110,VM_66,0.005711 +110,VM_12,0.022445 +110,VM_15,0.022889 +110,VM_20,0.027323 +110,VM_6,0.009623 +110,VM_77,0.029728 +110,VM_85,0.006677 +110,VM_92,0.030615 +110,VM_51,0.014579 +110,VM_93,0.014365 +110,VM_65,0.01658 +110,VM_83,0.005914 +110,VM_41,0.006326 +110,VM_83,0.005656 +110,VM_45,0.006171 +110,VM_8,0.007398 +110,VM_68,0.005315 +110,VM_11,0.005178 +110,VM_33,0.025385 +110,VM_88,0.030758 +110,VM_22,0.005697 +110,VM_61,0.004897 +110,VM_37,0.006176 +110,VM_43,0.00643 +110,VM_12,0.009062 +110,VM_53,0.014674 +110,VM_10,0.0069 +110,VM_43,0.005995 +110,VM_8,0.005165 +110,VM_14,0.005566 +110,VM_103,0.028317 +110,VM_83,0.009031 +110,VM_76,0.019935 +110,VM_49,0.024495 +110,VM_20,0.005324 +110,VM_6,0.006173 +110,VM_87,0.028446 +120,VM_33,0.006929 +120,VM_119,0.033679 +120,VM_70,0.026282 +120,VM_40,0.014883 +120,VM_90,0.026726 +120,VM_106,0.030914 +120,VM_33,0.005098 +120,VM_72,0.005887 +120,VM_17,0.004793 +120,VM_76,0.0063 +120,VM_43,0.004786 +120,VM_69,0.007767 +120,VM_77,0.006106 +120,VM_17,0.006804 +120,VM_5,0.012051 +120,VM_116,0.033613 +120,VM_14,0.005404 +120,VM_39,0.013097 +120,VM_5,0.005605 +120,VM_96,0.005913 +120,VM_45,0.005899 +120,VM_100,0.027859 +120,VM_102,0.006705 +120,VM_102,0.005582 +120,VM_6,0.005409 +120,VM_60,0.005382 +120,VM_13,0.009083 +120,VM_103,0.00741 +120,VM_7,0.031385 +120,VM_110,0.027276 +120,VM_68,0.005821 +120,VM_20,0.005803 +120,VM_77,0.005443 +120,VM_2,0.006337 +120,VM_109,0.033942 +120,VM_117,0.031806 +120,VM_30,0.005189 +120,VM_1,0.006121 +120,VM_7,0.00558 +120,VM_66,0.005555 +120,VM_3,0.021903 +120,VM_28,0.035038 +120,VM_9,0.00785 +120,VM_90,0.006267 +120,VM_97,0.006257 +120,VM_62,0.028053 +120,VM_57,0.027435 +120,VM_20,0.033864 +120,VM_37,0.019937 +120,VM_112,0.017272 +120,VM_45,0.013538 +120,VM_70,0.025242 +120,VM_79,0.020061 +120,VM_112,0.010241 +120,VM_97,0.006141 +120,VM_42,0.024041 +120,VM_91,0.032908 +120,VM_106,0.030657 +120,VM_75,0.033032 +120,VM_51,0.033369 +120,VM_57,0.005329 +120,VM_57,0.005534 +120,VM_6,0.015425 +120,VM_105,0.023375 +120,VM_70,0.006013 +120,VM_53,0.018698 +120,VM_118,0.031804 +120,VM_25,0.028617 +120,VM_24,0.01085 +120,VM_84,0.027643 +120,VM_51,0.007154 +120,VM_23,0.028724 +120,VM_48,0.015423 +120,VM_100,0.019665 +120,VM_47,0.03175 +120,VM_72,0.020332 +130,VM_56,0.018845 +130,VM_116,0.03576 +130,VM_45,0.005995 +130,VM_56,0.006237 +130,VM_4,0.015556 +130,VM_87,0.018868 +130,VM_52,0.01649 +130,VM_71,0.01308 +130,VM_18,0.016839 +130,VM_85,0.009946 +130,VM_98,0.025943 +130,VM_25,0.005155 +130,VM_37,0.00605 +130,VM_2,0.021806 +130,VM_49,0.007688 +130,VM_106,0.005786 +130,VM_110,0.023124 +130,VM_77,0.01035 +130,VM_91,0.005537 +130,VM_65,0.011367 +130,VM_81,0.00757 +130,VM_83,0.003572 +130,VM_50,0.015895 +130,VM_65,0.005485 +130,VM_54,0.00635 +130,VM_53,0.004628 +130,VM_5,0.028193 +130,VM_43,0.030344 +130,VM_14,0.018097 +130,VM_117,0.023769 +130,VM_29,0.019984 +130,VM_74,0.024563 +130,VM_111,0.026244 +130,VM_2,0.006327 +130,VM_8,0.00937 +130,VM_41,0.017801 +130,VM_120,0.009658 +130,VM_100,0.005395 +130,VM_16,0.0373 +130,VM_37,0.00594 +130,VM_121,0.005268 +130,VM_34,0.010656 +130,VM_66,0.008177 +130,VM_11,0.035234 +130,VM_125,0.01591 +130,VM_69,0.034701 +130,VM_31,0.016333 +130,VM_74,0.00544 +130,VM_87,0.005749 +130,VM_90,0.005146 +130,VM_57,0.005849 +130,VM_119,0.005267 +130,VM_55,0.009927 +130,VM_109,0.011102 +130,VM_74,0.006623 +130,VM_85,0.004668 +130,VM_111,0.005971 +130,VM_2,0.00536 +130,VM_62,0.005975 +130,VM_70,0.005474 +130,VM_101,0.024158 +130,VM_38,0.014317 +130,VM_55,0.026236 +130,VM_81,0.022287 +130,VM_36,0.025756 +130,VM_117,0.026381 +130,VM_129,0.033249 +130,VM_10,0.023778 +130,VM_82,0.014859 +130,VM_72,0.026222 +130,VM_35,0.013733 +130,VM_7,0.032477 +130,VM_31,0.014163 +130,VM_95,0.034474 +130,VM_17,0.006813 +130,VM_65,0.019373 +140,VM_134,0.032094 +140,VM_41,0.02417 +140,VM_112,0.029381 +140,VM_86,0.026569 +140,VM_10,0.006401 +140,VM_29,0.012193 +140,VM_17,0.006171 +140,VM_117,0.006264 +140,VM_6,0.026589 +140,VM_84,0.00963 +140,VM_66,0.015154 +140,VM_78,0.018158 +140,VM_82,0.005688 +140,VM_55,0.004805 +140,VM_83,0.006939 +140,VM_93,0.039205 +140,VM_83,0.005829 +140,VM_100,0.034856 +140,VM_114,0.03226 +140,VM_47,0.027508 +140,VM_120,0.024905 +140,VM_45,0.0151 +140,VM_85,0.004152 +140,VM_139,0.014523 +140,VM_138,0.0329 +140,VM_74,0.029299 +140,VM_69,0.014186 +140,VM_19,0.032579 +140,VM_91,0.028119 +140,VM_99,0.009817 +140,VM_2,0.033343 +140,VM_17,0.005627 +140,VM_30,0.012819 +140,VM_96,0.009128 +140,VM_120,0.005669 +140,VM_69,0.00491 +140,VM_66,0.005965 +140,VM_121,0.035615 +140,VM_125,0.022885 +140,VM_0,0.033463 +140,VM_132,0.032825 +140,VM_92,0.030083 +140,VM_119,0.03379 +140,VM_131,0.004855 +140,VM_75,0.033618 +140,VM_97,0.022735 +140,VM_10,0.006286 +140,VM_24,0.015352 +140,VM_98,0.018224 +140,VM_8,0.020201 +140,VM_3,0.021288 +140,VM_76,0.003953 +140,VM_126,0.031797 +140,VM_0,0.004872 +140,VM_93,0.005815 +140,VM_30,0.008836 +140,VM_127,0.016579 +140,VM_4,0.011877 +140,VM_55,0.006152 +140,VM_46,0.004574 +140,VM_48,0.008125 +140,VM_27,0.027459 +140,VM_20,0.031027 +140,VM_55,0.00452 +140,VM_2,0.023761 +140,VM_11,0.028259 +140,VM_32,0.008655 +140,VM_99,0.021032 +140,VM_34,0.035012 +140,VM_113,0.031543 +140,VM_9,0.020215 +140,VM_11,0.005735 +140,VM_137,0.020036 +140,VM_54,0.007457 +140,VM_44,0.004064 +140,VM_38,0.023668 diff --git a/BENCHMARKING/RESULTS/startup_unik_benchmark.csv b/BENCHMARKING/RESULTS/startup_unik_benchmark.csv new file mode 100644 index 0000000..f57bf63 --- /dev/null +++ b/BENCHMARKING/RESULTS/startup_unik_benchmark.csv @@ -0,0 +1,2681 @@ +NBR_OF_GUESTS,GUEST_STOPPED,STARTUP_TIME_SECONDS +10,VM_0,0.013473 +10,VM_4,0.134164 +10,VM_7,0.079406 +10,VM_0,0.013065 +10,VM_4,0.134782 +10,VM_9,0.13385 +10,VM_1,0.11362 +10,VM_8,0.126989 +10,VM_1,0.012737 +10,VM_9,0.01039 +10,VM_6,0.11553 +10,VM_5,0.116785 +10,VM_6,0.013631 +10,VM_5,0.015163 +10,VM_4,0.008139 +10,VM_1,0.008646 +10,VM_7,0.008685 +10,VM_4,0.010134 +10,VM_0,0.013782 +10,VM_5,0.133214 +10,VM_8,0.138445 +10,VM_3,0.13817 +10,VM_7,0.163165 +10,VM_2,0.136489 +10,VM_4,0.049061 +10,VM_4,0.005055 +10,VM_6,0.051383 +10,VM_6,0.287513 +10,VM_1,0.152779 +10,VM_3,0.008229 +10,VM_1,0.009176 +10,VM_8,0.016355 +10,VM_3,0.012017 +10,VM_7,0.007217 +10,VM_3,0.010215 +10,VM_2,0.050923 +10,VM_2,0.005941 +10,VM_1,0.00737 +10,VM_2,0.015685 +10,VM_2,0.019411 +10,VM_6,0.02165 +10,VM_5,0.007959 +10,VM_6,0.011917 +10,VM_6,0.020079 +10,VM_0,0.018476 +10,VM_9,0.246045 +10,VM_7,0.140039 +10,VM_3,0.155828 +10,VM_6,0.013317 +10,VM_3,0.012696 +10,VM_7,0.010336 +10,VM_4,0.552807 +10,VM_4,0.418706 +10,VM_4,0.218848 +10,VM_4,0.318437 +10,VM_1,0.135856 +10,VM_2,0.122498 +10,VM_8,0.126884 +10,VM_9,0.010447 +10,VM_8,0.015518 +10,VM_9,0.012326 +10,VM_0,0.014146 +10,VM_3,0.122771 +10,VM_1,0.12984 +10,VM_7,0.129137 +10,VM_5,0.276085 +10,VM_5,0.180853 +10,VM_3,0.011544 +10,VM_0,0.011317 +10,VM_1,0.116582 +10,VM_4,0.108209 +10,VM_5,0.130161 +10,VM_3,0.009016 +10,VM_6,0.109497 +10,VM_9,0.271096 +10,VM_9,0.159456 +10,VM_6,0.012198 +10,VM_2,0.114409 +10,VM_8,0.137048 +10,VM_1,0.011947 +10,VM_0,0.014218 +10,VM_2,0.280621 +10,VM_2,0.172031 +10,VM_8,0.118114 +10,VM_3,0.106832 +10,VM_4,0.12048 +10,VM_6,0.126192 +10,VM_8,0.009582 +10,VM_1,0.010352 +10,VM_8,0.012685 +10,VM_8,0.007616 +10,VM_0,0.223617 +10,VM_7,0.126823 +10,VM_6,0.109503 +10,VM_1,0.11329 +10,VM_9,0.105982 +10,VM_4,0.106034 +10,VM_7,0.014303 +10,VM_6,0.009933 +10,VM_4,0.008944 +10,VM_2,0.159545 +10,VM_7,0.013094 +10,VM_4,0.02465 +10,VM_9,0.02589 +10,VM_2,0.016339 +10,VM_6,0.010905 +10,VM_4,0.00919 +10,VM_9,0.016633 +10,VM_1,0.007456 +10,VM_6,0.015351 +10,VM_7,0.026115 +10,VM_0,0.010234 +10,VM_9,0.140291 +10,VM_4,0.145782 +10,VM_2,0.137778 +10,VM_1,0.065582 +10,VM_0,0.011291 +10,VM_8,0.274707 +10,VM_8,0.981973 +10,VM_0,0.011911 +10,VM_4,0.13773 +10,VM_6,0.964232 +10,VM_6,0.288629 +10,VM_2,0.153071 +10,VM_4,0.011941 +10,VM_7,0.131706 +10,VM_1,0.109028 +10,VM_3,0.138589 +10,VM_5,0.110566 +10,VM_5,0.26053 +10,VM_7,0.009159 +10,VM_7,0.008599 +10,VM_5,0.015484 +10,VM_2,0.008717 +10,VM_6,0.009506 +10,VM_3,0.009622 +10,VM_9,0.124707 +10,VM_0,0.011232 +10,VM_6,0.277694 +10,VM_6,0.143981 +10,VM_9,0.143046 +10,VM_7,0.133346 +10,VM_5,0.119146 +10,VM_6,0.008393 +10,VM_3,0.114651 +10,VM_5,0.012213 +10,VM_9,0.009069 +10,VM_6,0.014244 +10,VM_9,0.010589 +10,VM_4,0.135076 +10,VM_3,0.010588 +10,VM_2,0.0824 +10,VM_0,0.012978 +10,VM_9,0.086645 +10,VM_0,0.008539 +10,VM_5,0.11595 +10,VM_8,0.134165 +10,VM_2,0.129293 +10,VM_4,0.071387 +10,VM_0,0.011918 +10,VM_5,0.115045 +10,VM_9,0.11853 +10,VM_2,0.117738 +10,VM_9,0.009113 +10,VM_1,0.125233 +10,VM_3,0.116879 +10,VM_8,0.13593 +10,VM_3,0.012898 +10,VM_2,0.019471 +10,VM_2,0.191529 +10,VM_2,0.334889 +10,VM_2,0.900487 +10,VM_4,0.009755 +10,VM_9,0.007453 +10,VM_6,0.149298 +10,VM_2,0.019916 +10,VM_9,0.022343 +10,VM_2,0.110559 +10,VM_4,0.044689 +10,VM_9,0.011137 +10,VM_2,0.016992 +10,VM_9,0.160714 +10,VM_9,0.024652 +20,VM_7,0.531857 +20,VM_1,0.589013 +20,VM_6,0.800343 +20,VM_8,0.769516 +20,VM_8,0.402168 +20,VM_8,0.154239 +20,VM_0,0.969021 +20,VM_0,0.523374 +20,VM_5,0.058218 +20,VM_5,0.56349 +20,VM_4,0.172144 +20,VM_4,0.955392 +20,VM_3,0.618308 +20,VM_3,0.71296 +20,VM_19,0.142522 +20,VM_10,0.120128 +20,VM_16,0.120262 +20,VM_10,0.011256 +20,VM_12,0.136923 +20,VM_4,0.012593 +20,VM_2,0.135019 +20,VM_1,0.115493 +20,VM_10,0.054627 +20,VM_10,0.008719 +20,VM_11,0.265862 +20,VM_11,0.178368 +20,VM_0,0.045382 +20,VM_0,0.00643 +20,VM_1,0.010909 +20,VM_9,0.138583 +20,VM_19,0.006422 +20,VM_3,0.011467 +20,VM_15,0.014699 +20,VM_17,0.132377 +20,VM_14,0.11727 +20,VM_18,0.108591 +20,VM_2,0.135273 +20,VM_14,0.011397 +20,VM_15,0.012061 +20,VM_18,0.124483 +20,VM_11,0.117074 +20,VM_7,0.127384 +20,VM_3,0.13284 +20,VM_13,0.121114 +20,VM_0,0.125409 +20,VM_5,0.064834 +20,VM_15,0.013753 +20,VM_10,0.141111 +20,VM_2,0.156723 +20,VM_5,0.018466 +20,VM_2,0.009025 +20,VM_11,0.155588 +20,VM_0,0.135466 +20,VM_12,0.150895 +20,VM_17,0.122596 +20,VM_4,0.150037 +20,VM_19,0.157373 +20,VM_3,0.144371 +20,VM_10,0.009671 +20,VM_4,0.00978 +20,VM_16,0.142697 +20,VM_7,0.149666 +20,VM_19,0.010462 +20,VM_11,0.010719 +20,VM_13,0.13265 +20,VM_2,0.016014 +20,VM_9,0.147576 +20,VM_14,0.092738 +20,VM_15,0.019188 +20,VM_2,0.309346 +20,VM_2,0.087262 +20,VM_10,0.131456 +20,VM_18,0.149906 +20,VM_11,0.135044 +20,VM_5,0.26933 +20,VM_5,0.169418 +20,VM_14,0.064969 +20,VM_14,0.00607 +20,VM_12,0.113434 +20,VM_14,0.016182 +20,VM_18,0.010598 +20,VM_19,0.131836 +20,VM_18,0.015151 +20,VM_2,0.008329 +20,VM_19,0.013268 +20,VM_0,0.109942 +20,VM_19,0.010208 +20,VM_18,0.017241 +20,VM_0,0.00975 +20,VM_1,0.112763 +20,VM_17,0.136841 +20,VM_10,0.00922 +20,VM_11,0.01805 +20,VM_0,0.008324 +20,VM_12,0.010203 +20,VM_8,0.161514 +20,VM_8,0.250194 +20,VM_9,0.139251 +20,VM_5,0.012048 +20,VM_6,0.07507 +20,VM_15,0.013563 +20,VM_19,0.123807 +20,VM_0,0.11784 +20,VM_11,0.1338 +20,VM_14,0.118075 +20,VM_17,0.130366 +20,VM_10,0.11653 +20,VM_3,0.12502 +20,VM_1,0.11544 +20,VM_9,0.133583 +20,VM_0,0.009865 +20,VM_6,0.008495 +20,VM_3,0.008815 +20,VM_10,0.008922 +20,VM_13,0.122791 +20,VM_12,0.106574 +20,VM_10,0.015481 +20,VM_13,0.010083 +20,VM_9,0.009626 +20,VM_18,0.113329 +20,VM_13,0.014619 +20,VM_0,0.048007 +20,VM_0,0.005869 +20,VM_3,0.009597 +20,VM_8,0.165234 +20,VM_0,0.016642 +20,VM_3,0.009381 +20,VM_6,0.013304 +20,VM_4,0.136789 +20,VM_14,0.015755 +20,VM_9,0.011892 +20,VM_3,0.012292 +20,VM_14,0.011406 +20,VM_17,0.010886 +20,VM_18,0.009482 +20,VM_6,0.009963 +20,VM_8,0.009003 +20,VM_14,0.013226 +20,VM_4,0.016591 +20,VM_16,0.292235 +20,VM_16,0.070261 +20,VM_1,0.009948 +20,VM_0,0.011788 +20,VM_3,0.012011 +20,VM_14,0.014963 +20,VM_19,0.008223 +20,VM_11,0.014524 +20,VM_6,0.008847 +20,VM_9,0.022798 +20,VM_15,0.010769 +20,VM_19,0.15959 +20,VM_13,0.116744 +20,VM_17,0.121154 +20,VM_19,0.010438 +20,VM_12,0.131829 +20,VM_2,0.129342 +20,VM_1,0.090202 +20,VM_15,0.008331 +20,VM_10,0.113076 +20,VM_12,0.182718 +20,VM_12,0.278072 +20,VM_2,0.111587 +20,VM_11,0.078598 +20,VM_15,0.011757 +20,VM_14,0.118323 +20,VM_17,0.118718 +20,VM_1,0.125579 +20,VM_17,0.008568 +20,VM_19,0.127797 +20,VM_2,0.105169 +20,VM_16,0.108642 +20,VM_19,0.010837 +20,VM_6,0.114236 +20,VM_1,0.00989 +20,VM_17,0.009461 +20,VM_8,0.127836 +20,VM_14,0.015224 +20,VM_7,0.138548 +20,VM_9,0.122535 +20,VM_3,0.128551 +20,VM_4,0.128611 +20,VM_5,0.119633 +20,VM_3,0.011004 +20,VM_13,0.110761 +20,VM_11,0.008558 +20,VM_6,0.009201 +20,VM_2,0.008733 +20,VM_13,0.01604 +20,VM_3,0.009299 +20,VM_11,0.01338 +20,VM_1,0.009844 +20,VM_12,0.107913 +20,VM_5,0.008982 +20,VM_8,0.010752 +20,VM_3,0.016694 +20,VM_8,0.014727 +20,VM_8,0.008168 +20,VM_6,0.014677 +20,VM_3,0.00848 +20,VM_11,0.010625 +20,VM_12,0.016572 +20,VM_7,0.012863 +20,VM_3,0.012153 +20,VM_14,0.013461 +20,VM_13,0.030433 +20,VM_6,0.008614 +20,VM_4,0.012416 +20,VM_0,0.152167 +20,VM_12,0.017494 +30,VM_4,0.015868 +30,VM_0,0.117507 +30,VM_21,0.140018 +30,VM_9,0.117959 +30,VM_20,0.121529 +30,VM_18,0.128766 +30,VM_12,0.132471 +30,VM_4,0.076494 +30,VM_3,0.016674 +30,VM_1,0.112746 +30,VM_7,0.162365 +30,VM_14,0.145981 +30,VM_24,0.153585 +30,VM_15,0.164992 +30,VM_26,0.14839 +30,VM_1,0.007675 +30,VM_5,0.137861 +30,VM_24,0.018479 +30,VM_6,0.16123 +30,VM_27,0.154057 +30,VM_8,0.140445 +30,VM_0,0.161259 +30,VM_20,0.130574 +30,VM_21,0.162158 +30,VM_4,0.011666 +30,VM_14,0.019697 +30,VM_8,0.012392 +30,VM_5,0.00872 +30,VM_21,0.011953 +30,VM_10,0.147683 +30,VM_21,0.012842 +30,VM_13,0.162056 +30,VM_24,0.008217 +30,VM_15,0.016805 +30,VM_22,0.154718 +30,VM_20,0.015078 +30,VM_6,0.012502 +30,VM_0,0.011426 +30,VM_24,0.01119 +30,VM_11,0.111039 +30,VM_16,0.108825 +30,VM_12,0.116109 +30,VM_10,0.008897 +30,VM_0,0.010094 +30,VM_4,0.009683 +30,VM_21,0.013108 +30,VM_18,0.121592 +30,VM_26,0.015011 +30,VM_19,0.123171 +30,VM_28,0.110627 +30,VM_26,0.018288 +30,VM_15,0.013476 +30,VM_4,0.009431 +30,VM_26,0.008556 +30,VM_1,0.010622 +30,VM_10,0.011356 +30,VM_2,0.128445 +30,VM_1,0.018968 +30,VM_14,0.008932 +30,VM_5,0.010473 +30,VM_9,0.118258 +30,VM_12,0.009857 +30,VM_18,0.00838 +30,VM_22,0.050281 +30,VM_22,0.006519 +30,VM_8,0.009793 +30,VM_2,0.009625 +30,VM_23,0.111574 +30,VM_17,0.108286 +30,VM_6,0.012927 +30,VM_12,0.010567 +30,VM_5,0.009891 +30,VM_11,0.008004 +30,VM_14,0.011904 +30,VM_9,0.008255 +30,VM_14,0.017415 +30,VM_15,0.00954 +30,VM_12,0.01422 +30,VM_16,0.008976 +30,VM_26,0.010818 +30,VM_17,0.009245 +30,VM_0,0.009378 +30,VM_22,0.015767 +30,VM_3,0.010295 +30,VM_16,0.118443 +30,VM_20,0.131345 +30,VM_14,0.18172 +30,VM_14,0.27899 +30,VM_10,0.138216 +30,VM_1,0.130126 +30,VM_2,0.131757 +30,VM_1,0.013882 +30,VM_5,0.148859 +30,VM_24,0.156472 +30,VM_1,0.016424 +30,VM_1,0.009478 +30,VM_24,0.009927 +30,VM_28,0.159611 +30,VM_0,0.133652 +30,VM_18,0.167784 +30,VM_20,0.011795 +30,VM_0,0.007659 +30,VM_17,0.145513 +30,VM_23,0.140888 +30,VM_27,0.162866 +30,VM_1,0.011888 +30,VM_15,0.135954 +30,VM_26,0.150567 +30,VM_5,0.016706 +30,VM_14,0.012679 +30,VM_13,0.041066 +30,VM_13,0.278635 +30,VM_15,0.025623 +30,VM_28,0.023269 +30,VM_14,0.028024 +30,VM_13,0.012461 +30,VM_3,0.014737 +30,VM_13,0.01135 +30,VM_5,0.145827 +30,VM_5,0.251393 +30,VM_4,0.110398 +30,VM_2,0.118261 +30,VM_7,0.120892 +30,VM_22,0.106567 +30,VM_12,0.108042 +30,VM_13,0.014474 +30,VM_1,0.10642 +30,VM_17,0.123493 +30,VM_5,0.010158 +30,VM_0,0.118876 +30,VM_18,0.131724 +30,VM_28,0.117829 +30,VM_22,0.010871 +30,VM_14,0.106993 +30,VM_0,0.013812 +30,VM_18,0.010573 +30,VM_19,0.113441 +30,VM_16,0.121351 +30,VM_12,0.03896 +30,VM_12,0.010377 +30,VM_24,0.108562 +30,VM_26,0.128797 +30,VM_21,0.109679 +30,VM_24,0.010973 +30,VM_23,0.126092 +30,VM_0,0.008333 +30,VM_12,0.014189 +30,VM_8,0.113895 +30,VM_24,0.008706 +30,VM_12,0.016548 +30,VM_19,0.011126 +30,VM_24,0.019841 +30,VM_19,0.011445 +30,VM_10,0.115895 +30,VM_19,0.010525 +30,VM_11,0.10992 +30,VM_8,0.009865 +30,VM_15,0.136139 +30,VM_7,0.015 +30,VM_3,0.061246 +30,VM_3,0.008601 +30,VM_11,0.125696 +30,VM_28,0.117006 +30,VM_14,0.139173 +30,VM_27,0.131594 +30,VM_14,0.011092 +30,VM_10,0.132991 +30,VM_17,0.146601 +30,VM_22,0.156816 +30,VM_28,0.016392 +30,VM_6,0.165115 +30,VM_14,0.015395 +30,VM_28,0.011493 +30,VM_26,0.153974 +30,VM_5,0.14534 +30,VM_1,0.069665 +30,VM_3,0.016389 +30,VM_18,0.154491 +30,VM_14,0.159587 +30,VM_7,0.08343 +30,VM_3,0.017496 +30,VM_14,0.128921 +30,VM_10,0.158889 +30,VM_21,0.147006 +30,VM_22,0.142066 +30,VM_20,0.143935 +30,VM_7,0.016253 +30,VM_4,0.15205 +30,VM_13,0.145556 +30,VM_27,0.159106 +30,VM_23,0.161175 +30,VM_24,0.151735 +30,VM_17,0.169166 +30,VM_13,0.015263 +40,VM_13,0.014247 +40,VM_23,0.01331 +40,VM_3,0.121159 +40,VM_4,0.12055 +40,VM_22,0.133696 +40,VM_35,0.126667 +40,VM_38,0.128427 +40,VM_15,0.104899 +40,VM_37,0.071114 +40,VM_39,0.015273 +40,VM_23,0.130935 +40,VM_20,0.13923 +40,VM_34,0.117658 +40,VM_7,0.113584 +40,VM_22,0.125352 +40,VM_8,0.114572 +40,VM_10,0.122873 +40,VM_33,0.123497 +40,VM_2,0.139163 +40,VM_35,0.137799 +40,VM_8,0.021675 +40,VM_24,0.129118 +40,VM_20,0.01066 +40,VM_25,0.111698 +40,VM_23,0.009119 +40,VM_0,0.136638 +40,VM_29,0.122124 +40,VM_33,0.011393 +40,VM_11,0.111248 +40,VM_37,0.014069 +40,VM_36,0.141836 +40,VM_17,0.129124 +40,VM_15,0.094867 +40,VM_39,0.012691 +40,VM_2,0.117429 +40,VM_35,0.134182 +40,VM_22,0.118525 +40,VM_34,0.133897 +40,VM_38,0.130775 +40,VM_27,0.156274 +40,VM_30,0.158787 +40,VM_38,0.01377 +40,VM_27,0.013005 +40,VM_20,0.038604 +40,VM_20,0.299308 +40,VM_38,0.013116 +40,VM_23,0.137535 +40,VM_16,0.146187 +40,VM_2,0.007785 +40,VM_11,0.13331 +40,VM_14,0.152738 +40,VM_20,0.013543 +40,VM_11,0.012164 +40,VM_13,0.146757 +40,VM_33,0.151045 +40,VM_12,0.061174 +40,VM_39,0.025124 +40,VM_10,0.159317 +40,VM_15,0.156813 +40,VM_30,0.148542 +40,VM_5,0.140324 +40,VM_21,0.139327 +40,VM_1,0.134633 +40,VM_29,0.146565 +40,VM_2,0.156641 +40,VM_29,0.018405 +40,VM_0,0.165162 +40,VM_30,0.014686 +40,VM_18,0.107174 +40,VM_8,0.106263 +40,VM_14,0.125939 +40,VM_9,0.128301 +40,VM_8,0.015624 +40,VM_32,0.10835 +40,VM_12,0.009556 +40,VM_10,0.01333 +40,VM_19,0.122036 +40,VM_36,0.119115 +40,VM_29,0.015635 +40,VM_23,0.134407 +40,VM_1,0.011754 +40,VM_39,0.010972 +40,VM_5,0.115075 +40,VM_25,0.122128 +40,VM_35,0.119719 +40,VM_3,0.114204 +40,VM_17,0.112313 +40,VM_4,0.074238 +40,VM_39,0.014433 +40,VM_5,0.111337 +40,VM_30,0.129028 +40,VM_14,0.117085 +40,VM_6,0.129594 +40,VM_22,0.131529 +40,VM_18,0.137134 +40,VM_8,0.116644 +40,VM_11,0.137322 +40,VM_36,0.132453 +40,VM_0,0.133111 +40,VM_34,0.125212 +40,VM_1,0.119983 +40,VM_20,0.105249 +40,VM_30,0.012681 +40,VM_32,0.116517 +40,VM_24,0.12684 +40,VM_28,0.111699 +40,VM_12,0.130965 +40,VM_11,0.011078 +40,VM_38,0.127186 +40,VM_11,0.014937 +40,VM_14,0.012128 +40,VM_28,0.009192 +40,VM_11,0.015348 +40,VM_6,0.009972 +40,VM_16,0.126702 +40,VM_8,0.00973 +40,VM_17,0.111258 +40,VM_25,0.169025 +40,VM_22,0.015296 +40,VM_39,0.010973 +40,VM_11,0.155471 +40,VM_14,0.153663 +40,VM_29,0.150267 +40,VM_24,0.154329 +40,VM_37,0.170564 +40,VM_10,0.07727 +40,VM_39,0.015765 +40,VM_32,0.156136 +40,VM_0,0.15253 +40,VM_12,0.141461 +40,VM_19,0.166038 +40,VM_0,0.028815 +40,VM_16,0.140735 +40,VM_37,0.145829 +40,VM_13,0.144865 +40,VM_27,0.145163 +40,VM_28,0.143192 +40,VM_25,0.139888 +40,VM_15,0.077326 +40,VM_39,0.025843 +40,VM_19,0.150057 +40,VM_16,0.162263 +40,VM_22,0.135953 +40,VM_4,0.167888 +40,VM_30,0.170273 +40,VM_28,0.109357 +40,VM_3,0.061557 +40,VM_39,0.012724 +40,VM_23,0.1304 +40,VM_30,0.121366 +40,VM_26,0.112839 +40,VM_18,0.119855 +40,VM_22,0.069995 +40,VM_39,0.014747 +40,VM_34,0.125793 +40,VM_20,0.12228 +40,VM_24,0.131263 +40,VM_4,0.138764 +40,VM_27,0.268566 +40,VM_27,0.158162 +40,VM_12,0.12402 +40,VM_37,0.111542 +40,VM_4,0.007914 +40,VM_36,0.111965 +40,VM_6,0.127975 +40,VM_7,0.136809 +40,VM_34,0.011849 +40,VM_38,0.119671 +40,VM_22,0.009639 +40,VM_5,0.107129 +40,VM_19,0.125669 +40,VM_11,0.122476 +40,VM_3,0.119452 +40,VM_27,0.009532 +40,VM_13,0.128436 +40,VM_30,0.12687 +40,VM_25,0.123152 +40,VM_12,0.012391 +40,VM_32,0.257886 +40,VM_32,0.150296 +40,VM_5,0.009441 +40,VM_20,0.008637 +40,VM_25,0.018413 +40,VM_11,0.008799 +40,VM_0,0.127248 +40,VM_13,0.012644 +40,VM_0,0.011701 +40,VM_35,0.118369 +40,VM_10,0.143064 +40,VM_13,0.015736 +40,VM_12,0.015257 +40,VM_20,0.011255 +40,VM_37,0.012604 +40,VM_27,0.014123 +40,VM_29,0.151534 +40,VM_27,0.017735 +50,VM_39,0.017355 +50,VM_20,0.109156 +50,VM_10,0.130705 +50,VM_22,0.131712 +50,VM_42,0.121838 +50,VM_1,0.137667 +50,VM_32,0.108901 +50,VM_19,0.113504 +50,VM_11,0.136146 +50,VM_47,0.117606 +50,VM_42,0.01397 +50,VM_44,0.134342 +50,VM_26,0.128576 +50,VM_16,0.122448 +50,VM_28,0.128709 +50,VM_23,0.109084 +50,VM_40,0.122721 +50,VM_11,0.012586 +50,VM_22,0.010325 +50,VM_29,0.132479 +50,VM_30,0.107716 +50,VM_17,0.115512 +50,VM_39,0.121812 +50,VM_28,0.013651 +50,VM_5,0.012274 +50,VM_6,0.110562 +50,VM_26,0.111972 +50,VM_48,0.121389 +50,VM_23,0.125748 +50,VM_21,0.129532 +50,VM_49,0.118405 +50,VM_6,0.01281 +50,VM_2,0.119419 +50,VM_43,0.132423 +50,VM_14,0.116292 +50,VM_25,0.123044 +50,VM_33,0.119508 +50,VM_33,0.259313 +50,VM_14,0.019965 +50,VM_26,0.022937 +50,VM_29,0.135767 +50,VM_8,0.137528 +50,VM_23,0.011133 +50,VM_40,0.132333 +50,VM_21,0.018936 +50,VM_18,0.147946 +50,VM_29,0.015622 +50,VM_25,0.013887 +50,VM_47,0.154217 +50,VM_37,0.149994 +50,VM_9,0.132522 +50,VM_18,0.017775 +50,VM_27,0.141665 +50,VM_17,0.141671 +50,VM_1,0.17252 +50,VM_37,0.038444 +50,VM_29,0.019122 +50,VM_43,0.012894 +50,VM_25,0.008008 +50,VM_44,0.153206 +50,VM_4,0.152223 +50,VM_19,0.142866 +50,VM_1,0.017787 +50,VM_17,0.015584 +50,VM_6,0.066406 +50,VM_6,0.018173 +50,VM_39,0.155777 +50,VM_20,0.15747 +50,VM_26,0.012283 +50,VM_9,0.015263 +50,VM_36,0.140307 +50,VM_8,0.011363 +50,VM_25,0.010262 +50,VM_23,0.01063 +50,VM_10,0.113613 +50,VM_31,0.128715 +50,VM_30,0.13282 +50,VM_0,0.111751 +50,VM_17,0.009279 +50,VM_46,0.124202 +50,VM_28,0.012936 +50,VM_44,0.015137 +50,VM_5,0.011542 +50,VM_46,0.128304 +50,VM_1,0.128493 +50,VM_13,0.128672 +50,VM_30,0.140575 +50,VM_0,0.115935 +50,VM_45,0.120067 +50,VM_12,0.117206 +50,VM_8,0.122157 +50,VM_3,0.257824 +50,VM_3,0.13859 +50,VM_32,0.122693 +50,VM_44,0.010662 +50,VM_11,0.111739 +50,VM_3,0.011316 +50,VM_16,0.072315 +50,VM_5,0.016807 +50,VM_49,0.111805 +50,VM_3,0.124669 +50,VM_0,0.12154 +50,VM_7,0.129715 +50,VM_37,0.125893 +50,VM_31,0.113517 +50,VM_33,0.128177 +50,VM_12,0.06776 +50,VM_5,0.012329 +50,VM_35,0.124212 +50,VM_22,0.140895 +50,VM_44,0.117187 +50,VM_26,0.112474 +50,VM_18,0.150712 +50,VM_40,0.107767 +50,VM_26,0.013303 +50,VM_19,0.130459 +50,VM_36,0.141643 +50,VM_49,0.131347 +50,VM_6,0.165028 +50,VM_25,0.139343 +50,VM_27,0.166281 +50,VM_42,0.146976 +50,VM_48,0.144532 +50,VM_4,0.150066 +50,VM_45,0.13992 +50,VM_1,0.158347 +50,VM_9,0.15569 +50,VM_15,0.165296 +50,VM_30,0.155421 +50,VM_29,0.155034 +50,VM_9,0.021332 +50,VM_49,0.008427 +50,VM_42,0.010112 +50,VM_38,0.138522 +50,VM_46,0.156047 +50,VM_28,0.141135 +50,VM_2,0.135127 +50,VM_23,0.14638 +50,VM_17,0.15483 +50,VM_41,0.150853 +50,VM_49,0.012127 +50,VM_21,0.156223 +50,VM_18,0.012916 +50,VM_47,0.140023 +50,VM_37,0.181431 +50,VM_29,0.017125 +50,VM_28,0.00795 +50,VM_4,0.745233 +50,VM_4,0.53437 +50,VM_32,0.098057 +50,VM_5,0.01345 +50,VM_35,0.107456 +50,VM_34,0.109929 +50,VM_8,0.120591 +50,VM_28,0.133308 +50,VM_12,0.11482 +50,VM_20,0.132004 +50,VM_13,0.111949 +50,VM_47,0.110166 +50,VM_12,0.013445 +50,VM_29,0.126989 +50,VM_25,0.117734 +50,VM_8,0.010299 +50,VM_25,0.0208 +50,VM_8,0.009888 +50,VM_36,0.123496 +50,VM_20,0.017094 +50,VM_5,0.012389 +50,VM_30,0.145459 +50,VM_35,0.137519 +50,VM_37,0.131589 +50,VM_33,0.130954 +50,VM_47,0.135716 +50,VM_4,0.129743 +50,VM_49,0.119733 +50,VM_24,0.119083 +50,VM_0,0.111001 +50,VM_48,0.137191 +50,VM_39,0.131133 +50,VM_11,0.127882 +50,VM_19,0.123327 +50,VM_15,0.128696 +50,VM_4,0.01001 +50,VM_31,0.130802 +50,VM_38,0.114371 +50,VM_21,0.121522 +50,VM_18,0.13849 +50,VM_37,0.011608 +50,VM_42,0.123014 +50,VM_25,0.112168 +50,VM_7,0.127709 +50,VM_23,0.113332 +50,VM_12,0.129959 +50,VM_42,0.013091 +50,VM_17,0.140122 +60,VM_0,0.008429 +60,VM_51,0.12339 +60,VM_17,0.125888 +60,VM_44,0.124911 +60,VM_7,0.111606 +60,VM_3,0.11969 +60,VM_35,0.115634 +60,VM_13,0.122735 +60,VM_32,0.129042 +60,VM_23,0.129928 +60,VM_32,0.008179 +60,VM_56,0.129181 +60,VM_45,0.11568 +60,VM_23,0.011585 +60,VM_29,0.135986 +60,VM_16,0.138378 +60,VM_56,0.015812 +60,VM_27,0.143588 +60,VM_11,0.149221 +60,VM_27,0.012826 +60,VM_55,0.155169 +60,VM_12,0.148679 +60,VM_55,0.029608 +60,VM_17,0.020684 +60,VM_13,0.010323 +60,VM_9,0.165778 +60,VM_34,0.162709 +60,VM_50,0.1396 +60,VM_20,0.019381 +60,VM_21,0.171621 +60,VM_21,0.701947 +60,VM_35,0.155459 +60,VM_24,0.150099 +60,VM_50,0.156408 +60,VM_43,0.147486 +60,VM_10,0.156415 +60,VM_54,0.15255 +60,VM_42,0.157586 +60,VM_53,0.162986 +60,VM_13,0.131748 +60,VM_39,0.158221 +60,VM_12,0.15494 +60,VM_14,0.141335 +60,VM_28,0.150972 +60,VM_31,0.164348 +60,VM_55,0.146379 +60,VM_49,0.132532 +60,VM_28,0.012566 +60,VM_18,0.139475 +60,VM_28,0.024511 +60,VM_28,0.010626 +60,VM_35,0.011794 +60,VM_6,0.128881 +60,VM_21,0.009363 +60,VM_30,0.123132 +60,VM_1,0.106953 +60,VM_9,0.131498 +60,VM_25,0.136013 +60,VM_37,0.117417 +60,VM_55,0.009219 +60,VM_28,0.017021 +60,VM_8,0.113444 +60,VM_43,0.00973 +60,VM_22,0.130259 +60,VM_31,0.012264 +60,VM_18,0.011591 +60,VM_32,0.110994 +60,VM_16,0.134832 +60,VM_34,0.128514 +60,VM_19,0.134295 +60,VM_55,0.01274 +60,VM_36,0.122286 +60,VM_47,0.135907 +60,VM_5,0.126037 +60,VM_35,0.014673 +60,VM_43,0.013727 +60,VM_11,0.109395 +60,VM_30,0.020387 +60,VM_53,0.007835 +60,VM_9,0.014068 +60,VM_15,0.120012 +60,VM_30,0.023971 +60,VM_19,0.011986 +60,VM_15,0.015562 +60,VM_7,0.11233 +60,VM_34,0.011738 +60,VM_47,0.014398 +60,VM_14,0.012896 +60,VM_13,0.009963 +60,VM_51,0.122317 +60,VM_27,0.136762 +60,VM_35,0.0109 +60,VM_4,0.074504 +60,VM_20,0.010331 +60,VM_34,0.161918 +60,VM_29,0.148922 +60,VM_14,0.142884 +60,VM_47,0.143973 +60,VM_24,0.173132 +60,VM_18,0.137148 +60,VM_1,0.16655 +60,VM_46,0.164592 +60,VM_0,0.13178 +60,VM_8,0.151352 +60,VM_16,0.139539 +60,VM_23,0.161925 +60,VM_58,0.170533 +60,VM_57,0.141646 +60,VM_45,0.135559 +60,VM_21,0.141053 +60,VM_53,0.169285 +60,VM_24,0.018431 +60,VM_55,0.02973 +60,VM_55,0.306991 +60,VM_36,0.159325 +60,VM_48,0.14937 +60,VM_52,0.161428 +60,VM_31,0.158116 +60,VM_48,0.019793 +60,VM_15,0.135439 +60,VM_55,0.009451 +60,VM_11,0.165727 +60,VM_7,0.147172 +60,VM_57,0.013313 +60,VM_26,0.118892 +60,VM_36,0.012866 +60,VM_28,0.129465 +60,VM_12,0.131708 +60,VM_48,0.01167 +60,VM_45,0.010913 +60,VM_5,0.071864 +60,VM_20,0.017338 +60,VM_55,0.11752 +60,VM_49,0.146472 +60,VM_1,0.127303 +60,VM_17,0.116271 +60,VM_33,0.132418 +60,VM_18,0.134734 +60,VM_5,0.008597 +60,VM_34,0.126435 +60,VM_53,0.124886 +60,VM_47,0.132947 +60,VM_38,0.142429 +60,VM_5,0.01216 +60,VM_24,0.117509 +60,VM_39,0.110301 +60,VM_19,0.128606 +60,VM_4,0.123777 +60,VM_30,0.133519 +60,VM_40,0.129008 +60,VM_17,0.010366 +60,VM_24,0.00942 +60,VM_56,0.131993 +60,VM_59,0.134202 +60,VM_0,0.127917 +60,VM_21,0.108996 +60,VM_45,0.131603 +60,VM_35,0.139592 +60,VM_15,0.114235 +60,VM_21,0.012662 +60,VM_27,0.118096 +60,VM_11,0.123254 +60,VM_52,0.112866 +60,VM_3,0.129216 +60,VM_29,0.144643 +60,VM_53,0.010977 +60,VM_15,0.016624 +60,VM_23,0.134654 +60,VM_49,0.014533 +60,VM_38,0.015743 +60,VM_28,0.129087 +60,VM_38,0.012719 +60,VM_2,0.144916 +60,VM_1,0.012292 +60,VM_12,0.149441 +60,VM_26,0.139731 +60,VM_31,0.157621 +60,VM_7,0.171982 +60,VM_23,0.011638 +60,VM_46,0.177607 +60,VM_35,0.009163 +60,VM_32,0.093371 +60,VM_20,0.018503 +60,VM_58,0.131508 +60,VM_46,0.163734 +60,VM_54,0.150998 +60,VM_31,0.15169 +60,VM_18,0.139555 +60,VM_56,0.156052 +60,VM_9,0.140644 +60,VM_48,0.158989 +60,VM_32,0.009862 +60,VM_24,0.137646 +60,VM_44,0.144685 +70,VM_41,0.159333 +70,VM_34,0.128964 +70,VM_11,0.143904 +70,VM_12,0.13169 +70,VM_5,0.122882 +70,VM_66,0.126982 +70,VM_28,0.14336 +70,VM_30,0.107369 +70,VM_28,0.012822 +70,VM_31,0.142834 +70,VM_22,0.132367 +70,VM_9,0.125535 +70,VM_17,0.126132 +70,VM_6,0.132804 +70,VM_27,0.1269 +70,VM_32,0.135988 +70,VM_38,0.124247 +70,VM_20,0.122026 +70,VM_27,0.021669 +70,VM_31,0.013733 +70,VM_41,0.119232 +70,VM_0,0.118157 +70,VM_29,0.132528 +70,VM_18,0.122536 +70,VM_64,0.120848 +70,VM_68,0.120002 +70,VM_17,0.011483 +70,VM_31,0.017325 +70,VM_52,0.140542 +70,VM_23,0.122947 +70,VM_38,0.016746 +70,VM_51,0.123528 +70,VM_34,0.019889 +70,VM_46,0.120421 +70,VM_32,0.013544 +70,VM_60,0.124365 +70,VM_29,0.013267 +70,VM_22,0.00968 +70,VM_60,0.02075 +70,VM_18,0.01444 +70,VM_57,0.140238 +70,VM_50,0.122998 +70,VM_11,0.048505 +70,VM_11,0.015391 +70,VM_17,0.023726 +70,VM_0,0.007579 +70,VM_64,0.017656 +70,VM_32,0.017333 +70,VM_38,0.013436 +70,VM_18,0.058362 +70,VM_18,0.01445 +70,VM_54,0.148757 +70,VM_21,0.155407 +70,VM_47,0.149126 +70,VM_20,0.01814 +70,VM_64,0.009874 +70,VM_21,0.039934 +70,VM_6,0.016026 +70,VM_53,0.144388 +70,VM_11,0.015007 +70,VM_41,0.020235 +70,VM_60,0.022938 +70,VM_66,0.013583 +70,VM_35,0.15746 +70,VM_36,0.160315 +70,VM_59,0.136365 +70,VM_34,0.018096 +70,VM_45,0.168957 +70,VM_33,0.147765 +70,VM_42,0.156086 +70,VM_30,0.016364 +70,VM_19,0.089988 +70,VM_38,0.049636 +70,VM_10,0.148985 +70,VM_36,0.018318 +70,VM_43,0.162462 +70,VM_52,0.011037 +70,VM_9,0.017574 +70,VM_17,0.007724 +70,VM_47,0.021409 +70,VM_51,0.013269 +70,VM_11,0.008792 +70,VM_37,0.147089 +70,VM_36,0.017071 +70,VM_28,0.007604 +70,VM_45,0.01721 +70,VM_55,0.091451 +70,VM_26,0.024558 +70,VM_27,0.149512 +70,VM_24,0.506601 +70,VM_67,0.154383 +70,VM_65,0.128635 +70,VM_3,0.114361 +70,VM_51,0.107324 +70,VM_30,0.127508 +70,VM_53,0.13262 +70,VM_36,0.13984 +70,VM_21,0.136867 +70,VM_59,0.131454 +70,VM_7,0.115526 +70,VM_63,0.138049 +70,VM_25,0.132437 +70,VM_8,0.116864 +70,VM_24,0.013644 +70,VM_68,0.109192 +70,VM_8,0.016155 +70,VM_16,0.112571 +70,VM_14,0.112145 +70,VM_54,0.121084 +70,VM_29,0.142116 +70,VM_31,0.127238 +70,VM_34,0.139749 +70,VM_40,0.130667 +70,VM_52,0.140105 +70,VM_10,0.140808 +70,VM_42,0.109398 +70,VM_56,0.112968 +70,VM_58,0.13046 +70,VM_13,0.126663 +70,VM_59,0.010834 +70,VM_0,0.112793 +70,VM_47,0.106765 +70,VM_0,0.023717 +70,VM_68,0.014326 +70,VM_11,0.183177 +70,VM_67,0.019846 +70,VM_6,0.981631 +70,VM_6,0.282813 +70,VM_52,0.025156 +70,VM_13,0.016071 +70,VM_41,0.141733 +70,VM_55,0.016004 +70,VM_29,0.01979 +70,VM_0,0.01084 +70,VM_22,0.140812 +70,VM_3,0.016774 +70,VM_57,0.146092 +70,VM_13,0.025267 +70,VM_18,0.163793 +70,VM_44,0.1343 +70,VM_19,0.174158 +70,VM_41,0.014274 +70,VM_10,0.039717 +70,VM_15,0.230884 +70,VM_25,0.022387 +70,VM_4,0.145023 +70,VM_39,0.151001 +70,VM_13,0.018263 +70,VM_34,0.02018 +70,VM_18,0.022928 +70,VM_63,0.017256 +70,VM_42,0.012964 +70,VM_46,0.144642 +70,VM_51,0.026926 +70,VM_4,0.014771 +70,VM_69,0.151579 +70,VM_55,0.016308 +70,VM_8,0.014043 +70,VM_61,0.140077 +70,VM_52,0.010695 +70,VM_9,0.148442 +70,VM_47,0.011296 +70,VM_69,0.013423 +70,VM_20,0.143408 +70,VM_64,0.26192 +70,VM_32,0.160817 +70,VM_19,0.011014 +70,VM_49,0.165637 +70,VM_47,0.014459 +70,VM_61,0.014048 +70,VM_60,0.144157 +70,VM_62,0.178963 +70,VM_67,0.013493 +70,VM_52,0.023516 +70,VM_10,0.009642 +70,VM_18,0.011847 +70,VM_32,0.01998 +70,VM_1,0.158681 +70,VM_25,0.012278 +70,VM_65,0.009176 +70,VM_41,0.012997 +70,VM_60,0.015125 +70,VM_35,0.153207 +70,VM_55,0.019347 +70,VM_12,0.139847 +70,VM_25,0.013099 +70,VM_59,0.007385 +70,VM_47,0.014706 +70,VM_63,0.035654 +70,VM_30,0.0094 +70,VM_14,0.081218 +70,VM_14,0.16702 +80,VM_0,0.010682 +80,VM_78,0.152291 +80,VM_40,0.162058 +80,VM_48,0.149058 +80,VM_26,0.182898 +80,VM_66,0.146584 +80,VM_70,0.143812 +80,VM_57,0.173422 +80,VM_61,0.167266 +80,VM_25,0.154231 +80,VM_37,0.139148 +80,VM_57,0.020772 +80,VM_58,0.169039 +80,VM_45,0.147396 +80,VM_24,0.15957 +80,VM_45,0.014799 +80,VM_75,0.159607 +80,VM_55,0.160932 +80,VM_40,0.014739 +80,VM_27,0.135199 +80,VM_19,0.137268 +80,VM_61,0.008317 +80,VM_47,0.15735 +80,VM_26,0.011598 +80,VM_63,0.154606 +80,VM_64,0.139485 +80,VM_36,0.150579 +80,VM_53,0.574677 +80,VM_23,0.175475 +80,VM_19,0.029686 +80,VM_43,0.20926 +80,VM_44,0.321146 +80,VM_9,0.2286 +80,VM_27,0.009859 +80,VM_68,0.437635 +80,VM_77,0.295533 +80,VM_24,0.021894 +80,VM_20,0.669888 +80,VM_46,0.737843 +80,VM_15,0.1 +80,VM_69,0.012759 +80,VM_60,0.240035 +80,VM_16,0.581511 +80,VM_68,0.225893 +80,VM_14,0.277302 +80,VM_25,0.39405 +80,VM_50,0.358502 +80,VM_41,0.154183 +80,VM_40,0.480081 +80,VM_62,0.401447 +80,VM_66,0.824008 +80,VM_16,0.02428 +80,VM_47,0.230677 +80,VM_46,0.155956 +80,VM_62,0.015332 +80,VM_19,0.159808 +80,VM_7,0.294798 +80,VM_7,0.978223 +80,VM_11,0.159923 +80,VM_55,0.144456 +80,VM_68,0.011666 +80,VM_38,0.139105 +80,VM_41,0.010328 +80,VM_74,0.158518 +80,VM_13,0.14382 +80,VM_16,0.02631 +80,VM_7,0.023505 +80,VM_5,0.1744 +80,VM_77,0.143252 +80,VM_38,0.012075 +80,VM_79,0.149828 +80,VM_65,0.150094 +80,VM_35,0.156257 +80,VM_12,0.139117 +80,VM_14,0.009308 +80,VM_74,0.024533 +80,VM_24,0.156138 +80,VM_33,0.158776 +80,VM_59,0.155462 +80,VM_35,0.016444 +80,VM_31,0.151458 +80,VM_54,0.164477 +80,VM_37,0.154452 +80,VM_48,0.150591 +80,VM_10,0.161127 +80,VM_48,0.025536 +80,VM_11,0.017725 +80,VM_60,0.015235 +80,VM_38,0.008224 +80,VM_77,0.015467 +80,VM_51,0.165159 +80,VM_0,0.162016 +80,VM_10,0.020925 +80,VM_14,0.013978 +80,VM_73,0.158133 +80,VM_26,0.074948 +80,VM_69,0.016267 +80,VM_37,0.15285 +80,VM_15,0.169605 +80,VM_59,0.143486 +80,VM_25,0.165376 +80,VM_33,0.177271 +80,VM_42,0.240307 +80,VM_35,0.182443 +80,VM_34,0.791049 +80,VM_34,0.375094 +80,VM_38,0.199505 +80,VM_75,0.194486 +80,VM_74,0.801902 +80,VM_66,0.814746 +80,VM_28,0.742678 +80,VM_12,0.449652 +80,VM_40,0.402769 +80,VM_39,0.712226 +80,VM_66,0.031918 +80,VM_27,0.256516 +80,VM_68,0.181269 +80,VM_70,0.129768 +80,VM_25,0.041255 +80,VM_63,0.50564 +80,VM_0,0.718401 +80,VM_36,0.961231 +80,VM_76,0.492188 +80,VM_5,0.887742 +80,VM_12,0.043161 +80,VM_64,0.479173 +80,VM_78,0.191776 +80,VM_59,0.01499 +80,VM_41,0.073148 +80,VM_69,0.021375 +80,VM_4,0.171334 +80,VM_24,0.874653 +80,VM_30,0.172713 +80,VM_19,0.169309 +80,VM_73,0.160343 +80,VM_38,0.148677 +80,VM_10,0.484832 +80,VM_19,0.02814 +80,VM_73,0.029725 +80,VM_41,0.013771 +80,VM_55,0.403105 +80,VM_21,0.158904 +80,VM_48,0.154244 +80,VM_63,0.150035 +80,VM_27,0.16281 +80,VM_38,0.042234 +80,VM_0,0.209267 +80,VM_63,0.012147 +80,VM_46,0.306972 +80,VM_56,0.149846 +80,VM_61,0.170175 +80,VM_12,0.179071 +80,VM_26,0.224942 +80,VM_4,0.038834 +80,VM_25,0.150802 +80,VM_1,0.1587 +80,VM_41,0.023524 +80,VM_58,0.147746 +80,VM_25,0.021231 +80,VM_66,0.137347 +80,VM_28,0.159628 +80,VM_3,0.162129 +80,VM_65,0.142748 +80,VM_29,0.141857 +80,VM_7,0.162916 +80,VM_24,0.01532 +80,VM_38,0.013288 +80,VM_0,0.027651 +80,VM_53,0.177018 +80,VM_26,0.017251 +80,VM_68,0.029807 +80,VM_50,0.462024 +80,VM_64,0.016711 +80,VM_75,0.703292 +80,VM_5,0.890055 +80,VM_15,0.573042 +80,VM_38,0.009238 +80,VM_62,0.534514 +80,VM_28,0.01696 +80,VM_26,0.028007 +80,VM_42,0.322421 +90,VM_29,0.022051 +90,VM_45,0.628672 +90,VM_9,0.468949 +90,VM_18,0.142655 +90,VM_35,0.157179 +90,VM_38,0.139461 +90,VM_58,0.178895 +90,VM_12,0.152015 +90,VM_51,0.154446 +90,VM_30,0.170657 +90,VM_19,0.162323 +90,VM_17,0.169038 +90,VM_45,0.141514 +90,VM_74,0.145483 +90,VM_22,0.171364 +90,VM_61,0.162474 +90,VM_39,0.162682 +90,VM_46,0.171658 +90,VM_4,0.143944 +90,VM_87,0.176315 +90,VM_78,0.150768 +90,VM_51,0.021229 +90,VM_87,0.017496 +90,VM_56,0.16781 +90,VM_79,0.166515 +90,VM_48,0.167456 +90,VM_15,0.169479 +90,VM_75,0.141751 +90,VM_32,0.15798 +90,VM_8,0.163118 +90,VM_88,0.161149 +90,VM_31,0.159948 +90,VM_40,0.173162 +90,VM_87,0.013211 +90,VM_30,0.021656 +90,VM_76,0.131454 +90,VM_52,0.132775 +90,VM_12,0.019203 +90,VM_24,0.133533 +90,VM_56,0.017049 +90,VM_3,0.145996 +90,VM_75,0.018041 +90,VM_50,0.01278 +90,VM_35,0.133826 +90,VM_33,0.139016 +90,VM_80,0.13478 +90,VM_88,0.155147 +90,VM_47,0.140044 +90,VM_14,0.119958 +90,VM_13,0.134318 +90,VM_2,0.13849 +90,VM_23,0.11003 +90,VM_68,0.153931 +90,VM_81,0.116868 +90,VM_57,0.132795 +90,VM_10,0.125986 +90,VM_6,0.137851 +90,VM_76,0.136503 +90,VM_72,0.135556 +90,VM_28,0.138886 +90,VM_26,0.134764 +90,VM_56,0.108572 +90,VM_74,0.148762 +90,VM_63,0.156475 +90,VM_13,0.013915 +90,VM_31,0.154151 +90,VM_43,0.115504 +90,VM_53,0.13532 +90,VM_68,0.011484 +90,VM_59,0.133066 +90,VM_33,0.017418 +90,VM_9,0.117033 +90,VM_27,0.134524 +90,VM_87,0.143236 +90,VM_63,0.015067 +90,VM_45,0.133558 +90,VM_26,0.018425 +90,VM_43,0.017442 +90,VM_54,0.135877 +90,VM_17,0.134213 +90,VM_77,0.152972 +90,VM_7,0.153101 +90,VM_44,0.138725 +90,VM_22,0.149212 +90,VM_80,0.016014 +90,VM_64,0.142776 +90,VM_46,0.154079 +90,VM_18,0.170907 +90,VM_16,0.179303 +90,VM_66,0.146394 +90,VM_1,0.159655 +90,VM_62,0.144013 +90,VM_29,0.150829 +90,VM_46,0.026613 +90,VM_51,0.158402 +90,VM_15,0.158075 +90,VM_39,0.164219 +90,VM_9,0.019094 +90,VM_88,0.027586 +90,VM_23,0.009525 +90,VM_36,0.167367 +90,VM_46,0.015338 +90,VM_27,0.021115 +90,VM_33,0.020602 +90,VM_9,0.01496 +90,VM_17,0.015519 +90,VM_42,0.159212 +90,VM_72,0.016825 +90,VM_79,0.152009 +90,VM_1,0.012968 +90,VM_33,0.011938 +90,VM_2,0.016023 +90,VM_53,0.016306 +90,VM_89,0.129642 +90,VM_0,0.1156 +90,VM_28,0.011727 +90,VM_2,0.009127 +90,VM_11,0.144322 +90,VM_15,0.009436 +90,VM_11,0.020589 +90,VM_6,0.015825 +90,VM_67,0.139295 +90,VM_4,0.125945 +90,VM_5,0.135548 +90,VM_52,0.129676 +90,VM_81,0.015785 +90,VM_40,0.115333 +90,VM_56,0.020919 +90,VM_30,0.145356 +90,VM_28,0.023083 +90,VM_0,0.020372 +90,VM_76,0.015262 +90,VM_7,0.012028 +90,VM_57,0.010389 +90,VM_39,0.009863 +90,VM_45,0.019378 +90,VM_9,0.013925 +90,VM_25,0.137412 +90,VM_59,0.016798 +90,VM_60,0.13135 +90,VM_21,0.127165 +90,VM_79,0.012581 +90,VM_13,0.009316 +90,VM_46,0.022722 +90,VM_77,0.013778 +90,VM_56,0.012822 +90,VM_87,0.017602 +90,VM_57,0.016551 +90,VM_31,0.02179 +90,VM_81,0.008272 +90,VM_45,0.009596 +90,VM_10,0.01467 +90,VM_69,0.134736 +90,VM_36,0.011457 +90,VM_30,0.013374 +90,VM_45,0.018662 +90,VM_35,0.014005 +90,VM_40,0.019447 +90,VM_3,0.158273 +90,VM_26,0.017092 +90,VM_51,0.020783 +90,VM_6,0.024396 +90,VM_81,0.020526 +90,VM_3,0.008019 +90,VM_40,0.019194 +90,VM_72,0.009603 +90,VM_67,0.04683 +90,VM_12,0.154846 +90,VM_35,0.010467 +90,VM_86,0.087855 +90,VM_50,0.010921 +90,VM_53,0.181732 +90,VM_71,0.163252 +90,VM_68,0.184473 +90,VM_35,0.166145 +90,VM_67,0.158908 +90,VM_76,0.173319 +90,VM_18,0.164536 +90,VM_40,0.159607 +90,VM_12,0.163335 +90,VM_78,0.151054 +90,VM_32,0.171633 +90,VM_3,0.170825 +90,VM_43,0.18028 +90,VM_19,0.168129 +90,VM_62,0.163725 +90,VM_27,0.14913 +90,VM_5,0.143615 +90,VM_10,0.141931 +90,VM_79,0.13375 +90,VM_1,0.137106 +90,VM_42,0.138938 +90,VM_84,0.125882 +90,VM_41,0.167759 +90,VM_52,0.121161 +100,VM_38,0.132473 +100,VM_22,0.131153 +100,VM_14,0.144213 +100,VM_25,0.130949 +100,VM_77,0.128182 +100,VM_43,0.151935 +100,VM_14,0.014655 +100,VM_64,0.148758 +100,VM_94,0.121363 +100,VM_12,0.135895 +100,VM_17,0.118605 +100,VM_97,0.12427 +100,VM_15,0.146279 +100,VM_69,0.121859 +100,VM_34,0.120773 +100,VM_64,0.012383 +100,VM_4,0.134552 +100,VM_88,0.146189 +100,VM_21,0.123783 +100,VM_61,0.139617 +100,VM_99,0.131855 +100,VM_0,0.122296 +100,VM_27,0.166754 +100,VM_83,0.14451 +100,VM_90,0.174716 +100,VM_56,0.136061 +100,VM_97,0.035076 +100,VM_71,0.142445 +100,VM_23,0.164125 +100,VM_97,0.010962 +100,VM_40,0.169491 +100,VM_41,0.150727 +100,VM_33,0.142893 +100,VM_93,0.16219 +100,VM_49,0.140181 +100,VM_9,0.157256 +100,VM_62,0.165444 +100,VM_0,0.009898 +100,VM_78,0.167887 +100,VM_1,0.155277 +100,VM_37,0.15891 +100,VM_14,0.043391 +100,VM_58,0.429958 +100,VM_93,0.019054 +100,VM_65,0.181855 +100,VM_48,0.355682 +100,VM_29,0.753465 +100,VM_37,0.045352 +100,VM_47,0.683465 +100,VM_13,0.603959 +100,VM_2,0.467422 +100,VM_70,0.295626 +100,VM_12,0.034331 +100,VM_95,0.161976 +100,VM_23,0.019467 +100,VM_5,0.700039 +100,VM_5,0.907664 +100,VM_66,0.139673 +100,VM_88,0.018638 +100,VM_61,0.013252 +100,VM_39,0.137829 +100,VM_2,0.016249 +100,VM_62,0.008521 +100,VM_22,0.009571 +100,VM_4,0.009833 +100,VM_56,0.016697 +100,VM_91,0.138087 +100,VM_21,0.008489 +100,VM_14,0.016287 +100,VM_92,0.122767 +100,VM_78,0.01813 +100,VM_0,0.011486 +100,VM_99,0.0121 +100,VM_8,0.131952 +100,VM_99,0.021201 +100,VM_89,0.121543 +100,VM_67,0.121001 +100,VM_23,0.015972 +100,VM_53,0.136411 +100,VM_2,0.01095 +100,VM_70,0.014297 +100,VM_6,0.172152 +100,VM_67,0.020551 +100,VM_78,0.010034 +100,VM_33,0.011105 +100,VM_92,0.0166 +100,VM_8,0.014202 +100,VM_42,0.143564 +100,VM_11,0.117832 +100,VM_86,0.130264 +100,VM_47,0.015914 +100,VM_28,0.1385 +100,VM_27,0.016154 +100,VM_77,0.019382 +100,VM_2,0.020152 +100,VM_19,0.130071 +100,VM_16,0.164059 +100,VM_56,0.01335 +100,VM_19,0.028798 +100,VM_56,0.02094 +100,VM_76,0.164211 +100,VM_54,0.135909 +100,VM_3,0.172456 +100,VM_55,0.171259 +100,VM_42,0.024334 +100,VM_81,0.158336 +100,VM_64,0.018757 +100,VM_56,0.022674 +100,VM_63,0.166125 +100,VM_69,0.023009 +100,VM_59,0.164729 +100,VM_54,0.010941 +100,VM_17,0.019616 +100,VM_29,0.01991 +100,VM_16,0.013967 +100,VM_21,0.016823 +100,VM_8,0.023357 +100,VM_61,0.017684 +100,VM_24,0.148556 +100,VM_94,0.014418 +100,VM_85,0.1708 +100,VM_53,0.010626 +100,VM_38,0.156729 +100,VM_85,0.020867 +100,VM_55,0.019714 +100,VM_76,0.028986 +100,VM_71,0.009466 +100,VM_22,0.015427 +100,VM_24,0.009184 +100,VM_7,0.154791 +100,VM_30,0.148233 +100,VM_14,0.009137 +100,VM_17,0.011163 +100,VM_99,0.025333 +100,VM_18,0.13605 +100,VM_5,0.021656 +100,VM_22,0.012239 +100,VM_56,0.021869 +100,VM_42,0.01608 +100,VM_65,0.01759 +100,VM_7,0.015866 +100,VM_29,0.012719 +100,VM_81,0.013379 +100,VM_52,0.126803 +100,VM_50,0.13641 +100,VM_77,0.009507 +100,VM_81,0.035815 +100,VM_24,0.010985 +100,VM_85,0.014751 +100,VM_16,0.013359 +100,VM_83,0.010445 +100,VM_58,0.014885 +100,VM_60,0.132657 +100,VM_80,0.132953 +100,VM_50,0.015157 +100,VM_78,0.009435 +100,VM_15,0.017326 +100,VM_49,0.009026 +100,VM_66,0.015256 +100,VM_78,0.0127 +100,VM_35,0.13231 +100,VM_73,0.135937 +100,VM_67,0.025785 +100,VM_63,0.01059 +100,VM_8,0.011115 +100,VM_36,0.142457 +100,VM_63,0.025554 +100,VM_27,0.013563 +100,VM_62,0.009639 +100,VM_36,0.024416 +100,VM_18,0.00891 +100,VM_3,0.01063 +100,VM_24,0.016327 +100,VM_23,0.010613 +100,VM_88,0.009945 +100,VM_68,0.146074 +100,VM_95,0.014615 +100,VM_33,0.01436 +100,VM_70,0.019343 +100,VM_33,0.025964 +100,VM_68,0.028891 +100,VM_64,0.015607 +100,VM_78,0.027803 +100,VM_86,0.011267 +100,VM_76,0.027891 +100,VM_47,0.023446 +100,VM_53,0.0199 +100,VM_1,0.019093 +100,VM_39,0.052718 +100,VM_39,0.024319 +110,VM_21,0.030429 +110,VM_53,0.158197 +110,VM_19,0.142324 +110,VM_78,0.12673 +110,VM_3,0.165172 +110,VM_75,0.137391 +110,VM_38,0.137258 +110,VM_72,0.145238 +110,VM_58,0.157555 +110,VM_59,0.140438 +110,VM_11,0.141874 +110,VM_96,0.131859 +110,VM_12,0.152346 +110,VM_59,0.024637 +110,VM_12,0.011876 +110,VM_48,0.13215 +110,VM_65,0.140025 +110,VM_45,0.145005 +110,VM_72,0.013667 +110,VM_76,0.142361 +110,VM_88,0.148028 +110,VM_76,0.014684 +110,VM_27,0.160731 +110,VM_108,0.14474 +110,VM_35,0.146159 +110,VM_90,0.172537 +110,VM_94,0.1484 +110,VM_92,0.143459 +110,VM_41,0.145506 +110,VM_46,0.176194 +110,VM_68,0.166654 +110,VM_12,0.024132 +110,VM_3,0.012256 +110,VM_82,0.166772 +110,VM_101,0.168797 +110,VM_33,0.164931 +110,VM_23,0.153307 +110,VM_79,0.162556 +110,VM_43,0.175042 +110,VM_20,0.163345 +110,VM_15,0.160547 +110,VM_83,0.965503 +110,VM_83,0.317746 +110,VM_101,0.016578 +110,VM_87,0.157923 +110,VM_1,0.147481 +110,VM_56,0.152191 +110,VM_107,0.139158 +110,VM_61,0.17112 +110,VM_102,0.138778 +110,VM_56,0.031827 +110,VM_69,0.179237 +110,VM_15,0.029979 +110,VM_24,0.138011 +110,VM_35,0.018025 +110,VM_67,0.134239 +110,VM_57,0.143185 +110,VM_81,0.14451 +110,VM_61,0.012861 +110,VM_48,0.009426 +110,VM_77,0.142899 +110,VM_21,0.137428 +110,VM_23,0.017493 +110,VM_40,0.137917 +110,VM_19,0.015724 +110,VM_85,0.155109 +110,VM_61,0.020376 +110,VM_81,0.019688 +110,VM_89,0.168544 +110,VM_8,0.155411 +110,VM_58,0.02138 +110,VM_92,0.010078 +110,VM_102,0.009176 +110,VM_68,0.0192 +110,VM_2,0.156625 +110,VM_68,0.019378 +110,VM_63,0.153286 +110,VM_68,0.026811 +110,VM_12,0.020472 +110,VM_29,0.152541 +110,VM_71,0.138146 +110,VM_108,0.009321 +110,VM_61,0.011247 +110,VM_20,0.016647 +110,VM_77,0.012583 +110,VM_104,0.296032 +110,VM_104,0.081004 +110,VM_78,0.017335 +110,VM_77,0.011259 +110,VM_99,0.156394 +110,VM_42,0.13088 +110,VM_7,0.165521 +110,VM_75,0.014717 +110,VM_83,0.02337 +110,VM_25,0.142136 +110,VM_86,0.147478 +110,VM_54,0.155024 +110,VM_20,0.013692 +110,VM_104,0.009796 +110,VM_79,0.010529 +110,VM_22,0.150863 +110,VM_36,0.126501 +110,VM_16,0.164461 +110,VM_70,0.139208 +110,VM_95,0.152215 +110,VM_96,0.028497 +110,VM_103,0.157134 +110,VM_98,0.165963 +110,VM_71,0.023268 +110,VM_78,0.023766 +110,VM_28,0.147207 +110,VM_88,0.028252 +110,VM_107,0.012013 +110,VM_24,0.02108 +110,VM_27,0.017869 +110,VM_62,0.142382 +110,VM_100,0.147441 +110,VM_21,0.025346 +110,VM_61,0.032033 +110,VM_92,0.026112 +110,VM_25,0.010831 +110,VM_69,0.027011 +110,VM_11,0.014969 +110,VM_16,0.014396 +110,VM_15,0.007749 +110,VM_70,0.008198 +110,VM_25,0.020577 +110,VM_105,0.15593 +110,VM_6,0.166194 +110,VM_51,0.14269 +110,VM_95,0.011015 +110,VM_70,0.023856 +110,VM_76,0.00895 +110,VM_109,0.143695 +110,VM_6,0.01022 +110,VM_109,0.022942 +110,VM_76,0.018735 +110,VM_5,0.159025 +110,VM_88,0.008205 +110,VM_69,0.013199 +110,VM_33,0.014983 +110,VM_74,0.147418 +110,VM_81,0.009414 +110,VM_12,0.011256 +110,VM_65,0.018042 +110,VM_16,0.016312 +110,VM_60,0.140565 +110,VM_108,0.024328 +110,VM_64,0.131382 +110,VM_31,0.159623 +110,VM_13,0.156081 +110,VM_33,0.018724 +110,VM_96,0.028784 +110,VM_37,0.140071 +110,VM_109,0.011681 +110,VM_23,0.017195 +110,VM_84,0.151709 +110,VM_68,0.014297 +110,VM_3,0.009806 +110,VM_91,0.140395 +110,VM_29,0.016071 +110,VM_65,0.014933 +110,VM_30,0.137644 +110,VM_83,0.008771 +110,VM_9,0.159972 +110,VM_97,0.153455 +110,VM_54,0.017644 +110,VM_77,0.011399 +110,VM_5,0.008677 +110,VM_51,0.019874 +110,VM_34,0.123011 +110,VM_74,0.045938 +110,VM_74,0.008203 +110,VM_0,0.16377 +110,VM_99,0.017912 +110,VM_66,0.166797 +110,VM_92,0.159458 +110,VM_74,0.013207 +110,VM_65,0.176818 +110,VM_28,0.136338 +110,VM_74,0.012932 +110,VM_20,0.155455 +110,VM_107,0.163231 +110,VM_48,0.183256 +110,VM_33,0.154336 +110,VM_86,0.156474 +110,VM_91,0.166768 +110,VM_102,0.183262 +110,VM_94,0.177346 +110,VM_84,0.173269 +110,VM_87,0.147094 +110,VM_33,0.012147 +120,VM_4,0.162661 +120,VM_57,0.182224 +120,VM_106,0.161694 +120,VM_10,0.167704 +120,VM_90,0.185137 +120,VM_93,0.159017 +120,VM_69,0.162537 +120,VM_82,0.177244 +120,VM_3,0.169275 +120,VM_10,0.035061 +120,VM_86,0.139719 +120,VM_75,0.163183 +120,VM_26,0.17346 +120,VM_29,0.133376 +120,VM_30,0.153505 +120,VM_85,0.199608 +120,VM_50,0.07986 +120,VM_54,0.012729 +120,VM_67,0.174566 +120,VM_88,0.178832 +120,VM_15,0.182648 +120,VM_78,0.153222 +120,VM_47,0.142953 +120,VM_108,0.166846 +120,VM_1,0.139156 +120,VM_45,0.169149 +120,VM_8,0.149332 +120,VM_113,0.124712 +120,VM_11,0.147556 +120,VM_59,0.154622 +120,VM_9,0.127792 +120,VM_111,0.141247 +120,VM_67,0.008701 +120,VM_96,0.113382 +120,VM_88,0.009552 +120,VM_64,0.143364 +120,VM_52,0.139682 +120,VM_20,0.143705 +120,VM_55,0.138204 +120,VM_67,0.011292 +120,VM_30,0.138347 +120,VM_7,0.137487 +120,VM_58,0.161786 +120,VM_115,0.130375 +120,VM_119,0.13517 +120,VM_56,0.137662 +120,VM_86,0.129775 +120,VM_90,0.141557 +120,VM_87,0.163682 +120,VM_117,0.164617 +120,VM_2,0.137052 +120,VM_73,0.137071 +120,VM_74,0.142198 +120,VM_20,0.024942 +120,VM_114,0.15137 +120,VM_27,0.164576 +120,VM_118,0.141564 +120,VM_47,0.01161 +120,VM_8,0.011657 +120,VM_117,0.009543 +120,VM_39,0.157389 +120,VM_118,0.012839 +120,VM_101,0.13667 +120,VM_67,0.017687 +120,VM_91,0.149212 +120,VM_63,0.148556 +120,VM_24,0.149224 +120,VM_71,0.159156 +120,VM_52,0.010784 +120,VM_109,0.156635 +120,VM_70,0.141071 +120,VM_18,0.142715 +120,VM_66,0.154809 +120,VM_73,0.03041 +120,VM_54,0.015404 +120,VM_12,0.15517 +120,VM_9,0.164919 +120,VM_70,0.177153 +120,VM_60,0.181483 +120,VM_7,0.146495 +120,VM_61,0.146843 +120,VM_21,0.156705 +120,VM_56,0.16399 +120,VM_1,0.163707 +120,VM_0,0.150646 +120,VM_34,0.163844 +120,VM_116,0.153783 +120,VM_62,0.156567 +120,VM_88,0.171386 +120,VM_62,0.032509 +120,VM_28,0.172988 +120,VM_9,0.036696 +120,VM_32,0.153558 +120,VM_117,0.173433 +120,VM_81,0.154228 +120,VM_95,0.17024 +120,VM_68,0.158042 +120,VM_97,0.169617 +120,VM_80,0.16398 +120,VM_71,0.136759 +120,VM_114,0.121266 +120,VM_95,0.009669 +120,VM_105,0.148601 +120,VM_13,0.1507 +120,VM_93,0.156248 +120,VM_116,0.06691 +120,VM_116,0.011293 +120,VM_27,0.141837 +120,VM_116,0.030733 +120,VM_56,0.015282 +120,VM_102,0.135938 +120,VM_3,0.157955 +120,VM_84,0.171379 +120,VM_70,0.012799 +120,VM_29,0.135423 +120,VM_77,0.145039 +120,VM_0,0.009834 +120,VM_27,0.01096 +120,VM_76,0.175617 +120,VM_102,0.017578 +120,VM_23,0.171798 +120,VM_68,0.01507 +120,VM_60,0.016997 +120,VM_33,0.165717 +120,VM_12,0.028443 +120,VM_50,0.147107 +120,VM_105,0.016435 +120,VM_5,0.141786 +120,VM_68,0.020286 +120,VM_42,0.142291 +120,VM_70,0.012918 +120,VM_116,0.010099 +120,VM_119,0.124075 +120,VM_82,0.157266 +120,VM_110,0.146324 +120,VM_15,0.141901 +120,VM_111,0.143639 +120,VM_115,0.141428 +120,VM_117,0.018709 +120,VM_41,0.146012 +120,VM_97,0.030883 +120,VM_82,0.022594 +120,VM_100,0.149787 +120,VM_6,0.137131 +120,VM_32,0.026371 +120,VM_110,0.009025 +120,VM_19,0.144198 +120,VM_83,0.140737 +120,VM_0,0.01807 +120,VM_70,0.025069 +120,VM_26,0.144211 +120,VM_71,0.021712 +120,VM_7,0.015507 +120,VM_50,0.026048 +120,VM_9,0.008125 +120,VM_73,0.01475 +120,VM_21,0.014557 +120,VM_104,0.337652 +120,VM_15,0.018753 +120,VM_87,0.172624 +120,VM_2,0.154806 +120,VM_6,0.013584 +120,VM_30,0.159512 +120,VM_58,0.144511 +120,VM_45,0.17754 +120,VM_16,0.141096 +120,VM_106,0.167856 +120,VM_111,0.01068 +120,VM_62,0.013241 +120,VM_47,0.155577 +120,VM_24,0.161613 +120,VM_94,0.174498 +120,VM_111,0.031307 +120,VM_87,0.026329 +120,VM_99,0.146797 +120,VM_69,0.162235 +120,VM_107,0.156889 +120,VM_20,0.139183 +120,VM_113,0.11271 +120,VM_81,0.025462 +120,VM_114,0.014273 +120,VM_18,0.122063 +120,VM_115,0.017635 +120,VM_67,0.167177 +120,VM_83,0.021309 +120,VM_29,0.020143 +120,VM_45,0.010585 +120,VM_5,0.02489 +120,VM_19,0.011974 +120,VM_36,0.133297 +120,VM_20,0.018221 +120,VM_83,0.017804 +130,VM_74,0.151719 +130,VM_122,0.148676 +130,VM_86,0.166526 +130,VM_96,0.15253 +130,VM_50,0.163887 +130,VM_86,0.012631 +130,VM_91,0.142417 +130,VM_112,0.150249 +130,VM_35,0.146134 +130,VM_53,0.139145 +130,VM_127,0.153235 +130,VM_77,0.145835 +130,VM_62,0.151264 +130,VM_113,0.162695 +130,VM_96,0.013477 +130,VM_72,0.182664 +130,VM_65,0.165728 +130,VM_78,0.096509 +130,VM_38,0.012429 +130,VM_122,0.159495 +130,VM_73,0.154155 +130,VM_47,0.148516 +130,VM_43,0.181742 +130,VM_116,0.16671 +130,VM_28,0.161303 +130,VM_53,0.1255 +130,VM_38,0.016207 +130,VM_119,0.172948 +130,VM_82,0.18728 +130,VM_71,0.158907 +130,VM_31,0.169587 +130,VM_69,0.151529 +130,VM_112,0.175301 +130,VM_25,0.166415 +130,VM_45,0.162633 +130,VM_4,0.151432 +130,VM_65,0.184379 +130,VM_125,0.175941 +130,VM_112,0.022508 +130,VM_43,0.159932 +130,VM_52,0.155496 +130,VM_61,0.165863 +130,VM_37,0.135242 +130,VM_101,0.158299 +130,VM_5,0.150388 +130,VM_12,0.169023 +130,VM_16,0.167487 +130,VM_106,0.152582 +130,VM_92,0.172183 +130,VM_14,0.144487 +130,VM_9,0.147519 +130,VM_90,0.144234 +130,VM_99,0.16713 +130,VM_73,0.166747 +130,VM_6,0.138721 +130,VM_113,0.148684 +130,VM_121,0.139953 +130,VM_105,0.135903 +130,VM_31,0.01924 +130,VM_21,0.134616 +130,VM_9,0.014694 +130,VM_14,0.017669 +130,VM_29,0.177122 +130,VM_118,0.133012 +130,VM_42,0.147887 +130,VM_39,0.161083 +130,VM_48,0.157976 +130,VM_23,0.165886 +130,VM_58,0.135252 +130,VM_18,0.15273 +130,VM_106,0.008813 +130,VM_124,0.140551 +130,VM_48,0.026481 +130,VM_76,0.153779 +130,VM_5,0.018606 +130,VM_113,0.020121 +130,VM_66,0.144235 +130,VM_100,0.158289 +130,VM_58,0.011958 +130,VM_96,0.155833 +130,VM_72,0.132562 +130,VM_35,0.147971 +130,VM_118,0.012245 +130,VM_28,0.166733 +130,VM_127,0.166539 +130,VM_100,0.010465 +130,VM_28,0.011763 +130,VM_13,0.1551 +130,VM_108,0.124997 +130,VM_52,0.021773 +130,VM_107,0.147383 +130,VM_26,0.142149 +130,VM_93,0.172586 +130,VM_111,0.156165 +130,VM_82,0.023906 +130,VM_61,0.016483 +130,VM_105,0.022278 +130,VM_75,0.162304 +130,VM_35,0.020398 +130,VM_128,0.159765 +130,VM_15,0.161616 +130,VM_120,0.155772 +130,VM_124,0.019436 +130,VM_129,0.165278 +130,VM_97,0.166648 +130,VM_118,0.023494 +130,VM_111,0.036552 +130,VM_79,0.177538 +130,VM_95,0.16369 +130,VM_79,0.026479 +130,VM_63,0.174248 +130,VM_36,0.190806 +130,VM_57,0.165101 +130,VM_82,0.010232 +130,VM_32,0.182738 +130,VM_45,0.025976 +130,VM_116,0.17875 +130,VM_22,0.150853 +130,VM_43,0.024266 +130,VM_95,0.01061 +130,VM_8,0.144277 +130,VM_17,0.133662 +130,VM_65,0.012764 +130,VM_114,0.130916 +130,VM_32,0.022358 +130,VM_0,0.157772 +130,VM_129,0.00834 +130,VM_123,0.127842 +130,VM_4,0.013056 +130,VM_49,0.151024 +130,VM_54,0.138707 +130,VM_84,0.137222 +130,VM_116,0.010324 +130,VM_40,0.224392 +130,VM_100,0.011976 +130,VM_44,0.144323 +130,VM_20,0.134812 +130,VM_103,0.156919 +130,VM_32,0.013432 +130,VM_61,0.009209 +130,VM_108,0.019003 +130,VM_57,0.017596 +130,VM_49,0.024235 +130,VM_81,0.151745 +130,VM_112,0.025135 +130,VM_66,0.01171 +130,VM_65,0.008064 +130,VM_127,0.009631 +130,VM_53,0.015246 +130,VM_121,0.021889 +130,VM_102,0.159282 +130,VM_44,0.021524 +130,VM_40,0.01172 +130,VM_7,0.136998 +130,VM_75,0.013113 +130,VM_107,0.015607 +130,VM_55,0.158164 +130,VM_84,0.011116 +130,VM_111,0.011361 +130,VM_128,0.017177 +130,VM_24,0.152914 +130,VM_46,0.143449 +130,VM_23,0.012088 +130,VM_100,0.01334 +130,VM_35,0.020035 +130,VM_12,0.012128 +130,VM_81,0.016772 +130,VM_58,0.008374 +130,VM_26,0.018201 +130,VM_113,0.034195 +130,VM_128,0.020151 +130,VM_45,0.008736 +130,VM_56,0.139518 +130,VM_35,0.019075 +130,VM_91,0.745004 +130,VM_91,0.311008 +130,VM_62,0.153647 +130,VM_16,0.017296 +130,VM_41,0.156093 +130,VM_127,0.009964 +130,VM_4,0.025145 +130,VM_45,0.040496 +130,VM_123,0.032665 +130,VM_77,0.163581 +130,VM_101,0.020003 +130,VM_28,0.016825 +130,VM_68,0.178817 +130,VM_17,0.025313 +130,VM_60,0.181268 +130,VM_119,0.029196 +130,VM_17,0.04732 +140,VM_129,0.012774 +140,VM_24,0.160129 +140,VM_71,0.419901 +140,VM_42,0.162188 +140,VM_35,0.13284 +140,VM_125,0.678593 +140,VM_74,0.316466 +140,VM_41,0.813075 +140,VM_38,0.228235 +140,VM_71,0.031374 +140,VM_119,0.897949 +140,VM_125,0.039465 +140,VM_44,0.931563 +140,VM_93,0.637839 +140,VM_124,0.987352 +140,VM_15,0.55646 +140,VM_136,0.681732 +140,VM_53,0.3087 +140,VM_59,0.662485 +140,VM_56,0.029274 +140,VM_4,0.879622 +140,VM_66,0.615938 +140,VM_19,0.372447 +140,VM_10,0.995332 +140,VM_101,0.826096 +140,VM_33,0.133684 +140,VM_108,0.024431 +140,VM_57,0.224822 +140,VM_40,0.726169 +140,VM_26,0.144115 +140,VM_48,0.148837 +140,VM_54,0.171505 +140,VM_75,0.163487 +140,VM_38,0.160067 +140,VM_66,0.166512 +140,VM_70,0.176719 +140,VM_74,0.174532 +140,VM_91,0.176765 +140,VM_83,0.158408 +140,VM_29,0.176349 +140,VM_102,0.167873 +140,VM_57,0.020203 +140,VM_105,0.182594 +140,VM_131,0.209076 +140,VM_127,0.158381 +140,VM_62,0.156376 +140,VM_20,0.15056 +140,VM_78,0.14066 +140,VM_83,0.021402 +140,VM_12,0.316654 +140,VM_12,0.924938 +140,VM_81,0.160092 +140,VM_57,0.021515 +140,VM_16,0.165442 +140,VM_139,0.160113 +140,VM_52,0.197781 +140,VM_55,0.162923 +140,VM_20,0.012295 +140,VM_4,0.155993 +140,VM_86,0.144815 +140,VM_4,0.015783 +140,VM_51,0.167896 +140,VM_21,0.151259 +140,VM_7,0.192795 +140,VM_9,0.161477 +140,VM_131,0.02198 +140,VM_96,0.155605 +140,VM_100,0.139073 +140,VM_102,0.017391 +140,VM_39,0.198186 +140,VM_20,0.026247 +140,VM_79,0.165681 +140,VM_53,0.200598 +140,VM_84,0.163878 +140,VM_82,0.155133 +140,VM_89,0.171466 +140,VM_129,0.422373 +140,VM_131,0.029449 +140,VM_4,0.02464 +140,VM_68,0.530932 +140,VM_51,0.015017 +140,VM_65,0.484384 +140,VM_45,0.293473 +140,VM_51,0.034949 +140,VM_27,0.615106 +140,VM_92,0.154281 +140,VM_105,0.014597 +140,VM_101,0.57607 +140,VM_40,0.029606 +140,VM_85,0.827241 +140,VM_117,0.687844 +140,VM_43,0.18798 +140,VM_40,0.058035 +140,VM_115,0.134848 +140,VM_62,0.058191 +140,VM_2,0.541964 +140,VM_96,0.039239 +140,VM_5,0.5522 +140,VM_92,0.141296 +140,VM_75,0.017958 +140,VM_124,0.355523 +140,VM_26,0.020039 +140,VM_107,0.881767 +140,VM_81,0.01341 +140,VM_75,0.016363 +140,VM_126,0.157748 +140,VM_47,0.175653 +140,VM_64,0.151569 +140,VM_50,0.166695 +140,VM_64,0.017519 +140,VM_44,0.158821 +140,VM_66,0.013971 +140,VM_63,0.151236 +140,VM_24,0.150933 +140,VM_74,0.010319 +140,VM_71,0.157169 +140,VM_34,0.178885 +140,VM_9,0.015311 +140,VM_93,0.183313 +140,VM_86,0.009375 +140,VM_39,0.018927 +140,VM_110,0.164387 +140,VM_56,0.16833 +140,VM_82,0.015417 +140,VM_62,0.015525 +140,VM_68,0.009526 +140,VM_80,0.170102 +140,VM_30,0.164873 +140,VM_107,0.016529 +140,VM_90,0.081422 +140,VM_108,0.035024 +140,VM_79,0.175441 +140,VM_8,0.14363 +140,VM_71,0.168434 +140,VM_62,0.160181 +140,VM_41,0.144524 +140,VM_98,0.175346 +140,VM_123,0.148975 +140,VM_100,0.169791 +140,VM_79,0.0128 +140,VM_78,0.154366 +140,VM_97,0.169081 +140,VM_57,0.167987 +140,VM_46,0.168876 +140,VM_122,0.186375 +140,VM_86,0.164811 +140,VM_26,0.162872 +140,VM_72,0.175671 +140,VM_35,0.166333 +140,VM_4,0.171075 +140,VM_97,0.034644 +140,VM_36,0.202816 +140,VM_94,0.5668 +140,VM_25,0.058948 +140,VM_38,0.632675 +140,VM_129,0.020123 +140,VM_112,0.420521 +140,VM_101,0.776228 +140,VM_40,0.688421 +140,VM_61,0.697872 +140,VM_1,0.570242 +140,VM_38,0.026403 +140,VM_11,0.868305 +140,VM_4,0.014266 +140,VM_43,0.92173 +140,VM_80,0.868199 +140,VM_62,0.013272 +140,VM_74,0.954151 +140,VM_139,0.709353 +140,VM_45,0.811938 +140,VM_99,0.168641 +140,VM_80,0.026346 +140,VM_126,0.649917 +140,VM_113,0.643764 +140,VM_55,0.479964 +140,VM_5,0.436688 diff --git a/BENCHMARKING/RESULTS/web_apache_cont_benchmark.csv b/BENCHMARKING/RESULTS/web_apache_cont_benchmark.csv new file mode 100644 index 0000000..fab0930 --- /dev/null +++ b/BENCHMARKING/RESULTS/web_apache_cont_benchmark.csv @@ -0,0 +1,53 @@ +TEST_RUN,QUERIES_SENT,QUERIES_PER_SECOND,AVG_LATENCY_MILLISECONDS,MAX_LATENCY_MILLISECONDS,LATENCY_STD_DEV_PERCENT +1,30004,100.01,1.52,15.04,1.22 +2,60004,200.01,5.53,98.24,15.26 +3,86523,errors:,10.34,86.59,17.49 +4,97188,errors:,14.77,100.48,21.82 +5,150004,500.01,1.35,15.90,0.85 +6,180004,600.01,1.29,11.84,772.32 +7,210004,700.01,1.33,12.25,814.78 +8,240004,800.01,1.32,16.99,835.06 +9,269992,899.97,1.41,15.10,0.89 +10,299965,999.88,1.61,43.87,1.16 +11,329977,1099.92,1.31,19.14,0.86 +12,359967,1199.89,1.30,16.26,0.86 +13,308094,errors:,1.72,51.23,2.43 +14,419961,1399.86,1.28,16.22,0.85 +15,449957,1499.86,1.30,16.86,0.91 +16,479956,1599.84,1.27,18.67,0.90 +17,509947,1699.82,1.47,18.24,1.02 +18,539937,1799.79,1.35,20.96,0.95 +19,518643,errors:,1.53,48.03,2.09 +20,599924,1999.74,1.48,15.46,1.04 +21,456201,errors:,2.73,55.87,3.63 +22,659914,2199.70,1.36,20.53,1.02 +23,689901,2299.67,1.31,18.86,0.97 +24,463255,errors:,2.63,64.32,3.49 +25,749893,2499.64,1.44,18.54,1.06 +26,779887,2599.62,1.32,18.93,0.98 +27,710465,errors:,2.13,64.99,3.10 +28,839872,2799.58,1.46,24.35,1.09 +29,869872,2899.56,2.28,1.00,23.82 +30,753759,errors:,1.85,57.95,2.51 +31,929856,3099.52,1.35,22.18,1.08 +32,959839,3199.46,1.49,23.01,1.16 +33,940349,errors:,2.46,73.92,3.68 +34,887274,errors:,2.38,63.30,3.64 +35,1018333,errors:,1.45,38.02,1.29 +36,809203,errors:,2.66,229.25,3.51 +37,1109817,3699.39,1.48,25.94,1.17 +38,1128419,errors:,1.27,24.27,1.09 +39,1169809,3899.36,1.44,23.55,1.15 +40,758943,errors:,3.08,55.78,3.64 +41,971669,errors:,2.02,63.10,3.14 +42,1120557,errors:,1.99,59.04,3.20 +43,1073221,errors:,2.55,68.48,3.99 +44,1108674,errors:,2.19,59.17,3.47 +45,1107577,errors:,1.92,75.39,2.92 +46,1020400,errors:,2.76,74.82,4.07 +47,1205310,errors:,2.44,76.22,3.77 +48,1097203,errors:,1.71,63.36,2.49 +49,1190790,errors:,2.54,68.93,3.95 +50,1154937,errors:,2.71,73.34,3.99 +51,1152226,errors:,1.86,68.10,2.71 +52,1139356,errors:,2.49,64.61,3.77 diff --git a/BENCHMARKING/RESULTS/web_cont_benchmark.csv b/BENCHMARKING/RESULTS/web_cont_benchmark.csv new file mode 100644 index 0000000..8f8c490 --- /dev/null +++ b/BENCHMARKING/RESULTS/web_cont_benchmark.csv @@ -0,0 +1,2 @@ +TEST_RUN,QUERIES_SENT,QUERIES_PER_SECOND,AVG_LATENCY_MILLISECONDS,MAX_LATENCY_MILLISECONDS,LATENCY_STD_DEV_PERCENT +1,0,errors:,-,0.00,- diff --git a/BENCHMARKING/RESULTS/web_unik_benchmark.csv b/BENCHMARKING/RESULTS/web_unik_benchmark.csv new file mode 100644 index 0000000..14ae557 --- /dev/null +++ b/BENCHMARKING/RESULTS/web_unik_benchmark.csv @@ -0,0 +1,37 @@ +TEST_RUN,QUERIES_SENT,QUERIES_PER_SECOND,AVG_LATENCY_MILLISECONDS,MAX_LATENCY_MILLISECONDS,LATENCY_STD_DEV_PERCENT +1,30004,100.01,3.65,18.64,2.13 +2,60004,200.01,4.56,22.26,3.23 +3,90004,300.01,3.08,217.60,3.28 +4,120004,400.01,4.33,136.96,4.11 +5,150004,500.01,4.30,95.36,3.54 +6,180004,600.01,3.24,50.69,2.03 +7,210004,700.01,2.92,26.43,1.83 +8,240004,800.01,5.75,40.54,5.37 +9,269992,899.97,4.49,29.44,3.88 +10,299986,999.94,3.25,39.71,2.00 +11,329965,1099.86,7.52,37.73,6.28 +12,359965,1199.87,10.04,41.28,7.78 +13,389961,1299.87,5.04,38.02,4.26 +14,419961,1399.87,3.78,37.63,2.89 +15,449956,1499.84,5.93,36.70,5.12 +16,479952,1599.84,4.51,1.02,24.24 +17,509941,1699.80,3.96,37.34,3.19 +18,539931,1799.77,8.07,40.10,6.09 +19,569930,1899.75,4.51,51.68,4.00 +20,599905,1999.61,10.44,43.14,7.12 +21,629914,2099.71,5.53,43.97,4.45 +22,659898,2199.67,5.74,44.67,4.24 +23,689899,2299.66,6.34,49.92,5.65 +24,719899,2399.65,11.37,54.05,8.06 +25,749895,2499.63,8.07,54.66,5.78 +26,779884,2599.59,8.45,50.14,7.29 +27,809827,2699.31,15.97,59.55,8.63 +28,734062,2446.83,5.45,37.98,10.68 +29,869861,2899.54,12.20,58.46,8.84 +30,784697,2615.19,6.37,38.34,11.19 +31,818727,2728.72,3.71,35.82,8.43 +32,632347,2106.63,41.77,1.71,33.16 +33,674216,2246.32,47.19,1.60,28.58 +34,606538,2021.69,1.06,2.03,35.14 +35,719335,2396.51,47.68,1.58,26.97 +36,590733,1969.06,1.13,2.27,39.42 diff --git a/BENCHMARKING/UNIKERNEL/DNS/CMakeLists.txt b/BENCHMARKING/UNIKERNEL/DNS/CMakeLists.txt new file mode 100644 index 0000000..3874757 --- /dev/null +++ b/BENCHMARKING/UNIKERNEL/DNS/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 2.8.9) + +# IncludeOS install location +if (NOT DEFINED ENV{INCLUDEOS_PREFIX}) + set(ENV{INCLUDEOS_PREFIX} /usr/local) +endif() +include($ENV{INCLUDEOS_PREFIX}/includeos/pre.service.cmake) +project (DNS) + +# Human-readable name of your service +set(SERVICE_NAME "CETIC DNS Service") + +# Name of your service binary +set(BINARY "DNS") + +# Source files to be linked with OS library parts to form bootable image +set(SOURCES + service.cpp # ...add more here + ) + +# To add your own include paths: +# set(LOCAL_INCLUDES ".") + +# DRIVERS / PLUGINS: + +set(DRIVERS + virtionet # Virtio networking + # virtioblock # Virtio block device + # ... Others from src/drivers +) + +set(PLUGINS + ) + +# include service build script +include($ENV{INCLUDEOS_PREFIX}/includeos/post.service.cmake) diff --git a/BENCHMARKING/UNIKERNEL/DNS/cmake_build.sh b/BENCHMARKING/UNIKERNEL/DNS/cmake_build.sh new file mode 100644 index 0000000..529e821 --- /dev/null +++ b/BENCHMARKING/UNIKERNEL/DNS/cmake_build.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +mkdir -p build +pushd build +cmake .. +make +popd diff --git a/BENCHMARKING/UNIKERNEL/DNS/config.json b/BENCHMARKING/UNIKERNEL/DNS/config.json new file mode 100644 index 0000000..67acdca --- /dev/null +++ b/BENCHMARKING/UNIKERNEL/DNS/config.json @@ -0,0 +1,11 @@ +{ + "net": [ + { + "iface": 0, + "config": "static", + "address": "192.168.122.100", + "netmask": "255.255.255.0", + "gateway": "192.168.122.1" + } + ] +} diff --git a/BENCHMARKING/UNIKERNEL/DNS/service.cpp b/BENCHMARKING/UNIKERNEL/DNS/service.cpp new file mode 100644 index 0000000..ba3342e --- /dev/null +++ b/BENCHMARKING/UNIKERNEL/DNS/service.cpp @@ -0,0 +1,262 @@ +/** + * Basic DNS server for the IncludeOS unikernel framework. + * + * This code uses portions of code created by GitHub user tomasorti for his dns-server project (https://github.com/tomasorti/dns-server) + */ + +#include +#include +#include +#include + +using namespace net; + +#define SERVER_PORT 53 + +static const uint QR_MASK = 0x8000; +static const uint OPCODE_MASK = 0x7800; +static const uint AA_MASK = 0x0400; +static const uint TC_MASK = 0x0200; +static const uint RD_MASK = 0x0100; +static const uint RA_MASK = 0x8000; +static const uint RCODE_MASK = 0x000F; +static const uint HDR_OFFSET = 12; +static const int BUFFER_SIZE = 1024; + +// for more info on DNS fields, see RFC 1035 + +struct queryHeader { + uint id; // 16 bit identifier assigned by the program who generated the query + uint query; // identifies if message is query (0) or a response (1) + uint opcode; // 4 bit field specifying kind of query: standard (0), inverse (1), server status request (2), reserved (3-15) + uint aa; // bit indicating if responding server is an authority for the domain name + uint truncation; // specifies whether this message was truncated or not + uint recursionDesired; // may be set in a query, directs the name server to pursue the query recursively + uint recursionAvailable; // set in a response, indicates whether recursive queries are available + uint responseCode; // 4 bit response code: 0 - no error, 1 - format error, 2 - server failure, 3 - name error, 4 - not implemented, 5 - refused + + // unsigned 16-bit integers + uint questionCount; // number of entries in the question section + uint answerCount; // number of resource reconds in the answer section + uint nameServerCount; // number of name server resource records in the authority records section + uint additionalResourceCount; // number of resource records in the additional records section +}; + +struct queryQuestion { + std::string queryName; // domain name requested + uint queryType; // 2 octet code specifying the type of the query + uint queryClass; // 2 octet code specifying the class of the query +}; + +queryHeader pQueryHeader; +queryQuestion pQueryQuestion; +std::map> resourceRecords; + +uint get16bits(const char*& buffer) { + uint value = static_cast (buffer[0]); + value = value << 8; + value += static_cast (buffer[1]); + buffer += 2; + + return value; +} + +void put8bits(char*& buffer, uint value) throw () { + buffer[0] = (value); + buffer += 1; +} + +void put16bits(char*& buffer, uint value) throw () { + buffer[0] = (value & 0xFF00) >> 8; + buffer[1] = value & 0xFF; + buffer += 2; +} + +void put32bits(char*& buffer, ulong value) throw () { + buffer[0] = (value & 0xFF000000) >> 24; + buffer[1] = (value & 0xFF0000) >> 16; + buffer[2] = (value & 0xFF00) >> 16; + buffer[3] = (value & 0xFF) >> 16; + buffer += 4; +} + +queryHeader decodeHeader(const char* data, queryHeader pQueryHeader){ + pQueryHeader.id = get16bits(data); + + uint fields = get16bits(data); + pQueryHeader.query = fields & QR_MASK; + pQueryHeader.opcode = fields & OPCODE_MASK; + pQueryHeader.aa = fields & AA_MASK; + pQueryHeader.truncation = fields & TC_MASK; + pQueryHeader.recursionDesired = fields & RD_MASK; + pQueryHeader.recursionAvailable = fields & RA_MASK; + + pQueryHeader.questionCount = get16bits(data); + pQueryHeader.answerCount = get16bits(data); + pQueryHeader.nameServerCount = get16bits(data); + pQueryHeader.additionalResourceCount = get16bits(data); + return pQueryHeader; +} + +queryQuestion decodeQuery(const char*& data, queryQuestion pQueryQuestion){ + pQueryQuestion.queryName = ""; + + int length = *data++; + while (length != 0) { + for (int i = 0; i < length; i++) { + char c = *data++; + pQueryQuestion.queryName.append(1, c); + } + length = *data++; + if (length != 0) pQueryQuestion.queryName.append(1,'.'); + } + + pQueryQuestion.queryType = get16bits(data); + pQueryQuestion.queryClass = get16bits(data); + return pQueryQuestion; +} + +void codeDomain(char*& buffer, const std::string& domain) { + int start = 0, end; // indexes + while ((end = domain.find('.', start)) != std::string::npos) { + *buffer++ = end - start; // label length octet + for (int i=start; i>::iterator record = resourceRecords.find(pQueryQuestion.queryName); + if (record == resourceRecords.end()) + bRRexists = false; + + + char* bufferBegin = buffer; + + // create header + put16bits(buffer, pQueryHeader.id); + + int fields = (1 << 15); // Response code + fields += (0 << 11); // Opcode + fields += (0 << 10); // Authoritative code + fields += (0 << 9); // Truncated code + fields += (1 << 8); // Recursion desired code + fields += (0 << 7); // Recursion available code + fields += (0 << 6); // Z reserved code + fields += (0 << 5); // Answers authenticated code + fields += (0 << 4); // Non-authenticated data code + if(bRRexists) + fields += 0; // Reply code + else + fields += 3; + put16bits(buffer, fields); + + put16bits(buffer, pQueryHeader.questionCount); // Questions count + if(bRRexists) + put16bits(buffer, 1); // Answers count + else + put16bits(buffer, 0); + put16bits(buffer, 0); // Authority RRs + put16bits(buffer, 0); // Additional RRs + + // create domain query section - copy original question format + codeDomain(buffer, pQueryQuestion.queryName); + put16bits(buffer, pQueryQuestion.queryType); + put16bits(buffer, pQueryQuestion.queryClass); + + // if requested domain exists in resourceRecords, create the answer + if(bRRexists){ + // compression code to pointing to original question - should be offset from ID to domain name (in number of 16bits) + put16bits(buffer, 49164); + + put16bits(buffer, pQueryQuestion.queryType); + put16bits(buffer, pQueryQuestion.queryClass); + put32bits(buffer, 0); // time to live + + put16bits(buffer, 4); // data length (always 4 for IPv4 addresses) + put8bits(buffer,resourceRecords[pQueryQuestion.queryName][0]); + put8bits(buffer,resourceRecords[pQueryQuestion.queryName][1]); + put8bits(buffer,resourceRecords[pQueryQuestion.queryName][2]); + put8bits(buffer,resourceRecords[pQueryQuestion.queryName][3]); + } + + int size = buffer - bufferBegin; + + return size; +} + +void Service::start() +{ + resourceRecords["www.cetic.be"].push_back(10); + resourceRecords["www.cetic.be"].push_back(0); + resourceRecords["www.cetic.be"].push_back(0); + resourceRecords["www.cetic.be"].push_back(5); + resourceRecords["cetic.be"].push_back(10); + resourceRecords["cetic.be"].push_back(0); + resourceRecords["cetic.be"].push_back(0); + resourceRecords["cetic.be"].push_back(5); + resourceRecords["internship.cetic.be"].push_back(10); + resourceRecords["internship.cetic.be"].push_back(0); + resourceRecords["internship.cetic.be"].push_back(0); + resourceRecords["internship.cetic.be"].push_back(5); + + // get the first network interfaces of the unikernel + auto& inet = Inet4::stack<0>(); + Expects(inet.is_configured()); + + printf("Service IP address is %s\n", inet.ip_addr().str().c_str()); + + const UDP::port_t port = SERVER_PORT; + auto& sock = inet.udp().bind(port); + + sock.on_read( + [&sock] (UDP::addr_t addr, UDP::port_t port, const char* data, size_t len){ + + pQueryHeader = decodeHeader(data, pQueryHeader); + data += HDR_OFFSET; + pQueryQuestion = decodeQuery(data, pQueryQuestion); + + // debug output + printf("####### INCOMMING REQUEST #######\n"); + printf("Getting UDP data from %s:%d\n", addr.str().c_str(), port); + printf("Header:\n"); + printf("\tID: %u\n",pQueryHeader.id); + printf("\tQuery: %u\n", pQueryHeader.query); + printf("\topCode: %u\n", pQueryHeader.opcode); + printf("\tAA: %u\n", pQueryHeader.aa); + printf("\tTruncation: %u\n", pQueryHeader.truncation); + printf("\tRecursion Desired: %u\n", pQueryHeader.recursionDesired); + printf("\tRecursion Available: %u\n", pQueryHeader.recursionAvailable); + printf("\tReponse Code: %u\n", pQueryHeader.responseCode); + printf("\tQuestion Count: %u\n", pQueryHeader.questionCount); + printf("\tAnswer Count: %u\n", pQueryHeader.answerCount); + printf("\tName Server Count: %u\n", pQueryHeader.nameServerCount); + printf("\tAdditional Resource Count: %u\n", pQueryHeader.additionalResourceCount); + printf("Query:\n"); + printf("\tQuery name: %s\n", pQueryQuestion.queryName.data()); + printf("\tQuery Type: %u\n", pQueryQuestion.queryType); + printf("\tAdditional Resource Count: %u\n", pQueryQuestion.queryClass); + printf("#################################\n"); + + // send reply + char buffer[BUFFER_SIZE]; + + int nbrBytes = processQuery(buffer, pQueryHeader, pQueryQuestion); + + sock.sendto(addr, port, buffer, nbrBytes); + }); + + INFO("DNS Server", "Listening on port %d\n", port); +} \ No newline at end of file diff --git a/BENCHMARKING/UNIKERNEL/DNS/vm.json b/BENCHMARKING/UNIKERNEL/DNS/vm.json new file mode 100644 index 0000000..fb4ef39 --- /dev/null +++ b/BENCHMARKING/UNIKERNEL/DNS/vm.json @@ -0,0 +1,6 @@ +{ + "net" : [ + {"device" : "virtio", "mac" : "c0:01:0a:00:00:2a"}, + {"device" : "virtio", "mac" : "c0:01:0a:00:00:3a"} + ] +} diff --git a/BENCHMARKING/UNIKERNEL/WebServer/CMakeLists.txt b/BENCHMARKING/UNIKERNEL/WebServer/CMakeLists.txt new file mode 100644 index 0000000..863ccce --- /dev/null +++ b/BENCHMARKING/UNIKERNEL/WebServer/CMakeLists.txt @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 2.8.9) +if (NOT DEFINED ENV{INCLUDEOS_PREFIX}) + set(ENV{INCLUDEOS_PREFIX} /usr/local) +endif() +include($ENV{INCLUDEOS_PREFIX}/includeos/pre.service.cmake) + +project (WebServer) + +# Human-readable name of your service +set(SERVICE_NAME "CETIC Unikernel Web Server") + +# Name of your service binary +set(BINARY "WebServer") + +# Source files to be linked with OS library parts to form bootable image +set(SOURCES + service.cpp # ...add more here + ) + +# To add your own include paths: +# set(LOCAL_INCLUDES ".") + +# DRIVERS / PLUGINS: +set(DRIVERS + virtionet # Virtio networking + ) + +set(PLUGINS + autoconf + ) + +# STATIC LIBRARIES: +set(LIBRARIES + # path to full library + ) + + +# include service build script +include($ENV{INCLUDEOS_PREFIX}/includeos/post.service.cmake) + +# Create in-memory filesystem from folder +diskbuilder(disk) diff --git a/BENCHMARKING/UNIKERNEL/WebServer/cmake_build.sh b/BENCHMARKING/UNIKERNEL/WebServer/cmake_build.sh new file mode 100644 index 0000000..529e821 --- /dev/null +++ b/BENCHMARKING/UNIKERNEL/WebServer/cmake_build.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +mkdir -p build +pushd build +cmake .. +make +popd diff --git a/BENCHMARKING/UNIKERNEL/WebServer/config.json b/BENCHMARKING/UNIKERNEL/WebServer/config.json new file mode 100644 index 0000000..2c28675 --- /dev/null +++ b/BENCHMARKING/UNIKERNEL/WebServer/config.json @@ -0,0 +1,13 @@ +{ + "net": [ + { + "iface": 0, + "config": "static", + "address": "192.168.122.5", + "netmask": "255.255.255.0", + "gateway": "192.168.122.1" + } + ] +} + + diff --git a/BENCHMARKING/UNIKERNEL/WebServer/disk/index.html b/BENCHMARKING/UNIKERNEL/WebServer/disk/index.html new file mode 100644 index 0000000..c6c9b59 --- /dev/null +++ b/BENCHMARKING/UNIKERNEL/WebServer/disk/index.html @@ -0,0 +1,15 @@ + + + + + CETIC Internship Unikernel Web Page + + + +

+ CETIC Internship Unikernel Web Page +

+
+

This is the first web server spawn from a unikernel during the CETIC Intership 2017-18

+ + diff --git a/BENCHMARKING/UNIKERNEL/WebServer/service.cpp b/BENCHMARKING/UNIKERNEL/WebServer/service.cpp new file mode 100644 index 0000000..50ea18b --- /dev/null +++ b/BENCHMARKING/UNIKERNEL/WebServer/service.cpp @@ -0,0 +1,47 @@ +/* + * This code is adapted from the IncludeOS Acorn web server example. + */ + +#include +#include +#include +#include +std::unique_ptr server; + +void Service::start() +{ + // Retreive the stack (configured from outside) + auto& inet = net::Inet4::stack<0>(); + Expects(inet.is_configured()); + + // Init the memdisk + auto& disk = fs::memdisk(); + disk.init_fs([] (auto err, auto&) { + Expects(not err); + }); + // Retreive the HTML page from the disk + auto file = disk.fs().read_file("/index.html"); + Expects(file.is_valid()); + net::tcp::buffer_t html( + new std::vector (file.data(), file.data() + file.size())); + + // Create a HTTP Server and setup request handling + server = std::make_unique(inet.tcp()); + server->on_request([html] (auto req, auto rw) + { + // We only support get + if(req->method() != http::GET) { + rw->write_header(http::Not_Found); + return; + } + // Serve HTML on / + if(req->uri() == "/") { + rw->write(html); + } else { + rw->write_header(http::Not_Found); + } + }); + + // Start listening on port 80 + server->listen(80); +} diff --git a/BENCHMARKING/bench_container_dns.sh b/BENCHMARKING/bench_container_dns.sh new file mode 100644 index 0000000..6324be2 --- /dev/null +++ b/BENCHMARKING/bench_container_dns.sh @@ -0,0 +1,38 @@ +#!/bin/bash +SRC_DIR=$HOME/unikernels +CONTAINERS=$SRC_DIR/SOURCE/CONTAINER + +#IP=$(ip -4 route get 8.8.8.8 | awk {'print $7'} | tr -d '\n') +IP=10.65.0.101 +PORT=53 + +source $SRC_DIR/BENCHMARKING/bench_unikernel_cleanup.sh + +# build Docker containers +# 1 - compiler docker +pushd $CONTAINERS && +docker build -t cetic/compiler . && +popd && + +# 2 - individual dockers +pushd $CONTAINERS/DNS && +docker run --rm -it -v "${PWD}":/usr/src/build -w /usr/src/build cetic/compiler g++ -std=c++11 -static -o runnableService *.cpp && +docker build -t cetic/dns . && +popd && + +# stopping all VMs and containers +docker stop $(docker ps -a -q) +virsh list | grep running | awk '{ print $2}' | while read DOMAIN; do + virsh destroy $DOMAIN + sleep 3 +done + +# launch docker containers +docker run --rm --cpus 1 -m 128m -d -p $IP:$PORT:$PORT/udp --name DNSBench cetic/dns && + +echo "#############################################################################" && +echo "### ###" && +echo "### Container DNS Server ready for benchmark. ###" && +echo "### $IP:$PORT ###" && +echo "### ###" && +echo "#############################################################################" diff --git a/BENCHMARKING/bench_container_web.sh b/BENCHMARKING/bench_container_web.sh new file mode 100644 index 0000000..7eecd6e --- /dev/null +++ b/BENCHMARKING/bench_container_web.sh @@ -0,0 +1,38 @@ +#!/bin/bash +SRC_DIR=$HOME/unikernels +CONTAINERS=$SRC_DIR/SOURCE/CONTAINER + +#IP=$(ip -4 route get 8.8.8.8 | awk {'print $7'} | tr -d '\n') +IP=10.65.0.101 +PORT=80 + +source $SRC_DIR/BENCHMARKING/bench_unikernel_cleanup.sh + +# build Docker containers +# 1 - compiler docker +pushd $CONTAINERS && +docker build -t cetic/compiler . && +popd && + +# 2 - individual dockers +pushd $CONTAINERS/WebServer && +docker run --rm -it -v "${PWD}":/usr/src/build -w /usr/src/build cetic/compiler g++ -std=c++11 -static -o runnableService *.cpp && +docker build -t cetic/webserver . && +popd && + +# stopping all VMs and containers +docker stop $(docker ps -a -q) +virsh list | grep running | awk '{ print $2}' | while read DOMAIN; do + virsh destroy $DOMAIN + sleep 3 +done + +# launch docker containers +docker run --rm --cpus 1 -m 128m -d -p $IP:$PORT:$PORT --name WebServerBench cetic/webserver && + +echo "#############################################################################" && +echo "### ###" && +echo "### Container Web Server ready for benchmark. ###" && +echo "### $IP:$PORT ###" && +echo "### ###" && +echo "#############################################################################" diff --git a/BENCHMARKING/bench_unikernel_cleanup.sh b/BENCHMARKING/bench_unikernel_cleanup.sh new file mode 100644 index 0000000..ecde648 --- /dev/null +++ b/BENCHMARKING/bench_unikernel_cleanup.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +WEB_IP=192.168.122.5 +DNS_IP=192.168.122.100 +WEB_PORT=80 +DNS_PORT=53 +BRIDGE_INTERFACE=virbr0 + +sudo iptables -D FORWARD -o $BRIDGE_INTERFACE -d $DNS_IP -j ACCEPT +sudo iptables -t nat -D PREROUTING -p udp --dport $DNS_PORT -j DNAT --to $DNS_IP:$DNS_PORT + +sudo iptables -D FORWARD -o $BRIDGE_INTERFACE -d $WEB_IP -j ACCEPT +sudo iptables -t nat -D PREROUTING -p tcp --dport $WEB_PORT -j DNAT --to $WEB_IP:$WEB_PORT diff --git a/BENCHMARKING/bench_unikernel_dns.sh b/BENCHMARKING/bench_unikernel_dns.sh new file mode 100644 index 0000000..d7c9c31 --- /dev/null +++ b/BENCHMARKING/bench_unikernel_dns.sh @@ -0,0 +1,55 @@ +#!/bin/bash +SRC_DIR=$HOME/unikernels/BENCHMARKING +UNIKERNELS=$SRC_DIR/UNIKERNEL + +HOST_IP=$(ip -4 route get 8.8.8.8 | awk {'print $7'} | tr -d '\n') +GUEST_IP=192.168.122.100 +GUEST_PORT=53 +HOST_PORT=53 +BRIDGE_INTERFACE=virbr0 + +#write correct JSON file +pushd $UNIKERNELS/DNS && +jq -n --arg IP_ADDRESS "$GUEST_IP" '{"net": [{"netmask": "255.255.255.0", "config": "static", "iface": 0, "gateway": "192.168.122.1", "address": $IP_ADDRESS}]}' > config.json && +# build unikernels +sudo rm -rf build && +mkdir -p build && +pushd build && +cmake .. && +sudo make && +popd && +popd && + +# shuting down all VMs +docker stop $(docker ps -a -q) +virsh list | grep running | awk '{ print $2}' | while read DOMAIN; do + virsh destroy $DOMAIN + sleep 3 + if [ "$DOMAIN" == "DNSBench" ] + then + virsh undefine $DOMAIN + fi +done +virsh undefine DNSBench + +# launch unikernels in QEMU (+serial output to files) +virt-install \ + --virt-type qemu --name DNSBench \ + --vcpus 1 --ram 128 \ + --import --disk $UNIKERNELS/DNS/build/DNS.img \ + --serial file,path=/tmp/dns-benchmark.log \ + --network network=default,model=virtio \ + --check path_in_use=off \ + --noautoconsole && + +# enable port-forwarding through iptables +source $SRC_DIR/bench_unikernel_cleanup.sh +sudo iptables -I FORWARD -o $BRIDGE_INTERFACE -d $GUEST_IP -j ACCEPT && +sudo iptables -t nat -I PREROUTING -p udp --dport $HOST_PORT -j DNAT --to $GUEST_IP:$GUEST_PORT && + +echo "#############################################################################" && +echo "### ###" && +echo "### Unikernel DNS Server ready for benchmark. ###" && +echo "### $HOST_IP:$HOST_PORT ###" && +echo "### ###" && +echo "#############################################################################" diff --git a/BENCHMARKING/bench_unikernel_web.sh b/BENCHMARKING/bench_unikernel_web.sh new file mode 100644 index 0000000..f4af24a --- /dev/null +++ b/BENCHMARKING/bench_unikernel_web.sh @@ -0,0 +1,52 @@ +#!/bin/bash +SRC_DIR=$HOME/unikernels/BENCHMARKING +UNIKERNELS=$SRC_DIR/UNIKERNEL + +HOST_IP=$(ip -4 route get 8.8.8.8 | awk {'print $7'} | tr -d '\n') +GUEST_IP=192.168.122.5 +GUEST_PORT=80 +HOST_PORT=80 +BRIDGE_INTERFACE=virbr0 + +# writing correct JSON file +pushd $UNIKERNELS/DNS && +jq -n --arg IP_ADDRESS "$GUEST_IP" '{"net": [{"netmask": "255.255.255.0", "config": "static", "iface": 0, "gateway": "192.168.122.1", "address": $IP_ADDRESS}]}' > config.json && +# build unikernels +sudo rm -rf build && +mkdir -p build && +pushd build && +cmake .. && +sudo make && +popd && +popd && + +# shuting down all VMs +docker stop $(docker ps -a -q) +virsh list | grep running | awk '{ print $2}' | while read DOMAIN; do + virsh destroy $DOMAIN + sleep 3 +done +virsh undefine WebServerBench + +# launch unikernels in QEMU (+serial output to files) +virt-install \ + --virt-type qemu --name WebServerBench \ + --vcpus 1 --ram 128 \ + --import --disk $UNIKERNELS/WebServer/build/WebServer.img \ + --serial file,path=/tmp/web-benchmark.log \ + --network network=default,model=virtio \ + --check path_in_use=off \ + --noautoconsole && + +# enable port-forwarding through iptables +source $SRC_DIR/bench_unikernel_cleanup.sh +sudo iptables -I FORWARD -o $BRIDGE_INTERFACE -d $GUEST_IP -j ACCEPT && +sudo iptables -t nat -I PREROUTING -p tcp --dport $HOST_PORT -j DNAT --to $GUEST_IP:$GUEST_PORT && + +echo "#############################################################################" && +echo "### ###" && +echo "### Unikernel Web Server ready for benchmark. ###" && +echo "### $HOST_IP:$HOST_PORT ###" && +echo "### ###" && +echo "#############################################################################" + diff --git a/BENCHMARKING/cleanup_all.sh b/BENCHMARKING/cleanup_all.sh new file mode 100644 index 0000000..ea86e79 --- /dev/null +++ b/BENCHMARKING/cleanup_all.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# REMOVING IP TABLES RULES FOR UNIKERNEL BENCHMARKING +WEB_IP=192.168.122.5 +DNS_IP=192.168.122.10 +WEB_PORT=80 +DNS_PORT=53 +BRIDGE_INTERFACE=virbr0 + +sudo iptables -D FORWARD -o $BRIDGE_INTERFACE -d $DNS_IP -j ACCEPT +sudo iptables -t nat -D PREROUTING -p udp --dport $DNS_PORT -j DNAT --to $DNS_IP:$DNS_PORT +sudo iptables -D FORWARD -o $BRIDGE_INTERFACE -d $WEB_IP -j ACCEPT +sudo iptables -t nat -D PREROUTING -p tcp --dport $WEB_PORT -j DNAT --to $WEB_IP:$WEB_PORT + +echo "This will stop and delete all VMs and Containers !" +read -p "Are you sure ? [Y|N] " -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]] +then + # STOPPING AND DELETING ALL CONTAINERS + docker stop $(docker ps -a -q) + docker rm $(docker ps -a -q) + virsh list | grep running | awk '{ print $2}' | while read DOMAIN; do + virsh destroy $DOMAIN + done + virsh list --all | grep "shut off" | awk '{ print $2}' | while read DOMAIN; do + virsh undefine $DOMAIN + done +fi + diff --git a/BENCHMARKING/dns_cont_benchmark.py b/BENCHMARKING/dns_cont_benchmark.py new file mode 100644 index 0000000..ecff8f7 --- /dev/null +++ b/BENCHMARKING/dns_cont_benchmark.py @@ -0,0 +1,67 @@ +#!/usr/bin/python3 +import sys +import subprocess +import shutil +import os.path +import csv +import time + +RUN=1 +TIME=300 +CLIENTS=100 +THREADS=4 +QPS=100 +QPS_INCREMENT=100 + +if __name__ == '__main__': + if len(sys.argv) < 2: + print("DNS Server Benchmarking Tool - CETIC Internship 2017/18 on Unikernels\n\tUsage: python3 dns_cont_benchmark.py [server_ip_address]") + sys.exit(1) + + SVR_IP=sys.argv[1] + + if shutil.which("dnsperf") is None: + print("ERROR: dnsperf is not installed, please run the install_bench_tools.sh script.") + sys.exit(1) + + if os.path.isfile("dns_cont_benchmark.csv") is not True: + subprocess.run("touch dns_cont_benchmark.csv", stdout=subprocess.PIPE, shell=True) + + with open("dns_cont_benchmark.csv", "w") as file: + writer = csv.writer(file) + writer.writerow(["TEST_RUN", "QUERIES_SENT", "QUERIES_COMPLETED", "QUERIES_LOST", "QUERIES_PER_SECOND", "AVG_LATENCY_SECONDS", "MIN", "MAX", "LATENCY_STD_DEV_SECONDS"]) + + while True: + print("########## LAUNCHING TEST " + str(RUN) + " ##########") + print("Queries per seconds: " + str(QPS)+ "\n") + # launch the dnsperf command + result = subprocess.run("dnsperf -s " + SVR_IP + " -d queryfile-example-current -l " + str(TIME) + " -T " + str(THREADS) + " -c " + str(CLIENTS) + " -Q " + str(QPS), stdout=subprocess.PIPE, shell=True) + #print(result.stdout.decode('utf-8')) + + # convert output and store it in the csv file + list = result.stdout.decode("utf-8").split('\n') + for index in range(len(list)): + if list[index].startswith(" Queries sent:"): + queriesSent=list[index].split()[2] + queriesCompleted=list[index+1].split()[2] + queriesLost=list[index+2].split()[2] + queriesPerSecond=list[index+7].split()[3] + avgLatency=list[index+9].split()[3] + latencyMin=list[index+9].split()[5].replace(",", "") + latencyMax=list[index+9].split()[7].replace(")", "") + latencyStdDev=list[index+10].split()[3] + #print("TEST_RUN, QUERIES_SENT, QUERIES_COMPLETED, QUERIES_LOST, QUERIES_PER_SECOND, AVG_LATENCY_SECONDS, MIN, MAX, LATENCY_STD_DEV_SECONDS") + print("Queries sent:\t\t" + queriesSent + "\nQueries completed:\t" + queriesCompleted + "\nQueries Lost:\t\t" + queriesLost + \ + "\nQueries per second:\t" + queriesPerSecond + "\nAverage latency:\t" + avgLatency + "\nMinimum latency:\t" + latencyMin + \ + "\nMax latency:\t\t" + latencyMax + "\nLatency Std Dev:\t" + latencyStdDev) + with open("dns_cont_benchmark.csv", "a") as file: + writer = csv.writer(file) + writer.writerow([RUN, queriesSent, queriesCompleted, queriesLost, queriesPerSecond, avgLatency, latencyMin, latencyMax, latencyStdDev]) + break + + print("########## TEST " + str(RUN) + " COMPLETE ##########\n") + # increase the TEST_RUN value and increment the number of queries per second + RUN=RUN+1 + QPS=QPS+QPS_INCREMENT + # sleep for 30 seconds between tests + time.sleep(30) \ No newline at end of file diff --git a/BENCHMARKING/dns_unik_benchmark.py b/BENCHMARKING/dns_unik_benchmark.py new file mode 100644 index 0000000..105705b --- /dev/null +++ b/BENCHMARKING/dns_unik_benchmark.py @@ -0,0 +1,67 @@ +#!/usr/bin/python3 +import sys +import subprocess +import shutil +import os.path +import csv +import time + +RUN=1 +TIME=300 +CLIENTS=100 +THREADS=4 +QPS=100 +QPS_INCREMENT=100 + +if __name__ == '__main__': + if len(sys.argv) < 2: + print("DNS Server Benchmarking Tool - CETIC Internship 2017/18 on Unikernels\n\tUsage: python3 dns_unik_benchmark.py [server_ip_address]") + sys.exit(1) + + SVR_IP=sys.argv[1] + + if shutil.which("dnsperf") is None: + print("ERROR: dnsperf is not installed, please run the install_bench_tools.sh script.") + sys.exit(1) + + if os.path.isfile("dns_unik_benchmark.csv") is not True: + subprocess.run("touch dns_unik_benchmark.csv", stdout=subprocess.PIPE, shell=True) + + with open("dns_unik_benchmark.csv", "w") as file: + writer = csv.writer(file) + writer.writerow(["TEST_RUN", "QUERIES_SENT", "QUERIES_COMPLETED", "QUERIES_LOST", "QUERIES_PER_SECOND", "AVG_LATENCY_SECONDS", "MIN", "MAX", "LATENCY_STD_DEV_SECONDS"]) + + while True: + print("########## LAUNCHING TEST " + str(RUN) + " ##########") + print("Queries per seconds: " + str(QPS)+ "\n") + # launch the dnsperf command + result = subprocess.run("dnsperf -s " + SVR_IP + " -d queryfile-example-current -l " + str(TIME) + " -T " + str(THREADS) + " -c " + str(CLIENTS) + " -Q " + str(QPS), stdout=subprocess.PIPE, shell=True) + #print(result.stdout.decode('utf-8')) + + # convert output and store it in the csv file + list = result.stdout.decode("utf-8").split('\n') + for index in range(len(list)): + if list[index].startswith(" Queries sent:"): + queriesSent=list[index].split()[2] + queriesCompleted=list[index+1].split()[2] + queriesLost=list[index+2].split()[2] + queriesPerSecond=list[index+7].split()[3] + avgLatency=list[index+9].split()[3] + latencyMin=list[index+9].split()[5].replace(",", "") + latencyMax=list[index+9].split()[7].replace(")", "") + latencyStdDev=list[index+10].split()[3] + #print("TEST_RUN, QUERIES_SENT, QUERIES_COMPLETED, QUERIES_LOST, QUERIES_PER_SECOND, AVG_LATENCY_SECONDS, MIN, MAX, LATENCY_STD_DEV_SECONDS") + print("Queries sent:\t\t" + queriesSent + "\nQueries completed:\t" + queriesCompleted + "\nQueries Lost:\t\t" + queriesLost + \ + "\nQueries per second:\t" + queriesPerSecond + "\nAverage latency:\t" + avgLatency + "\nMinimum latency:\t" + latencyMin + \ + "\nMax latency:\t\t" + latencyMax + "\nLatency Std Dev:\t" + latencyStdDev) + with open("dns_unik_benchmark.csv", "a") as file: + writer = csv.writer(file) + writer.writerow([RUN, queriesSent, queriesCompleted, queriesLost, queriesPerSecond, avgLatency, latencyMin, latencyMax, latencyStdDev]) + break + + print("########## TEST " + str(RUN) + " COMPLETE ##########\n") + # increase the TEST_RUN value and increment the number of queries per second + RUN=RUN+1 + QPS=QPS+QPS_INCREMENT + # sleep for 30 seconds between tests + time.sleep(30) \ No newline at end of file diff --git a/BENCHMARKING/install_bench_tools.sh b/BENCHMARKING/install_bench_tools.sh new file mode 100644 index 0000000..2dae0ad --- /dev/null +++ b/BENCHMARKING/install_bench_tools.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +SRC_DIR=$HOME/unikernels/BENCHMARKING + +# DNSPerf +sudo apt-get install -y libbind-dev libkrb5-dev libssl-dev libcap-dev libxml2-dev libgeoip-dev bind9utils make && +wget ftp://ftp.nominum.com/pub/nominum/dnsperf/2.1.0.0/dnsperf-src-2.1.0.0-1.tar.gz && +tar xzvf dnsperf-src-2.1.0.0-1.tar.gz && +pushd dnsperf-src-2.1.0.0-1 && +./configure && +make && +sudo make install && +popd && +wget ftp://ftp.nominum.com/pub/nominum/dnsperf/data/queryfile-example-current.gz && +gunzip queryfile-example-current.gz && +#Usage: dnsperf -s 10.0.0.100 -d queryfile-example-current -l 60 -c 1 -Q 10 + +#wrk2 install +git clone https://github.com/giltene/wrk2 && +pushd wrk2 && +sudo make && +sudo cp wrk /usr/local/bin/wrk2 && +popd +#Usage: wrk2 -d 5m -R 100 http://10.0.0.5/ diff --git a/BENCHMARKING/startup_cont_benchmark.py b/BENCHMARKING/startup_cont_benchmark.py new file mode 100644 index 0000000..f014440 --- /dev/null +++ b/BENCHMARKING/startup_cont_benchmark.py @@ -0,0 +1,94 @@ +#!/usr/bin/python3 +import sys +import subprocess +import os.path +import csv +import json +import time +import _thread +import os +import datetime as datetime +import random + +BENCHMARK_TIME_SECONDS=60*20 +MAX_NBR_VMS=150 +NBR_VMS_INCREMENT=10 +GUESTS=dict() +NBR_VMS=0 + +def run_cmd(COMMAND): + return subprocess.run(COMMAND, stdout=subprocess.PIPE, shell=True) + +def timeGuestStart(GUEST): + response = 1 + startTime=datetime.datetime.now() + while response is not 0: + response = os.system("ping -c 1 " + GUESTS[GUEST] + "> /dev/null 2>&1") + endTime=datetime.datetime.now() + bootTime=(endTime-startTime).microseconds + with open("startup_cont_benchmark.csv", "a") as file: + writer = csv.writer(file) + writer.writerow([NBR_VMS, GUEST, (bootTime/1000000)]) + +if __name__ == '__main__': + if len(sys.argv) < 2: + print("Application Startup Benchmarking Tool - CETIC Internship 2017/18 on Unikernels\n\tUsage: python3 startup_cont_benchmark.py [nbr of VMs]") + sys.exit(1) + + NBR_VMS=int(sys.argv[1]) + + if os.path.isfile("startup_cont_benchmark.csv") is not True: + subprocess.run("touch startup_cont_benchmark.csv", stdout=subprocess.PIPE, shell=True) + with open("startup_cont_benchmark.csv", "w") as file: + writer = csv.writer(file) + writer.writerow(["NBR_OF_GUESTS", "GUEST_STOPPED", "STARTUP_TIME_SECONDS"]) + + while NBR_VMS < MAX_NBR_VMS: + print("### STOPPING PREVIOUS VMS") + # stop all running VMs + run_cmd("docker stop $(docker ps -a -q) 2> /dev/null") + run_cmd("virsh list | grep running | awk '{ print $2}' | while read DOMAIN; do virsh destroy $DOMAIN; sleep 3; virsh undefine $DOMAIN; done") + run_cmd("docker ps -a -q | while read DOMAIN; do docker rm $DOMAIN; done") + + # create table of guest VMs + GUESTS.clear() + i = 10 + for x in range(int(NBR_VMS)): + GUESTS[("VM_"+str(x))] = ("172.18.0." + str(i)) + i = i+1 + + print("### BUILDING CONTAINERS") + run_cmd("cd ../SOURCE/CONTAINER && docker build -t cetic/compiler .") + run_cmd("cd ../SOURCE/CONTAINER/DNS &&\ + docker run --rm -it -v $PWD:/usr/src/build -w /usr/src/build cetic/compiler g++ -std=c++11 -static -o runnableService *.cpp &&\ + docker build -t cetic/dns .") + run_cmd("docker network create --subnet=172.18.0.0/16 --driver=bridge bench_net 2> /dev/null") + + print("### LAUNCHING CONTAINERS") + # create and launch each VM + for key, value in GUESTS.items(): + # for each entry in GUESTS build the unikernel and move the img to another folder + + run_cmd("docker run --cpus 1 -m 128m -d --ip " + value + " --network=bench_net --name " + key + " cetic/dns 2> /dev/null") + + print("### LAUNCHING BENCHMARK FOR " + str(BENCHMARK_TIME_SECONDS) + " SECONDS") + + timeout=time.time() + BENCHMARK_TIME_SECONDS + while time.time() <= timeout: + # stop a VM + RANDOM_GUEST="VM_"+str(random.randint(0, (int(NBR_VMS)-1))) + run_cmd("docker stop " + RANDOM_GUEST) + print(RANDOM_GUEST + " shut down") + # launch a thread to start a VM + _thread.start_new_thread(run_cmd, ("docker start " + RANDOM_GUEST, )) + # launch another thread to time boot time + _thread.start_new_thread(timeGuestStart, (RANDOM_GUEST, )) + print(RANDOM_GUEST + " started...") + time.sleep(5) + + #increment number of VMs for next test + NBR_VMS=NBR_VMS+NBR_VMS_INCREMENT + + run_cmd("docker stop $(docker ps -a -q) 2> /dev/null") + + \ No newline at end of file diff --git a/BENCHMARKING/startup_unik_benchmark.py b/BENCHMARKING/startup_unik_benchmark.py new file mode 100644 index 0000000..e1ab16c --- /dev/null +++ b/BENCHMARKING/startup_unik_benchmark.py @@ -0,0 +1,118 @@ +#!/usr/bin/python3 +import sys +import subprocess +import os.path +import csv +import json +import time +import _thread +import os +import datetime as datetime +import random + +BENCHMARK_TIME_SECONDS=60*20 +MAX_NBR_VMS=150 +NBR_VMS_INCREMENT=10 +GUESTS=dict() +NBR_VMS=0 + +def run_cmd(COMMAND): + return subprocess.run(COMMAND, stdout=subprocess.PIPE, shell=True) + +def timeGuestStart(GUEST): + response = 1 + startTime=datetime.datetime.now() + while response is not 0: + response = os.system("ping -c 1 " + GUESTS[GUEST] + "> /dev/null 2>&1") + endTime=datetime.datetime.now() + bootTime=(endTime-startTime).microseconds + with open("startup_unik_benchmark.csv", "a") as file: + writer = csv.writer(file) + writer.writerow([NBR_VMS, GUEST, (bootTime/1000000)]) + +if __name__ == '__main__': + if len(sys.argv) < 2: + print("Application Startup Benchmarking Tool - CETIC Internship 2017/18 on Unikernels\n\tUsage: python3 startup_unik_benchmark.py [nbr of VMs]") + sys.exit(1) + + NBR_VMS=int(sys.argv[1]) + + if os.path.isfile("startup_unik_benchmark.csv") is not True: + subprocess.run("touch startup_unik_benchmark.csv", stdout=subprocess.PIPE, shell=True) + with open("startup_unik_benchmark.csv", "w") as file: + writer = csv.writer(file) + writer.writerow(["NBR_OF_GUESTS", "GUEST_STOPPED", "STARTUP_TIME_SECONDS"]) + + + while NBR_VMS < MAX_NBR_VMS: + print("### STOPPING PREVIOUS VMS") + # stop all running VMs + run_cmd("docker stop $(docker ps -a -q) 2> /dev/null") + run_cmd("virsh list | grep running | awk '{ print $2}' | while read DOMAIN; do virsh destroy $DOMAIN; sleep 3; done") + run_cmd("virsh list --all | grep VM_ | awk '{ print $2}' | while read DOMAIN; do virsh undefine $DOMAIN; sleep 3; done") + + # create table of guest VMs + GUESTS.clear() + i = 10 + for x in range(int(NBR_VMS)): + GUESTS[("VM_"+str(x))] = ("192.168.122." + str(i)) + i = i+1 + #print(GUESTS) + + run_cmd("sudo rm -rf GUESTS; mkdir GUESTS") + # create and launch each VM + print("### BUILDING UNIKERNEL IMAGES") + for key, value in GUESTS.items(): + # modify config.json with the IP address + data = {} + data["net"] = [] + data["net"].append({ + "iface": 0, + "config": "static", + "address": value , + "netmask": "255.255.255.0", + "gateway": "192.168.122.1" + }) + with open("UNIKERNEL/DNS/config.json", "w") as outfile: + json.dump(data, outfile) + + # for each entry in GUESTS build the unikernel and move the img to another folder + run_cmd("cd UNIKERNEL/DNS && sudo rm -rf build && mkdir -p build && cd build && cmake .. && sudo make 2> /dev/null") + run_cmd(("sudo mv UNIKERNEL/DNS/build/DNS.img GUESTS/" + key + ".img")) + + run_cmd(("virt-install \ + --virt-type qemu --name " + key + " \ + --vcpus 1 --ram 128 \ + --import --disk GUESTS/" + key +".img \ + --serial file,path=/tmp/" + key + ".log \ + --network network=default,model=virtio \ + --check path_in_use=off \ + --noautoconsole")) + print(" - " + key + " built") + + print("### LAUNCHING BENCHMARK FOR " + str(BENCHMARK_TIME_SECONDS) + " SECONDS") + + timeout = time.time() + BENCHMARK_TIME_SECONDS + while time.time() <= timeout: + # TODO loop for a predetermined number of time + # TODO stop a random VM, restart it, time its boot time + # stop a VM + RANDOM_GUEST="VM_"+str(random.randint(0, (int(NBR_VMS)-1))) + run_cmd("virsh destroy " + RANDOM_GUEST) + print(RANDOM_GUEST + " shut down") + # launch a thread to start a VM + _thread.start_new_thread(run_cmd, ("virsh start " + RANDOM_GUEST, )) + # launch another thread to time boot time + _thread.start_new_thread(timeGuestStart, (RANDOM_GUEST, )) + print(RANDOM_GUEST + " started...") + time.sleep(5) + + #increment number of VMs for next test + NBR_VMS=NBR_VMS+NBR_VMS_INCREMENT + + # cleanup test bed + run_cmd("virsh list --all | grep VM_ | awk '{ print $2}' | while read DOMAIN; do virsh destroy $DOMAIN; sleep 3; virsh undefine $DOMAIN; done") + run_cmd("sudo rm -rf GUESTS") + + + \ No newline at end of file diff --git a/BENCHMARKING/web_cont_benchmark.py b/BENCHMARKING/web_cont_benchmark.py new file mode 100644 index 0000000..02dc645 --- /dev/null +++ b/BENCHMARKING/web_cont_benchmark.py @@ -0,0 +1,64 @@ +#!/usr/bin/python3 +import sys +import subprocess +import shutil +import os.path +import csv +import time +import string + +RUN=1 +TIME=300 +CONNECTIONS=100 +THREADS=4 +QPS=100 +QPS_INCREMENT=100 + +if __name__ == '__main__': + if len(sys.argv) < 2: + print("DNS Server Benchmarking Tool - CETIC Internship 2017/18 on Unikernels\n\tUsage: python3 web_cont_benchmark.py [server_ip_address]") + sys.exit(1) + + SVR_IP=sys.argv[1] + + if shutil.which("dnsperf") is None: + print("ERROR: dnsperf is not installed, please run the install_bench_tools.sh script.") + sys.exit(1) + + if os.path.isfile("web_cont_benchmark.csv") is not True: + subprocess.run("touch web_cont_benchmark.csv", stdout=subprocess.PIPE, shell=True) + + with open("web_cont_benchmark.csv", "w") as file: + writer = csv.writer(file) + writer.writerow(["TEST_RUN", "QUERIES_SENT", "QUERIES_PER_SECOND", "AVG_LATENCY_MILLISECONDS", "MAX_LATENCY_MILLISECONDS", "LATENCY_STD_DEV_PERCENT"]) + + while True: + print("########## LAUNCHING TEST " + str(RUN) + " ##########") + print("Queries per seconds: " + str(QPS)) + # launch the dnsperf command + result = subprocess.run("wrk2 -t " + str(THREADS) + " -d " + str(TIME) + "s -c " + str(CONNECTIONS) + " -R " + str(QPS) + " http://" + SVR_IP + "/", stdout=subprocess.PIPE, shell=True) + #print(result.stdout.decode('utf-8')) + + # convert output and store it in the csv file + list = result.stdout.decode("utf-8").split('\n') + for index in range(len(list)): + if list[index].startswith(" Latency"): + avgLatency=list[index].split()[1].strip(string.ascii_letters) + latencyMax=list[index].split()[3].strip(string.ascii_letters) + latencyStdDev=list[index].split()[2].strip(string.ascii_letters) + queriesSent=list[index+2].split()[0] + queriesPerSecond=list[index+3].split()[1] + + print("Queries sent:\t\t" + queriesSent + "\nQueries per second:\t" + queriesPerSecond + "\nAverage latency:\t" + avgLatency + "ms" + \ + "\nMax latency:\t\t" + latencyMax + "ms" + "\nLatency Std Dev:\t" + latencyStdDev + "ms") + with open("web_cont_benchmark.csv", "a") as file: + writer = csv.writer(file) + writer.writerow([RUN, queriesSent, queriesPerSecond, avgLatency, latencyMax, latencyStdDev]) + break + + print("########## TEST " + str(RUN) + " COMPLETE ##########\n") + # increase the TEST_RUN value and increment the number of queries per second + RUN=RUN+1 + QPS=QPS+QPS_INCREMENT + # sleep for 30 seconds between tests + time.sleep(30) \ No newline at end of file diff --git a/BENCHMARKING/web_unik_benchmark.py b/BENCHMARKING/web_unik_benchmark.py new file mode 100644 index 0000000..88a059d --- /dev/null +++ b/BENCHMARKING/web_unik_benchmark.py @@ -0,0 +1,64 @@ +#!/usr/bin/python3 +import sys +import subprocess +import shutil +import os.path +import csv +import time +import string + +RUN=1 +TIME=300 +CONNECTIONS=100 +THREADS=4 +QPS=100 +QPS_INCREMENT=100 + +if __name__ == '__main__': + if len(sys.argv) < 2: + print("DNS Server Benchmarking Tool - CETIC Internship 2017/18 on Unikernels\n\tUsage: python3 web_unik_benchmark.py [server_ip_address]") + sys.exit(1) + + SVR_IP=sys.argv[1] + + if shutil.which("dnsperf") is None: + print("ERROR: dnsperf is not installed, please run the install_bench_tools.sh script.") + sys.exit(1) + + if os.path.isfile("web_unik_benchmark.csv") is not True: + subprocess.run("touch web_unik_benchmark.csv", stdout=subprocess.PIPE, shell=True) + + with open("web_unik_benchmark.csv", "w") as file: + writer = csv.writer(file) + writer.writerow(["TEST_RUN", "QUERIES_SENT", "QUERIES_PER_SECOND", "AVG_LATENCY_MILLISECONDS", "MAX_LATENCY_MILLISECONDS", "LATENCY_STD_DEV_PERCENT"]) + + while True: + print("########## LAUNCHING TEST " + str(RUN) + " ##########") + print("Queries per seconds: " + str(QPS)) + # launch the dnsperf command + result = subprocess.run("wrk2 -t " + str(THREADS) + " -d " + str(TIME) + "s -c " + str(CONNECTIONS) + " -R " + str(QPS) + " http://" + SVR_IP + "/", stdout=subprocess.PIPE, shell=True) + #print(result.stdout.decode('utf-8')) + + # convert output and store it in the csv file + list = result.stdout.decode("utf-8").split('\n') + for index in range(len(list)): + if list[index].startswith(" Latency"): + avgLatency=list[index].split()[1].strip(string.ascii_letters) + latencyMax=list[index].split()[3].strip(string.ascii_letters) + latencyStdDev=list[index].split()[2].strip(string.ascii_letters) + queriesSent=list[index+2].split()[0] + queriesPerSecond=list[index+3].split()[1] + + print("Queries sent:\t\t" + queriesSent + "\nQueries per second:\t" + queriesPerSecond + "\nAverage latency:\t" + avgLatency + "ms" + \ + "\nMax latency:\t\t" + latencyMax + "ms" + "\nLatency Std Dev:\t" + latencyStdDev + "ms") + with open("web_unik_benchmark.csv", "a") as file: + writer = csv.writer(file) + writer.writerow([RUN, queriesSent, queriesPerSecond, avgLatency, latencyMax, latencyStdDev]) + break + + print("########## TEST " + str(RUN) + " COMPLETE ##########\n") + # increase the TEST_RUN value and increment the number of queries per second + RUN=RUN+1 + QPS=QPS+QPS_INCREMENT + # sleep for 30 seconds between tests + time.sleep(30) \ No newline at end of file diff --git a/DEPLOYMENT/README.md b/DEPLOYMENT/README.md new file mode 100644 index 0000000..2035a4e --- /dev/null +++ b/DEPLOYMENT/README.md @@ -0,0 +1,54 @@ +# Deployment + +This folder contains the files to deploy the proof of concept environment. + +## pre_deployment_installation.sh + +Installs all the required components to launch both the unikernel and the container environment. + +Install includes: +* IncludeOS project installation +* libvirt for unikernel virtual machines deployment +* Docker CE for container deployments + +**NOTE:** installation of the Docker CE adds the current user to the docker group, you must logout/login for the changes to take effect. + +## deploy_unikernels.sh + +This script will deploy the unikernels by taking the following steps: +* building the unikernels from the source code (in the SOURCE directory) +* create the QEMU networks for the unikernels virtual machine +* create and launch the virtual machines in their respective networks + +The networks are created with the following addressing: + +![Proof of concept network addressing scheme](https://git.cetic.be/stages/unikernels/raw/feature/stagelongree2018/MEDIA/unikernel_network.PNG "Proof of concept network addressing scheme") + +| VM | IP Address | +| ----------- |-----------------| +| Firewall | 192.168.100.254 | +| Firewall | 192.168.101.3 | +| Router | 192.168.101.2 | +| Router | 10.0.0.254 | +| Web server | 10.0.0.5 | +| DNS server | 10.0.0.100 | + +The current proof of concept environment and is self contained. It is not possible to directly connect the firewall to the external network. +It is possible to contact the DNS and the web server through iptables rules (examples in the benchmark launching scripts). + +## deploy_containers.sh + +This script will deploy the containers (using ported code from the unikernel versions) by taking the following steps: +* building the compiler image +* running the compiler image to cross-compile the application +* build the application container using the compiled application program +* run the container images built in the previous step + +The container ports are mapped as follows: + +| Container | Host Port | Guest Port | +| ----------- | ---------- | ---------- | +| Web server | 80/tcp | 80/tcp | +| DNS server | 53/udp | 53/udp | + +**NOTE:** due to time constraints during the project, the firewall and router applications were not ported to containers. \ No newline at end of file diff --git a/DEPLOYMENT/deploy_containers.sh b/DEPLOYMENT/deploy_containers.sh new file mode 100644 index 0000000..0e35856 --- /dev/null +++ b/DEPLOYMENT/deploy_containers.sh @@ -0,0 +1,43 @@ +#!/bin/bash +#NB: due to time constraint, only the DNS and WebServer analogs +# have code ported from the Unikernel application. +# Additionally the container ports are bound to the host's +# IP address for benchmarking. + +SRC_DIR=$HOME/unikernels +CONTAINERS=$SRC_DIR/SOURCE/CONTAINER + +# exposes the interface with internet connectivity for benchmarking +# if your benchmarking device is on another network, adjust accordingly +IP=$(ip -4 route get 8.8.8.8 | awk {'print $7'} | tr -d '\n') +DNS_PORT=53 +WEB_PORT=80 + +# build Docker containers +# 1 - compiler docker +pushd $CONTAINERS && +docker build -t cetic/compiler . && +popd && + +# 2 - individual dockers +pushd $CONTAINERS/DNS && +docker run --rm -it -v "${PWD}":/usr/src/build -w /usr/src/build cetic/compiler g++ -std=c++11 -static -o runnableService *.cpp && +docker build -t cetic/dns . && +popd && + +pushd $CONTAINERS/WebServer && +docker run --rm -it -v "${PWD}":/usr/src/build -w /usr/src/build cetic/compiler g++ -std=c++11 -static -o runnableService *.cpp && +docker build -t cetic/webserver . && +popd && + +# launch docker containers +docker run --rm --cpuset-cpus 1 -m 128m -d -p $IP:$DNS_PORT:$DNS_PORT/udp --name DNS cetic/dns +docker run --rm --cpuset-cpus 1 -m 128m -d -p $IP:$WEB_PORT:$WEB_PORT --name WebServer cetic/webserver + +echo "#############################################################################" +echo "### ###" +echo "### Containers successfully launched. ###" +echo "### Web server accessible on port $WEB_PORT. ###" +echo "### DNS server accessible on port $DNS_PORT. ###" +echo "### ###" +echo "#############################################################################" diff --git a/DEPLOYMENT/deploy_unikernels.sh b/DEPLOYMENT/deploy_unikernels.sh new file mode 100644 index 0000000..05d37a0 --- /dev/null +++ b/DEPLOYMENT/deploy_unikernels.sh @@ -0,0 +1,93 @@ +#!/bin/bash + +# NB: This script assumes you cloned the project into you HOME directory. +# If this is not the case, change the following variables accordingly + +SRC_DIR=$HOME/unikernels +UNIKERELS=$SRC_DIR/SOURCE/UNIKERNEL + +# build unikernels +pushd $UNIKERELS/DNS &&\ +mkdir -p build &&\ +pushd build &&\ +cmake .. &&\ +make &&\ +popd &&\ + +pushd $UNIKERELS/WebServer &&\ +mkdir -p build &&\ +pushd build &&\ +cmake .. &&\ +sudo make &&\ +popd &&\ + +pushd $UNIKERELS/Router &&\ +mkdir -p build &&\ +pushd build &&\ +cmake .. &&\ +make &&\ +popd &&\ + +pushd $UNIKERELS/Firewall &&\ +mkdir -p build &&\ +pushd build &&\ +cmake .. &&\ +make &&\ +popd &&\ + +# configure networks for QEMU +# remove default bridge created +sudo ip link del bridge43 +# create the bridge interfaces +virsh net-define --file $UNIKERELS/internal.xml && +virsh net-define --file $UNIKERELS/external.xml && +virsh net-define --file $UNIKERELS/firewall.xml && +virsh net-start internal && +virsh net-start external && +virsh net-start firewall && +virsh net-autostart internal && +virsh net-autostart external && +virsh net-autostart firewall && + +# launch unikernels in QEMU (+serial output to files) + +virt-install \ + --virt-type qemu --name DNS \ + --vcpus 1 --ram 128 \ + --import --disk $UNIKERELS/DNS/build/DNS.img \ + --serial file,path=/tmp/dns.log \ + --network network=internal,model=virtio \ + --noautoconsole && + +virt-install \ + --virt-type qemu --name WebServer \ + --vcpus 1 --ram 128 \ + --import --disk $UNIKERELS/WebServer/build/WebServer.img \ + --serial file,path=/tmp/web.log \ + --network network=internal,model=virtio \ + --noautoconsole && + +virt-install \ + --virt-type qemu --name Router \ + --vcpus 1 --ram 128 \ + --import --disk $UNIKERELS/Router/build/Router.img \ + --serial file,path=/tmp/router.log \ + --network network=internal,model=virtio \ + --network network=firewall,model=virtio \ + --noautoconsole && + +virt-install \ + --virt-type qemu --name Firewall \ + --vcpus 1 --ram 128 \ + --import --disk $UNIKERELS/Firewall/build/Firewall.img \ + --serial file,path=/tmp/firewall.log \ + --network network=external,model=virtio \ + --network network=firewall,model=virtio \ + --noautoconsole && + +echo "#############################################################################" +echo "### ###" +echo "### Unikernels successfully launched. ###" +echo "### Serial outputs are located in /tmp. ###" +echo "### ###" +echo "#############################################################################" diff --git a/DEPLOYMENT/pre_deployment_installation.sh b/DEPLOYMENT/pre_deployment_installation.sh new file mode 100644 index 0000000..04febec --- /dev/null +++ b/DEPLOYMENT/pre_deployment_installation.sh @@ -0,0 +1,30 @@ +#!/bin/bash +sudo apt-get update && +sudo apt-get install -y git && + +# install IncludeOS +pushd $HOME && +git clone --recurse-submodules https://github.com/hioa-cs/IncludeOS && +popd && +pushd $HOME/IncludeOS && +sudo ./install.sh -y && +popd && + +# install libvirt +sudo apt-get install -y libvirt-bin virtinst && +#NB: requires logout/login to take effect +sudo usermod -a -G libvirtd $USER && + +# install Docker +sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && +sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && +sudo apt-get update && +sudo apt-get install -y docker-ce && +sudo usermod -a -G docker $USER && + +echo "#############################################################################" +echo "### ###" +echo "### /!\ You must logout/login to apply changes before continuing. /!\ ###" +echo "### ###" +echo "#############################################################################" diff --git a/MEDIA/Benchmark 2.png b/MEDIA/Benchmark 2.png new file mode 100644 index 0000000000000000000000000000000000000000..ba076ec7424cb28811257add9acae1e4564a3b71 GIT binary patch literal 17358 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

|5%5U|M=V19gv#QAA*YNn>Z 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 literal 0 HcmV?d00001 diff --git a/MEDIA/Benchmark.xml b/MEDIA/Benchmark.xml new file mode 100644 index 0000000..e8d8d51 --- /dev/null +++ b/MEDIA/Benchmark.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/MEDIA/CETIC.xml b/MEDIA/CETIC.xml new file mode 100644 index 0000000..d38c77c --- /dev/null +++ b/MEDIA/CETIC.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/MEDIA/PoC Topology.png b/MEDIA/PoC Topology.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf0a553bde9bece70bd8a0783d157e2fa3796e5 GIT binary patch literal 25891 zcmeFZcT`hb*EhOC5k(PH&?5-J1}Xv;ih__R3P+LR5kzS@iXugdQ~^U`0~??spdbW9 z1Zh!v5rW5p3ZX-20hC^Y1PH17uHf-J&+~ro_s?zPj&a|N;b3RGv)0;k&Nb(6wsptS z+(b%JUJ?Kxb@cbce*ho`FH!8JOW+@L$?-YiH{U-@4uRad4Wsaj*u{fp2LX5!wVZcW z9DZNs{reeT0M>35{zD!8W6LxE=Sz+rK4^8tagrYLTDFyrgdhj}GY=3JOfs{X;ptg+b*x||jgBUoz)C95{0w!zuZS*(0uKxpg-dy> z_D40H0NJw6qKUoXZ)VY+j_bW%D&7liKN53O6F~m*B+z+;(5nCXv9= z`qyN)XNNvWsh_O0G$IxKYn2ZVMR=U3S!eryAPp7JRcDChpi5+{r3)gr|8_X1_GwI)K5yocgVqr^hKd_mwBEfa~NL~Orwqiko>oVy|8pL1u{1OF+))~ z=xbdzZt5O#aXO>bVG4=?R{p0z{&$c6FAGxl1t0#6OMhg%*$Qr}{Y$FhAmtvcH{j1t z-yMn?J*=p9jgGf;7C?1NEQ60jE`WV;>rChNS%^F#nI;JJl#cjKhU?YzXYWJT#U? z*3l2JB6#Lstk+RZx^k|i=w!NiVOL_vRH^ge*RL$)h;Q%1ySSzN`7UZtMTn^>w=P!Q zu2zlw_M8TV=i~d=GS&9#CK9JO*4-d}%|DW{w(x4ooNJZ~is(LJp+BjW@6!0ZsVUdq zGFgv35KVm>#60F+7Chf^k^AB@*#>wId|t&Aa2W|F&G)DAo*hb?>#vR~?n*8Fscruy z+;`W4Y=`nTd+&GRMc)#4ojv60x>dW^?XT7a);O)+Gi&I;2ahZdS@~Jx3K61f^UJ5v z=6YXxiX-RMR=Bvk=bP~6hC>(?7wa&{)pEx!v!{E~{7ki${}(O@Da7Zp5+Dt#b;@r@ zNNcF)yg18~uOoC^hyQM1x>WSng6^XrQ7{y0?$%(a!7J%gv{wex0nj@-nxD7JyVyl zJS*AGd+{7U--YRKO{c0CP*wAjUDR?$rF)$r_fq-s;on;RUxvX)Y;nb8 zQCDqhl%X3VwR1$W<84rW>1>nfvEsJ4n1PM_LYA zTvSQ*);10o6gX}N@24ssVni497I`E%v_;cs(qJ}ys@Wq8kE^^I^v|l2UkcUm-QU0l zJ-^Q@88*zgXC)R!z1m`q)Z9qHJ@-TW3*RH3sD{_NhtQtwP(JXmi;B3 z1LbRYhjTYv;W3kZxqTDerOlrCmpb2{=2$1E}%ZLzUdASLy2`xLhf(-xx7b2Nu%8!NdP1TTQ;k+n!DK0J4@}*{!?Q$* z#l4|j8m6|d|Gc(;uI1#7_tOs3eYlw9bTXMzOQ6hLUtEDum)~1d*48bcN(#eLI2!l@ zqm@cYn5fr&7wR+-F2X5~ef7gy)IK7?rphbR0a#`=Iu^J*G)NcJ?yc7{jnhz9H?v3y zQ>kobmd$)s^GMC9KE*a^qA-iIz<_B{Ia2QvwQg@7%_ddsSyE+X>!G-} z%8P6GH+7*6mTFH=Z7Y&Lf@~`(`6h^S2zaV!I3?dd;EKw<6Qz#4>GnVqc$c{h8G~4* zz3h^TG-u8iRnkrgRPN|}!a}g^KneA$ogtul0`+hNcbk4Llst7psbO6A2tEKmM3 z$U{*;JD%0iDi#8jpZmv~zLf*FQM6=EwD{eGby!y6#rmYCrhU1kIsTHwwpX9)BW{MaqKoS4reIOu()qiV}rw6S2|ag&*QawL%BH~+0iVd(FEOrZ_+c{@Y^2O zrY%f9gV4)csK)4+#_oJm(JKpQS40?#Z|S`U1?DH_xwrHmCFuhh{kc4H z$9Vm~17A|)?eWhgVJ+?qQ``P&t-t_u|c2lu6fKpoF+m+*O9$YkN*=J_3yq`C@{AwHPxcT+}u znOmluSjmu`$#<`}KaBOm5Bcm1?F3Z>&2vKvzcc^4)qn>Q|3Fx~mYG{^=@2LW^0Oc! z{hxdPf1p9m5s#2#tbZZ{zxZC=)^{SyRd7w^r;&uPsALfq9XHSqh*)${9e+guZWo+$ zGO2m2+0q?oV^mGvtH_m(n?hmtDlcvTsIcFWtvmbJSUBW!z7n{Pz^&l8iyqT&|yBzDXVg9a?2~&Ci{cGZFaALR; zS&YdN)o)#F~b zuYW~INQ^)LL4Jaq+NsAy6Nll_K8yT%fy|4*yVEuOsnEUQ-8kakYHjn>qpPT6GIr;g za~hQk-|x$6xhgv%oMyvSB`RZ~cMhoepIM1uvuH zeJ1Z2qg=Fz(3$?EaWWbMX*zRTbg~*oD$cA_^(-5GIim;n8FuY2hDY}{e6q?bozwt} zUIvr&!V)_U{l`oCVwj`p%j_?IlnY2`Of~7cpdT=?3!v=V3S`VE+ZIGd2E#`GFrF?p9rc^nM@?C*BR`ZLwm2zRBX= zqMEDnN#wH}TeKdj_h?UXykBB3`GRn6*Q~lmG5JpN$tCu$`^bUsuJwKZ?~3{SqQ6(=B$*6Fr+gw7lVWK&VJS|0xU;^hO%X zUS(2s=e2GL12Nxs^EU~X36<;5We%!?X-$a?CYw(2zlk&9&<6ztp<^wt27USdS_JmY z;Jo2sDn&y(qfxB$6d{QqU=P8dPI3Awm(^H0NeKq$zys}H#C&`NB(LXapQLE4DOrpT zU76agjV9J16c`uq@aTElk&A}A!+{(G?A!Yoq@AZ;y|*b^it^|pVWo0*lH z*QM$z^3KkyqSey~j{8~u*9QH%15A^d1omKDm+zFc(g7FRtBtg2{u=Xr?{Y01({Y4A z+MG=(6Hz26ftVrCU=IufBM3QYEf>rEV$g$+*wJ8E+O-CbnP>bK`{T zF>y6hg)e`MAbn!#F1MD9yVX;0Cm9$VtUtJUnNrZes&f0yE45~bLel=)Gf*WzgP~HP zZiS!E`~T+t|J?pRLlf+jhr@IZdy2ey{ErY_kDUfESx3G1_wFn$8maesLa@hQpt}j~ z)yF9<1H>ViHdwS`_Im9-o|PMByPBRZ7ti%bs$ocjdVFxZQ-sBVk=5?!W+tRYi!d4W(8uu4!xEn4f*N!vHw$N3*U z4fzP6U%aB%~wn@V509&v;Nq)nn zk!Gt5HZsxcRX8p*=s|EJF24E87aNh@%7yg1OB{>@wEI`nP4|+D4pAvz6V0*0(S#^h zsNA&@D-v|#HK)qcpYNwVK-Bw@p0uYHc3I&_G1~;m+A-Ay^8`Sd{I~sSu+piE@3`<8 z(T(C)(uTQNhp5O+cWxYFE*unQ5Pl9CafA?>+I=NUYk)9l=jG=*5b{UL5U$3#CnS*F zD+WI2S8!Lxr+IXFL?paxsu$Jo(`L5d%SPm+ zXXzV@FkaS>!4H>@_^cM5JKWAQha=`|3Ax1)tk+TNI-Gf5&f>%s7P60VQ~6B-S4<(L z(+kY~5{BbYiag>rBKZ=A4XQ>0>%w>fe7AV(u9x(ppi`UamtbhrwBBju4R z|F@?2TpLJGJmXp5fM?A#`1tm89n(SL*@XUZhRvlllHk-^wr$XQ6p%moes~yP+@Z9a z*2uJEZa7H^y&RUqbxd-aBKYU#g!kCm7YcKunR1;yG38zcks-AW0zVrTWj2WYSj2!} zz8M7n#MMNVqH|8+9X)kX8)c)ycm)0|`m0&dv0-lclDC>}or#F!WyDS3&!!9nd;!>W z#j7)3nC+UI0k+~2z2mG3fgU?HBA^pEfANMWm3dT_D4AMJU10P$uD;Zlzhg3L-joZ2 z6aqJjQN5~_q}XiP$Q()rCM+SjiT7W9A@L?xGN&#k)WQ_#b<9g%ueZ$wwoLMjD2On8a)ngwRE!HwTq;W3_mkRMr>h0;ou_8#MR(8# z-2A5{{)i6_n2-;_-Rqoxtb}rLbdS{e7V4W5KVQ>D4cnc{&3;5h(sdnhg=`x(3Y+m8 zir914gQI=lk@~}{*WN`*Y2IOaFU2Ko_|d{5ba-vA-%U0Izgfcelx4j`!eCO4ZU08Cy zqZfcL`dtRJJgl3PR{VkH^|*Cau|DqSxy__&_MGv5OuP;f1HgHzGl=wsM~Nq>_wON&EYp5YAs8IE@9@6sUehd6jk9_B?WAreBT1@Dx?P15i|~@w zuV7ri-a@sSuW1<1g<0ers1}9dq-W`bj&HCqD~s%*-TRBky6C6qku3AP{Gm9u0ZS(ES+}^U<`oM;7!va1VOA|k)nnJmbrZWh5?D{))BSnN z$XDMQUZEJMJ6yn$-ACryxK*!EF4jM}I=fqO&O&gyaRm~wA(C9(wDiV6sLM(bWi_fS z$Y8UI=Mse5{@h6XoZdQvj+=t9sFTYZ7u>}<^5!a}qfD+=Zoh(5s8>`5C(Z?{_KH?$ z1`~*<4lSxxEV^+Qci;qp+CUnd;OUK#o~dHFpSPnvAIcX4Uxsk$n=$v? z`129AV98IF9lX7TM`Ip9l9~)%XATxe$tO0fi81pC^c%W{*rCAW$PoVUh9U@odu7eEN!nw~dY_m>`nt_#H~Nq=tnZg7+intv+ac+gReJ zC&_vg-^lH!;BJC#LiY(8y5M(|S;u@`ByzqHBcDp~)dTVyvw(63FUw6E$-HHhq~Qh2 zHrU)*IXUVJ6_PJ0H8&}gLe1{TBm3R!X&j#UYR0Y2-dbMUTiNaAnDDx1<$DW5=e(r# z&CYF}bg#sA$9WNSEOD`p|Gmy@6GNyhnawfset~r%2BSMP5!-y4 z<0FP}!>>as+YZ>eRch0!lJJSway436xI4|w=S)*2W`Eo5EO57(HjIBY8_H&&*N8sP z7^+KjS0J>`Puj0sgFS631~~6tY?duMOgcs_=az@5zpOY+3Jc_5G-meQcjQiBB+O)& zwwz2AC5l@}=PnfEQo1q^U4tMeX+yxow!E+y)r)Le13&v#Ww_4dKFc?x-DxMzDij40 zDk)bF1lqx=bKunJq9c4UkZdid0~(?>YIEL1OS|ejs8Y(E9ium}i`_phL(aMO@`oQ) zD~qxlM?jTkB9npW`*pdcitiIoE_7WIMBA5nXqbm#9!v=0HrJUBj`~`sqc-f5-5pSg zlJ!$%72A%6Sgw)#G;Q*3FlDxq&FFv2(1}ZeS(2PIZ*rPZA*_6} zv@~|wa9@&ix=3;o^e8HWCRp>&2!t~;0d}8|igWxHl&%oVG;}&Day?32S0u7#f`hXE|hn?##8pcc*B-@5#H=7l7e3mGtad^=M>s(Z*bA28ofsP-rx5|3L=pY1`%w&NgqS#+l2LudpX;&AV~{r!wL zUJDb9_u4voJSG~8Evy+}o7DQR#II7RZ}y!Y7VWbFE%(qsE3<`HuF{K3x+G9_BzOcR z8ZXc0*W8|=ECaT*wnW9juoH56oZjf*Z!SiL-A@Ak%H zizHWp5z%e4?_No#wKKU{5gWYG-rps}Ij=SD4h$yjlLK=Nkc(adYeAVC6%hhpljSZq zuiF`ehO*cK4^7>Bdg0y3vuu+JUX;HHrC2AS9w}|!d8U{)(cT;=HFooUJ&opjG9!1@ zs+75i9Tibi2CdxX=hdmMdelES9usJ>X0OS1W#yo;Y-2;R8t(oS zt&=Q9ltu%8T?AnVc9ppYmg(vTQ|3tKK-qaF*>>-YVmZWD-$@8Mo=sVmW{QkTiaK5N z*u7U!SaYdMkwq_JRGnqgITZnq-@V?hKt;=6^*gay+;9CmSm_gMvGH_85YD^HIF@h( zR8X*|^dbeAF=XED@Z1pVa-biDerr9%xRf_2ty8(8Kzm#uaW5=SO=e`dz#BO~*XpFT zW^1XyH=DLj%r*`(@!U$H?YIz-PeKRd17#lJlk0L8?$is7{<8O7pWy`P)7BRwbKy4JQVaD0yq zrtvl-oWu;~f|F`@ZX2|##7|#6K(e$F@|j?e`;p9L)<@aM{TQM2M_v6*_oBP&_6FVf z?cm9L&DSiEl1+eEFAb(bg3Lb#9!wp-cSPSbjW5G@LG#0zBs2cq32$i%jxu6BrUWe9Q33yz|A-1jwte#VWREi|lX>bpiR?W$}$YhkrVA0Qxqz{ic z+Bt|wj;K+810&Cnr>q_afi4PMg~|Ki^9wUG!%j-37#?YAa2Ic*Q`=+5L{4Ldh_+O` z)-*KloJ#_c3W9)p6cCM%`c_hUr&)!TOow_QegpDqaVR3mQ77|g>q7!wd0iqpcf@}Q z=U6O?=seG&y*gDn7v^9Bh;ENywxU+Fp_#*MH10I}lzwvQY@!YmS6&;A^DK;B@p6Ae zUp`@;zKwXgTz}=$3*-6|u43}nv$G@*818`xSHKq9POaRu<3Tyr| zC38JA=1>wGpd`q$t{uE#ixzB`KEC93~$#(}sndD}uBK?kK6(sYvy zzcYt$U9tF~FO6B$EOek_o@MHChh^+u?3n57=$;#8iP`#`8)8g%*jjxXJ(zK zinsQA$Hu``h+&BP^bh`11O^zf2Inv12{s(+%cI&Mb{pvi=}9`sj-Lym99J}XIc|dP zoAMvhT0R?NECJCa;oZp_H;R9V5}`6XCx#uL5hddIZ+sRO@Z|F$XR2(|hU`uHoU-Yi z%%ksQKX|o=CVww@)8549>P6w=#9Pun#(Iss_FXf3m|JNy1d9i6L`7c`@L3N5z^hNP z1^6>le%E>)W6qfz43od2EuiC#XJ4{yP%hc_u)HLE$M8$qIwnXaYwLmO@r3G7bhqQ6 z1W4HgTpZxeST^v8`a(dz?<;aO|9Qpi3b$q%{u5t;yS0}WDf{B5f~QE*+s3Oi)PTK& z3n4*|4{Gbp^vxEFeAuDuc3d=MehVh#MXf!U#j!6t{H##Ii* zG;Rv(BY`wq=?dcvV+T#@qY=fhV^S3Je5+JC{lk@r+@$;VBlm`I;>mB~^*}@T-FS-_ z4Q{{TwtWai;J5NgNQK?EneYq@2Dn)H(|F^OC>X+c^<5`k6}wrsTWG9ppdis%GtXvx zZ1lD!uS!K3oAq9ztnoLj2y2kup2Ya&H=w)HNswz&pHG@!C1*psKBm*jH35 znce?p@zU-^(|9hemw=fSZ0VJT{EC^XW6|`q$BvdIt~@_ibSSDLqsezX>nBk*0n2{! zx07#Rn~5&13uXOKV3{*3C_UqJZA!}& zJh&tAZK`hiLh7gmE2 zLV(nr8H|`;0md&^HgDA$VAV3dmzta|s97Peb^H1CIU0#y&~0^54t#*#7Tivu;Yrfg zyfVTxsYc5AxbLg619}F!SNv>S*PX5E`4Ba&<(GqZQ1Sl!s$lh}$qDQ6mkFLb_~;vME--8Db_FDVYC?;onQ}&NW8&`_KGx3n*oJEJsqhj= zlxC?3`0JSz9vQKlULNB%$*B)Tyh>lyZ33sKTl((K6{;+o6$O)lBW%l$WMueJ!q*7r zOQ0{#T&jd?5fhin%t}8?j2sFa{@mD^H=cavwOdrhxhf%c+k0(%P}j+yHk&nDHh(?| zhUIs>RKm|T)*%mNUhJ1Sgb>oUoBb}StRN)?^IIwjgeD5FDI~q7Ys-6Lc@oK45QSVe zpEiwgqkr848pH^KvZ-7dEWo~kY0;7<|55+#Wp1e=RvIfBo}om0Z8y9{+k9#Ckyxp? z+Z|TA3!QF5j$2lc$6vwB54aiMrx*jA0b?pYv?4TEaV|J)O7*2Zn5G~kByRsCVpuIK z?3Haz>j@suX+j(lC33qD{GMYk7>*PuauBs5NXbjuJ3&K`5j2b&kuSb?9#{mUwf9sZ z-o@JIPkWzMZ;g*>-7Yi|-{)wjx>c-jhSLc%^Up*Y%37mOg0ie9yQ*3ZH0xf|3TY2L z3C1CcjWjkdwX*$^qaMd$te21;~9zkAuAd2ANVI&0tnYA-rCd3HsETa&rS zlcJ`Zs2z%mHqF`Vr|G|6n=)R0-rBRbfYgbb49rR8hR*pnGa&kHf_65$aw#x;Qkv!` z4f0wZKwGR=`x-fyf7asrZP|_BMI#DZIE0fc%W;E2`hbquEC@}4B|zw_4t!r>-P!3k z*RXjl=gUusx|R8BRJecOOB#d*%9WuNztH+iQrVdeq5d{7YndeQo@LWgM_Dj?;JOO< zo$?X|@r2}{76Z_*^*b*GiQgyoF?I!NR^a;zs|78cd#7Tt4NvHkLiZOt?sgtL*hzIm z8X8sXqCyy^`Pbvt)jEv^jj)BW%#U?Fy*5Vxv0y3C%Yu-RifOPPQvxoJ_OVdO?z~j( zEk>Xx1cIEOp`3Hj>x3NpL?&1Z^x@!8(w4^5k&wxR<&%{zw|QjTvlGl6qGw|NiP!Rj zR^&ls_u>d>IAb6M{3Lg!^F^p>xhP^Jhl3W`AnvIiFdH6t3nWTjZ-drZuio+fq%fve z?n5Q)*)W|zxV1{4M|YmY89zqMpjQ^J4iS#uVS0qT<>>F_@zdu^habN@#OjY6$m(_q zpU--Fj60SD%iCd2)$f#rh>%wMTeX4EVPG3!H=`PYU&1)zj|)}n4hr#zaf{IDE4q(_ zls2+xr59|;(3cq0*fnj05<<9QKpcZ?ey|pWy_hBiw6<$e*u)_#8mJ)$=X7Yk$_kVRi*V*i^`W)r?4 z(g;3g=120*I}kcC;9 zMPjx}0_UAQ*0!R`(qn7E0(u2;g<^3ouUBmNc45*^QKFX;+Ukw@nk8la5ZZrxkX}=> z6xgo&H)ed;gfgqR%WJ?;*ciCiNjoCnD@qMWXJ z4&BSN9^{1m+e^v{Day8D!M71beIPA;;QP_mVl9do#^%;QtNK+M$gVy9R?vC3O9m8Z z{2M*bgDRAvGG(7Qkb>}pqi<^p15f9fn90blMZ9ZySrR)Q&!P|cf`jFM6Ew z6CQTzOls)f3p7B2*vxxhz4&9LuLfCG49x~b5n>(8U;y^1Vo*g{p}eN@V2RdwcXv2a zCUjXPAsBv(5(7DtEHYaE9Is1vT`cB(1}~-u!*U$Miwk!OY-h3D0L7z+^d^m$@{Zjj z1EqgR0>sDQ_Wlq8pFr&&>9i+`(W*-n2sX{3K_MSK{KkkPk}NOyppM&2lTY&%>2%aU z83YZiKNxBTo4d+i9CE4R%r0AnGFw7X!!~=Pq4 zT@Lm#J}3z6eRuaHs>N#0_CI~&de9X3^K{m#ZBRdg-DC1#M2iTU05u5fn->aI2!>0= zQ7&dw8Q^jVOJS3IY9ihV-%R;%Tm;hybXiq$%-GBbx1=WSA3qEg@x3Jz=)1yX-2Jj8 z;CqzFZ+c0-6uXCnS(4hJg4}Ev-r)%DBM_c!fei(2oA}Krt9XZ`lOpk{vxeRLzt+hy zqIxvr2?ZjHi%|kwOih>SR_J7qD2ucMz{*}itHWC3pE?%QuK(%goUNZ4H zDwUBRQs2wJbkbGI*7_6*E41ZXvua#LFkIby_m4A8dqG*#+<;Lk%3fxA`ZeP#>4sHr zj3W)g`zG!?e?jA2VRqQ%G*A`@$Ak>o{fbSyDm}>JRJ5+(o2a0$Gq#AJ%yR4d>)O$( zG4o0p9zB5xR0fXJn6}=U53`i#B8i5XFhzO^SKlz6O(Pubns3q2Dl2=Pom(~w#;GM-10PKMpf?eeaFc>Shbj947srKEcR>DcpA-&j2rQ9 z9nYaDy7&v}r=LodDRUi7>LQyK@A%|M}m@BgI>E|0Bgi0gDuzNocH z+0Tur_7}0U)uEZ(G@eCUk5yeDaN`i^DAFfX z6UV5Ox=B_XyEuhyVlX=6`(E%Sqvrgz(9&Ih_SxN2Gc>WwndOzcbLRBM<_7XYv9Prd zoIAf7+?K~9t1pMT9ogd67#;<{PmO+6xb3zMw!<)T()krj2mgy{(JTZ$W#htr1Bho8RnB;?sQ*EfbH z>j+g7EY!Q{CKgnC+Se!NS1Z5AXxFY9_iT?LQP?|2JCa&$ayP|Kfg&-Z8UzZ-@&XdF2T z+;f=j{n<~`48-D_d+-vImJ1XM+}VqjjC+>J57YRqq3+1sf!V8Ic9ASTu+Q@|#d!rN zX~WDMk0^*tD)+{|A8vJ_mGS;G_-gQS{+%|vQ&S$F{N`7gg$#8q*a?IBO-ZPaFMY>a zAB2C^o=lPSAb;P0Pu>s5TPz>h2zNgm6C{uP^Sd+RAb2OCbY2t?pa0A?1FX^cRlqxk z0I*rgf0uh2L2TOqg?xehQzFY7=693Haq0P;m zykQz839#;eFHKlR^8c}FDWCOVr{ml9XQ7%k zNdr!2e-x%?Fl2{S`ZJ%qrSqNcR4#+!1)Bv`Q+B}b@8xg@SV=r zBZuJ|N32o+3;yq=bf1_d=)_EI)E5@jQgwT^V0)^DI_hWfpbr|{M`L;}b>wZ$oM-gn z%EFU`Rc*qWTaO#Z;V2_gu-S)WzW?gN>oes6IYBdDR3}+cMd$-pUhnrCv2?xnX&m+& z!S>g1`a0t_6m?O!VGbpN_amjc$w}BB5)7fL_exl>mvrU(vhs@10X5mrcM*ewPz+$W zM<@?}D8t8QW3*7j5=L^gg<(f+f-bqB;0Nq?7IrKu8=EcxIQ(49{?QlF6O-`DI>eJ= zf$^Mr%QP>qBp`wzSe3Xp&fe!J+o&~W{vh|e9c;=pIOh9l{l#_<^L^jMd|@SK!f11P zSIV=aZh3`?p-VMv3qIS!D&P6uizIx}dTqDI2DFn=lS=L%@5&AJgfI%D54q|a)S(5_ z;hDoX%Yv5sDHK~w1qeHr+E_wV|< z3Oc1=E748316`ngGyCCNZ*b9z%sp{q!iBESc};NYHSi&6|p;dgKHw1l5dDK+f~0!!cS}He?ODyQ(+Cq=P^XOu%ef8ma=YBVA5;{-%+2b1N3lSvTQ0;oIK%d6XWBTg&Y?WO ze;GQrd`d6>{Fl}G@mS1K3~&1VO#ez)aQwZp8a9HF!rP=3bZV6pSJS6zG$~r^a97_{ z(9Lw|R*vg9?lJk?h2bj=Yw1lVK`4L9&tz?&Um;&{z!6{ zib*DF>1MbYH?vUKOIyQL?}q+1x{VTgDdWtkH51M{ZKT}o0h!{U)7;FjuS`>%1Sl72Z4l%X_vBG4QnOG8W8i)|@ ztWk}dkiaY)3QZI45R) zRHNhCPGznI_Z9WqG*}AL58zI2^BhKYjZH~BnX2b+YZ9~Em;&)Qi@f!1vUyt zhHh4xmT?8I=J9=+EJ_@&`nGx?j7%r97S#b8s)M}pO~kKM9{PE8lg<~ksW7P+RGPKk zB~fqy;W4RvRlp5zPKL*W~f%K^4!ww$4FW}mg}5`KzFf_H_+R2?F~xmKHi zyiKi9p|hJqNGV_D4@afV!BL@2DX8(Pm^%dxhOo&L?)52(!V5PTuD)RRciLm&qe9Ipf`Lx1t?N!NB zcGP@=`5^4!_=>sI9ksUFVHh`#zB+v{WWAw5tUTT$%U9Q*^kx5&F*#7;&U0rcAH4B( zBQdhU#pR`QOq(9`d4ZN=Jg7oEn*t*cd@|#=K@BP*h^ra+_PvHOSk z@eyNbMDpn=Spu7h$92ptehO0qdr6=u>==_cwMzZtk@_Nafp3CF1 zJ4%ka@|8Cam9P9+`Z!<+em^;75*r`Py73u7eRsK%7Iwys-)w<#Ftp8cYu(XI#!+VY zuR3hDDZ9=4Cl0~N{gk(cXE=?iRe#-*`GX9wn6>DTi8nJ&s-|4n-%Wl3PsYgm9wg+u z(~D)`McYlH?@;Y_g4eBM)DrHqz*&a@i?s1JJgCa!O!qoNB5iw6P9X+|1j6U*ZvpNUm|LxYgScWg`+(^?- zlwA!QR@MyN-&?oME488T>BXe&XonxIYCz@|NHvbg8xAi+U+G-O_ihdlG@J;mRQVeY zU`dSvYxhT_MoBT)*krphbFP$JPjFyw4VnWcto^=2$Avhg3)mH(*u{e_P@S8(p6KYP zv{ZJKAt!?$*}@sPx|bt3(U+rKCEnjT|4G5CAmZqrE227Ag_r*? zLz%PPX}*u6rfe*-B0><(P)n%wQ92o|Udm3VG##);J0v^Yn% zNI1k|!zO|3j}zj#Ajr;Ih#rpF`P;%HE%x(gn`_Y7xf-zJ zZ6>ta`@NJiE!QE<&QH&8r@PKxcR=8AA5Y+VAIHi!_w;x=68Lj7 zzD+t%gDjsS9Z%4qdZwxnUVuI?DpUE+{MI zQ@@Tqpg(Ue^607+BBEl0f6jc-+pc_N;GxMxsQI&fZwgwTK>2#YtkWmg^p`g2dG!0D zh)RsVmTP9Whkkyr5e{td4q(Yt2p)}?(y*)Kq|kQB!hGth%dM*}DQd?FRlw#x+jQqp z*nJdG>avX|JQ#!a>hjNnF|;e(+p>4F=z%1Mbd?Z@lGE(`eWFH5BFU)&jpGfCS4r}r z+5+43rY+YEp@Ll%igzKy<7G7L^3LC(U-Tdd8|q4ZhvVTHFrBHhWf=8lJ&#lm#dV;> zA6novyt#s|r!`E&&o$C=td5qp#WVJ+P-avLGosr)2I8})eT-Sp-A&kgnPjJux8u3_R(=VaT*nNfP5C zfcj)+al=D_5gvMDKrz@ZEHpl~W=eDUnNpuLkM`){$@1#sOMu>BAH-&v?L7vuh7YvE ziRNpT=Fs{_ejJV{mtSy$lawye8YUV`my}A{gXExPhoZ$eA+(@J(hQeV6ZQ0XTxj4SD z^olE0aXfonWk>cWf|4f!PgK|uaeSeNRe2E+z!tzgP&EMMbm8dA;C99nfbC`rrdmW; zUQ*0;fu)$lwaLzQHmVI2eu^MM5@?N*RFDuTWF9if$>+ZPbt_FB(&B-tP*w}8v2yO`=<_!;Pu1N%wY&`TB-R*ARN$9Ru+ygIL0`gYn=`c)ozn z&4!!dQ*O&R%??N4cz}IS$if1H7w#dK!{{(#smPbJ{6c2_CxId@|60%%?W z+!jb7Q~S&9$#;;eaIFozMb!5N<_+qQGZzyt7((BCX3JGu-AnDee7|l_Zx~I79w;!bYLUs|IyyL$3vO6 zar{9J?^uU6vQ189L)*40Gm4T4krlE;O`$D0=9G~fhqa~Mq63OSvV=`$%K1F3oI=K7 zsbTQ3H2Ht{$u8Tp3igN*LD4_>;66^Z{hsx#D4kx z!Osyc$!{ZeS!4cD=*c3M z9?XQrd|M+Wvt4^xr>K8A@^yCa+_HlIWM$VV2}xcrz03KTyf56IxGA;cm~Wh#<1Lw` zR$hWgTbAf0Ijq7?7-|0w{SUtPAZj5uLY6o$e5YmCxYz`HWDc#M-cKoM(3}fpP_*+Jf5u>hRxF89(6^Kj9QV z;S^yb_=Hnj#e4qO;S?=}!a(;>H#2HnrmT>Dk*%>HEGXWFbui)%HJQm6o& zSTm z5V%d+MXuwh52|M8`A_w==L~u<^BcJUOp@xOIbbyT?ol=uoDJAVsJ%eM8?qA0ebYNk zqdpoa2AZMVizuJ&D6Y0q8v0DE(agnT(EZo-NR~Ez>_PT;DJm`R1A&y|LRU0kXP6~A zp@6}Sh)W{yAKC#p_lU%v+`6L};{FK_3jk>>Euiwgp7Zi@wWtzKEy?=_mg)sVp)rUi z!9Iepy+H^qWt4um&QtW2MfR(V6Gdp48%G%@8V_efy+?k#?Uj3VdWHtG{ekT5Wh~GD z+)(+4*iiv`B6B!(h|CYT<4A7RFqhN7crYx>@r?MB^!foaNrVD(attrApIhfiZaXNK z0C`4Sm$e82e8wXsK8l)7hh48yq01JsxfTd2JI)3)K(_N#McAJ2-zRk;g6C)fWG<*B zOuyCESD<*91TkGZ*74F`E(%(hT>HuchCo%CJa64Ag^;X62CBk2Qz-xM_~X+DU9-Q1 za63Xo;(>N!N|)6$1JrFKBkkKxIoXlMZZy zdbA|K*?XSKn(G(kmuuKs6nR=& zTFo~WA_%I>_Ndz4r>lXosdeu8DQfW`rp)|)w!nybq3V~1HD5U3b+FVB|9M)IyrhCo zr&cF6T-uXJrkt)C%bv{|5!E|6UE*z+ zsakxbHU($7Da=T2WWVe=^)I~F?Qx3@H&672EN77O28I-nr37ZUIme4P;e|!f_iyQZOY;MOP3kj zq#0{xK{CWo>}HW-Sd~m!K@#>yK|$W33MC}#`}stl`Y3a;WRU^ANysuyP0LbnZBo`a zx9VvjgdCs=S|1oNqEb<&Z~YU1|Ecs)L!5E<~s-64wVBVk{J!{W=CG+MKuJamO+l5E^IYMdA$YXAku$xkTd0BU} znbrtZSsEjJD_;roWxmn*WD4iHPd}pSZ`-_99YSk4%?v38%;x)eiUzWgZV9H$c^+4aa?%H-fnw?KMV|} zgT4)~8BQVF-#ylUUsS~L$u z?p3|#55l91a#8N8(0V#cF@#&HX&pBMq2A(|jA0}qRS7uPTOPOFCF-XnqQ3T);DA#Z z&xPht>Wg^`A#dZ?F}|X!X@b~$mMUDr%V=}8>xTYvNW+!2Dxg6G;U{5zW{M|)6XKL# zNbc`bkZ|sP#35d1TdCw6=i#@eZp1iTB}Z4dGmWF=U3nqwoFa;D5a;>XozTebvu>%R z1L+-I)0iy;aG%bkfT09ko$IJ}k09!gK9JkOo*rM0G5+O@AR^J`pDE>H6SzAK9?j#vnIBbz)64*Q2bpERqU0mic><=tr=%m@=wkRe|@6xVSdIo zg=9#_nOYYl5xpmj&|>%gNSB`K2+>jkP1}CGA?j59~S3^r-h&!phC;*Uf|rf+8;D^p+AZbrkT)e8WM7f#ol@GPmlTek^PG>{6zKcIhgk>c0C ziBGio;C~1m9hpU;#2S&A6V}&tIq@FRAxtf(KeuF+X&gN-iTF!|QSQ1dF<`jdKDUc2Dzz+$bOLp<;wv&+p2+ChrK7d$3amMghgZ&SeA zBEQu2W!77%4`A6xMhh|Pdn=*um21lN^Dhlo<$%67`;}rpjS&QCEtt%)_bgG+Cf&S$ zSKbehRwvN!j&7WQWxtTeRue*uTOLrGXaPdF*uIIF=yKjmHND3Y7ol6)jTC!w=>hwV zJ1(5!IG-ddSq{oPOREm`icxbLoRcj3=%LGtAdv@T1V0Unfn&J^D+ON66)4t@?Hb!` zLaT)touRc4+`XzV#=7tgFk!a zTm52k6~T)|PK(aDddmHO{&S;hNyDoSM>1T}3RINAAoxCS*;EfR*}3YZ_ygjE>D6z4 vuMh#h7~w|;|Ays={O9*}eDpJyoSS)4A#|&T^UIt0If%(Yb3>~BsUQ9c7Om#2 literal 0 HcmV?d00001 diff --git a/MEDIA/hypervisor_container_unikernel.jpg b/MEDIA/hypervisor_container_unikernel.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9de68afdfbf9ce8dcae1f4781b9283b287efedf2 GIT binary patch literal 73327 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∓a4e3%Rt;swv*V9DHAN({Y3jDI##s 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 J%>4WK{{nnYTWbIS literal 0 HcmV?d00001 diff --git a/MEDIA/mutable-vs-immutable-update.PNG b/MEDIA/mutable-vs-immutable-update.PNG new file mode 100644 index 0000000000000000000000000000000000000000..4239258d1b26b8020eb96006f10b197704e370be GIT binary patch literal 119862 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 >Kh)%_PAJ3Qko% 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 N&Dq0=d?@(p{{cYW&u{<$ literal 0 HcmV?d00001 diff --git a/MEDIA/unikernel_network.PNG b/MEDIA/unikernel_network.PNG new file mode 100644 index 0000000000000000000000000000000000000000..e842074358fabaf0429f4ce3dbbc6d6a74283768 GIT binary patch literal 38416 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 G3;!RT#D?Yo literal 0 HcmV?d00001 diff --git a/MEDIA/vms-containers-unikernels.PNG b/MEDIA/vms-containers-unikernels.PNG new file mode 100644 index 0000000000000000000000000000000000000000..5df8c4da95c44d582e9afe44cb0cb1059730b4de GIT binary patch literal 20716 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 K=d#Wzp$PzCG(bN9 literal 0 HcmV?d00001 diff --git a/SOURCE/CONTAINER/DNS/Dockerfile b/SOURCE/CONTAINER/DNS/Dockerfile new file mode 100644 index 0000000..df1bb56 --- /dev/null +++ b/SOURCE/CONTAINER/DNS/Dockerfile @@ -0,0 +1,5 @@ +FROM alpine:latest +RUN mkdir /service +COPY runnableService /service +WORKDIR /service +CMD sleep 1 && ./runnableService "$(hostname -i)" diff --git a/SOURCE/CONTAINER/DNS/compile.sh b/SOURCE/CONTAINER/DNS/compile.sh new file mode 100644 index 0000000..fca659f --- /dev/null +++ b/SOURCE/CONTAINER/DNS/compile.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --rm -it -v "${PWD}":/usr/src/build -w /usr/src/build cetic/compiler g++ -std=c++11 -static -o runnableService *.cpp diff --git a/SOURCE/CONTAINER/DNS/create_container.sh b/SOURCE/CONTAINER/DNS/create_container.sh new file mode 100644 index 0000000..d248b8e --- /dev/null +++ b/SOURCE/CONTAINER/DNS/create_container.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t cetic/dns . diff --git a/SOURCE/CONTAINER/DNS/dnsServer.cpp b/SOURCE/CONTAINER/DNS/dnsServer.cpp new file mode 100644 index 0000000..d023762 --- /dev/null +++ b/SOURCE/CONTAINER/DNS/dnsServer.cpp @@ -0,0 +1,283 @@ +/** + * Basic DNS server for the IncludeOS unikernel framework. + * + * This code uses portions of code created by GitHub user tomasorti for his dns-server project (https://github.com/tomasorti/dns-server) + */ + +#include +#include +#include +#include +#include +#include +#include + +#define SERVER_PORT 53 +#define BUFFER_SIZE 1024 + +static const unsigned int QR_MASK = 0x8000; +static const unsigned int OPCODE_MASK = 0x7800; +static const unsigned int AA_MASK = 0x0400; +static const unsigned int TC_MASK = 0x0200; +static const unsigned int RD_MASK = 0x0100; +static const unsigned int RA_MASK = 0x8000; +static const unsigned int RCODE_MASK = 0x000F; +static const unsigned int HDR_OFFSET = 12; + +// for more info on DNS fields, see RFC 1035 + +struct queryHeader { + unsigned int id; // 16 bit identifier assigned by the program who generated the query + unsigned int query; // identifies if message is query (0) or a response (1) + unsigned int opcode; // 4 bit field specifying kind of query: standard (0), inverse (1), server status request (2), reserved (3-15) + unsigned int aa; // bit indicating if responding server is an authority for the domain name + unsigned int truncation; // specifies whether this message was truncated or not + unsigned int recursionDesired; // may be set in a query, directs the name server to pursue the query recursively + unsigned int recursionAvailable; // set in a response, indicates whether recursive queries are available + unsigned int responseCode; // 4 bit response code: 0 - no error, 1 - format error, 2 - server failure, 3 - name error, 4 - not implemented, 5 - refused + + // unsigned 16-bit integers + unsigned int questionCount; // number of entries in the question section + unsigned int answerCount; // number of resource reconds in the answer section + unsigned int nameServerCount; // number of name server resource records in the authority records section + unsigned int additionalResourceCount; // number of resource records in the additional records section +}; + +struct queryQuestion { + std::string queryName; // domain name requested + unsigned int queryType; // 2 octet code specifying the type of the query + unsigned int queryClass; // 2 octet code specifying the class of the query +}; + +queryHeader pQueryHeader; +queryQuestion pQueryQuestion; +std::map> resourceRecords; + +unsigned int get16bits(char*& buffer) { + unsigned int value = static_cast (buffer[0]); + value = value << 8; + value += static_cast (buffer[1]); + buffer += 2; + + return value; +} + +void put8bits(char*& buffer, unsigned int value) throw () { + buffer[0] = (value); + buffer += 1; +} + +void put16bits(char*& buffer, unsigned int value) throw () { + buffer[0] = (value & 0xFF00) >> 8; + buffer[1] = value & 0xFF; + buffer += 2; +} + +void put32bits(char*& buffer, unsigned long value) throw () { + buffer[0] = (value & 0xFF000000) >> 24; + buffer[1] = (value & 0xFF0000) >> 16; + buffer[2] = (value & 0xFF00) >> 16; + buffer[3] = (value & 0xFF) >> 16; + buffer += 4; +} + +queryHeader decodeHeader(char* data, queryHeader pQueryHeader){ + pQueryHeader.id = get16bits(data); + + unsigned int fields = get16bits(data); + pQueryHeader.query = fields & QR_MASK; + pQueryHeader.opcode = fields & OPCODE_MASK; + pQueryHeader.aa = fields & AA_MASK; + pQueryHeader.truncation = fields & TC_MASK; + pQueryHeader.recursionDesired = fields & RD_MASK; + pQueryHeader.recursionAvailable = fields & RA_MASK; + + pQueryHeader.questionCount = get16bits(data); + pQueryHeader.answerCount = get16bits(data); + pQueryHeader.nameServerCount = get16bits(data); + pQueryHeader.additionalResourceCount = get16bits(data); + return pQueryHeader; +} + +queryQuestion decodeQuery(char*& data, queryQuestion pQueryQuestion){ + pQueryQuestion.queryName = ""; + + int length = *data++; + while (length != 0) { + for (int i = 0; i < length; i++) { + char c = *data++; + pQueryQuestion.queryName.append(1, c); + } + length = *data++; + if (length != 0) pQueryQuestion.queryName.append(1,'.'); + } + + pQueryQuestion.queryType = get16bits(data); + pQueryQuestion.queryClass = get16bits(data); + return pQueryQuestion; +} + +void codeDomain(char*& buffer, const std::string& domain) { + int start = 0, end; // indexes + while ((end = domain.find('.', start)) != std::string::npos) { + *buffer++ = end - start; // label length octet + for (int i=start; i>::iterator record = resourceRecords.find(pQueryQuestion.queryName); + if (record == resourceRecords.end()) + bRRexists = false; + + char* bufferBegin = buffer; + + // create header + put16bits(buffer, pQueryHeader.id); + + int fields = (1 << 15); // Response code + fields += (0 << 11); // Opcode + fields += (0 << 10); // Authoritative code + fields += (0 << 9); // Truncated code + fields += (1 << 8); // Recursion desired code + fields += (0 << 7); // Recursion available code + fields += (0 << 6); // Z reserved code + fields += (0 << 5); // Answers authenticated code + fields += (0 << 4); // Non-authenticated data code + if(bRRexists && pQueryQuestion.queryType == 1) + fields += 0; // Reply code + else + fields += 3; + put16bits(buffer, fields); + + put16bits(buffer, pQueryHeader.questionCount); // Questions count + if(bRRexists && pQueryQuestion.queryType == 1) + put16bits(buffer, 1); // Answers count + else + put16bits(buffer, 0); + put16bits(buffer, 0); // Authority RRs + put16bits(buffer, 0); // Additional RRs + + // create domain query section - copy original question format + codeDomain(buffer, pQueryQuestion.queryName); + put16bits(buffer, pQueryQuestion.queryType); + put16bits(buffer, pQueryQuestion.queryClass); + + // if requested domain exists in resourceRecords, create the answer + if(bRRexists && pQueryQuestion.queryType == 1){ + // compression code to pointing to original question - should be offset from ID to domain name (in number of 16bits) + put16bits(buffer, 49164); + + put16bits(buffer, pQueryQuestion.queryType); + put16bits(buffer, pQueryQuestion.queryClass); + put32bits(buffer, 0); // time to live + + put16bits(buffer, 4); // data length (always 4 for IPv4 addresses) + put8bits(buffer,resourceRecords[pQueryQuestion.queryName][0]); + put8bits(buffer,resourceRecords[pQueryQuestion.queryName][1]); + put8bits(buffer,resourceRecords[pQueryQuestion.queryName][2]); + put8bits(buffer,resourceRecords[pQueryQuestion.queryName][3]); + } + + int size = buffer - bufferBegin; + + return size; +} + +int main(int argc, char *argv[]) +{ + resourceRecords["www.cetic.be"].push_back(10); + resourceRecords["www.cetic.be"].push_back(0); + resourceRecords["www.cetic.be"].push_back(0); + resourceRecords["www.cetic.be"].push_back(5); + resourceRecords["cetic.be"].push_back(10); + resourceRecords["cetic.be"].push_back(0); + resourceRecords["cetic.be"].push_back(0); + resourceRecords["cetic.be"].push_back(5); + resourceRecords["internship.cetic.be"].push_back(10); + resourceRecords["internship.cetic.be"].push_back(0); + resourceRecords["internship.cetic.be"].push_back(0); + resourceRecords["internship.cetic.be"].push_back(5); + + // define address and socket variables + struct sockaddr_in serverAddress; + int serverSocket; + struct sockaddr_in clienAddress; + socklen_t clientAddressLength = sizeof(clienAddress); + int bytesReceivedLength; + char receiveBuffer[BUFFER_SIZE]; + + // creating UDP socket + if ((serverSocket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + perror("cannot create socket"); + return 0; + } + + // defining server address properties + memset((void *)&serverAddress, 0, sizeof(serverAddress)); + serverAddress.sin_family = AF_INET; + serverAddress.sin_addr.s_addr = inet_addr(argv[1]); + //serverAddress.sin_addr.s_addr = htonl(INADDR_ANY); + serverAddress.sin_port = htons(SERVER_PORT); + + // binding to UDP socket + if (bind(serverSocket, (struct sockaddr *)&serverAddress, sizeof(serverAddress)) < 0) { + perror("bind failed"); + return 0; + } + + printf("Service IP address is %s on port %d\n", inet_ntoa(serverAddress.sin_addr), ntohs(serverAddress.sin_port)); + + for (;;) { + bytesReceivedLength = recvfrom(serverSocket, receiveBuffer, BUFFER_SIZE, 0, (struct sockaddr *)&clienAddress, &clientAddressLength); + printf("received %d bytes\n", bytesReceivedLength); + if (bytesReceivedLength > 0) { + char* data = &receiveBuffer[0]; + + pQueryHeader = decodeHeader(data, pQueryHeader); + data += HDR_OFFSET; + pQueryQuestion = decodeQuery(data, pQueryQuestion); + + // debug output + printf("####### INCOMMING REQUEST #######\n"); + printf("Getting UDP data from %s:%d\n", inet_ntoa(clienAddress.sin_addr), ntohs(clienAddress.sin_port)); + printf("Header:\n"); + printf("\tID: %u\n",pQueryHeader.id); + printf("\tQuery: %u\n", pQueryHeader.query); + printf("\topCode: %u\n", pQueryHeader.opcode); + printf("\tAA: %u\n", pQueryHeader.aa); + printf("\tTruncation: %u\n", pQueryHeader.truncation); + printf("\tRecursion Desired: %u\n", pQueryHeader.recursionDesired); + printf("\tRecursion Available: %u\n", pQueryHeader.recursionAvailable); + printf("\tReponse Code: %u\n", pQueryHeader.responseCode); + printf("\tQuestion Count: %u\n", pQueryHeader.questionCount); + printf("\tAnswer Count: %u\n", pQueryHeader.answerCount); + printf("\tName Server Count: %u\n", pQueryHeader.nameServerCount); + printf("\tAdditional Resource Count: %u\n", pQueryHeader.additionalResourceCount); + printf("Query:\n"); + printf("\tQuery name: %s\n", pQueryQuestion.queryName.data()); + printf("\tQuery Type: %u\n", pQueryQuestion.queryType); + printf("\tAdditional Resource Count: %u\n", pQueryQuestion.queryClass); + printf("#################################\n"); + + // send reply + char buffer[BUFFER_SIZE]; + int nbrBytes = processQuery(buffer, pQueryHeader, pQueryQuestion); + + sendto(serverSocket, buffer, nbrBytes, 0, (struct sockaddr *)&clienAddress, clientAddressLength); + } + } +} diff --git a/SOURCE/CONTAINER/DNS/run_service.sh b/SOURCE/CONTAINER/DNS/run_service.sh new file mode 100644 index 0000000..a49024a --- /dev/null +++ b/SOURCE/CONTAINER/DNS/run_service.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --rm -d cetic/dns diff --git a/SOURCE/CONTAINER/DNS/start.sh b/SOURCE/CONTAINER/DNS/start.sh new file mode 100644 index 0000000..5168160 --- /dev/null +++ b/SOURCE/CONTAINER/DNS/start.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# Building binary from C++ code (statically linking libraries) +docker run --rm -it -v "${PWD}":/usr/src/build -w /usr/src/build cetic/compiler g++ -std=c++11 -static -o runnableService *.cpp + +# Building the container (expecting the Dockerfile to be present) +docker build -t cetic/dns . + +# Launching the service in a Docker container +docker run --rm -d cetic/dns diff --git a/SOURCE/CONTAINER/Dockerfile b/SOURCE/CONTAINER/Dockerfile new file mode 100644 index 0000000..72493db --- /dev/null +++ b/SOURCE/CONTAINER/Dockerfile @@ -0,0 +1,2 @@ +FROM alpine:latest +RUN apk add --no-cache gcc g++ diff --git a/SOURCE/CONTAINER/README.md b/SOURCE/CONTAINER/README.md new file mode 100644 index 0000000..2e491f5 --- /dev/null +++ b/SOURCE/CONTAINER/README.md @@ -0,0 +1,45 @@ +# Container Code + +This folder contains the container version of the unikernel services. + +Each folder holds: +* The CPP file containing the code +* A **compile.sh** script to compile the CPP file into a runnable service +* A **Dockerfile** to create the container for this service +* A **create_container.sh** script to create to container from the Dockerfile +* A **run_service.sh** script to run the created container in detached mode +* A **start.sh** script that will compile the binary from code, build the Docker container and run it (in detached mode) + +The following section briefly explains the steps taken. + +## Pre Requisite + +Before running the **compile.sh** or **start.sh** scripts, you must first build the **builder** container from the Dockerfile in this parent folder. + +This can be done by running the **create_compiler.sh** script or running the following command from the CONTAINER directory: + +``` +docker build -t cetic/compiler . +``` + +## Compiling the binary (*compile.sh*) + +*Requires the cetic/compiler container image* + +This script will launch a new cetic/compiler image container, mapping the current folder to a folder inside the container, then it will staticaly compile the C++ code in the .cpp file in the directory and output a *runnableService* binary. + +## Creating the container + +This will create the service container using the **Dockerfile**. + +It will use the lastest version of alpine base image and copy the **runnableService** executable inside the container. + +## Running the container + +When running the container, it will execute the command instructed in the **Dockerfile**. + +The container will wait for the network to be up (sleep 1) then it will launch the service binary, passing the container's IP address to bind the service to as a paramater. + +The script starts it in detached mode (i.e.: in the background) + +**NB:** as of now, the IP address is not given statically, you must run `docker network inspect bridge` to view the IP address assigned to the container. \ No newline at end of file diff --git a/SOURCE/CONTAINER/WebServer/Dockerfile b/SOURCE/CONTAINER/WebServer/Dockerfile new file mode 100644 index 0000000..ea95ca0 --- /dev/null +++ b/SOURCE/CONTAINER/WebServer/Dockerfile @@ -0,0 +1,6 @@ +FROM alpine:latest +RUN mkdir /service +COPY runnableService /service +COPY index.html /service +WORKDIR /service +CMD sleep 1 && ./runnableService "$(hostname -i)" diff --git a/SOURCE/CONTAINER/WebServer/compile.sh b/SOURCE/CONTAINER/WebServer/compile.sh new file mode 100644 index 0000000..fca659f --- /dev/null +++ b/SOURCE/CONTAINER/WebServer/compile.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --rm -it -v "${PWD}":/usr/src/build -w /usr/src/build cetic/compiler g++ -std=c++11 -static -o runnableService *.cpp diff --git a/SOURCE/CONTAINER/WebServer/create_container.sh b/SOURCE/CONTAINER/WebServer/create_container.sh new file mode 100644 index 0000000..74dcda1 --- /dev/null +++ b/SOURCE/CONTAINER/WebServer/create_container.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t cetic/webserver . diff --git a/SOURCE/CONTAINER/WebServer/index.html b/SOURCE/CONTAINER/WebServer/index.html new file mode 100644 index 0000000..c6c9b59 --- /dev/null +++ b/SOURCE/CONTAINER/WebServer/index.html @@ -0,0 +1,15 @@ + + + + + CETIC Internship Unikernel Web Page + + + +

+ CETIC Internship Unikernel Web Page +

+
+

This is the first web server spawn from a unikernel during the CETIC Intership 2017-18

+ + diff --git a/SOURCE/CONTAINER/WebServer/run_service.sh b/SOURCE/CONTAINER/WebServer/run_service.sh new file mode 100644 index 0000000..6964d3d --- /dev/null +++ b/SOURCE/CONTAINER/WebServer/run_service.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --rm -d cetic/webserver diff --git a/SOURCE/CONTAINER/WebServer/start.sh b/SOURCE/CONTAINER/WebServer/start.sh new file mode 100644 index 0000000..d0f1184 --- /dev/null +++ b/SOURCE/CONTAINER/WebServer/start.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# Building binary from C++ code (statically linking libraries) +docker run --rm -it -v "${PWD}":/usr/src/build -w /usr/src/build cetic/compiler g++ -std=c++11 -static -o runnableService *.cpp + +# Building the container (expecting the Dockerfile to be present) +docker build -t cetic/webserver . + +# Launching the service in a Docker container +docker run --rm -d cetic/webserver diff --git a/SOURCE/CONTAINER/WebServer/webServer.cpp b/SOURCE/CONTAINER/WebServer/webServer.cpp new file mode 100644 index 0000000..2f6c803 --- /dev/null +++ b/SOURCE/CONTAINER/WebServer/webServer.cpp @@ -0,0 +1,120 @@ +/* + * This code is adapted from the IncludeOS Acorn web server example. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define SERVER_PORT 80 +#define BUFFER_SIZE 2048 + +bool isIndexRequested(char receiveBuffer[]) { + // if only / is requested + if(receiveBuffer[4] == '/' && receiveBuffer[5] == ' ') + return true; + + // if only /index.html is requested + char request[25]; + memcpy(request, receiveBuffer, 24); + request[25] = '\0'; + + char *output = NULL; + output = strstr(request," /index.html "); + if(output) + return true; + + return false; +} + +int main(int argc, char *argv[]) +{ + // define address and socket variables + struct sockaddr_in serverAddress; + int serverSocket; + int clientSocket; + struct sockaddr_in clientAddress; + socklen_t clientAddressLength = sizeof(clientAddress); + int bytesReceivedLength; + char receiveBuffer[BUFFER_SIZE]; + + // Retrieve the HTML page from the disk + std::ifstream file("index.html", std::ios::binary | std::ios::ate); + std::streamsize indexLength = file.tellg(); + file.seekg(0, std::ios::beg); + char indexArray[indexLength]; + file.read(indexArray, indexLength); + + // creating error message + std::string error = "HTTP/1.1 404 Not Found\r\nContent-Type: text/html\r\n\r\nPage not found\r\n"; + int errorLength = error.length(); + // declaring character array + char errorArray[errorLength+1]; + strcpy(errorArray, error.c_str()); + + + // creating TCP socket + if ((serverSocket = socket(AF_INET, SOCK_STREAM, 0)) < 0) { + perror("cannot create socket"); + return 0; + } + + // defining server address properties + memset((void *)&serverAddress, 0, sizeof(serverAddress)); + serverAddress.sin_family = AF_INET; + serverAddress.sin_addr.s_addr = inet_addr(argv[1]); + //serverAddress.sin_addr.s_addr = htonl(INADDR_ANY); + serverAddress.sin_port = htons(SERVER_PORT); + + // binding to UDP socket + if (bind(serverSocket, (struct sockaddr *)&serverAddress, sizeof(serverAddress)) < 0) { + perror("bind failed"); + return 0; + } + + // set the socket for listening (queue backlog of 5) + if (listen(serverSocket, 5) < 0) { + perror("listen failed"); + return 0; + } + + printf("Service IP address is %s on port %d\n", inet_ntoa(serverAddress.sin_addr), ntohs(serverAddress.sin_port)); + + for (;;) { + clientSocket = accept(serverSocket, (struct sockaddr *)&clientAddress, &clientAddressLength); + + bytesReceivedLength = read(clientSocket, receiveBuffer, BUFFER_SIZE); + + printf("####### INCOMMING REQUEST #######\n"); + printf("Received a connection from: %s port %d\n", inet_ntoa(clientAddress.sin_addr), ntohs(clientAddress.sin_port)); + printf("received %d bytes\n", bytesReceivedLength); + + if (bytesReceivedLength > 0) { + + // TODO respond only to GET and / or /index.html + if(receiveBuffer[0] == 'G' && isIndexRequested(receiveBuffer) ) { //request is not a GET + // debug output + printf("%s", receiveBuffer); + + // send reply + //printf("%s", indexArray); + int nbytes = write(clientSocket, indexArray, indexLength); + printf("%d sent to client\n", nbytes); + } else { + printf("%s", receiveBuffer); + int nbytes = write(clientSocket, errorArray, (errorLength+1)); + printf("%d bytes sent to client\n", nbytes); + } + + printf("#################################\n"); + shutdown(clientSocket, 2); + } + } +} diff --git a/SOURCE/CONTAINER/create_compiler.sh b/SOURCE/CONTAINER/create_compiler.sh new file mode 100644 index 0000000..e0882f6 --- /dev/null +++ b/SOURCE/CONTAINER/create_compiler.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t cetic/compiler . diff --git a/SOURCE/README.md b/SOURCE/README.md new file mode 100644 index 0000000..d7d76e1 --- /dev/null +++ b/SOURCE/README.md @@ -0,0 +1,21 @@ +# Source Code + +This folder contains the source code of the unikernel projects created with the [IncludeOS framework](https://github.com/hioa-cs/IncludeOS) + +Each folder contains the source code for a single unikernel. + +## Building Unikernel Image + +**Requires IncludeOS to be installed on the system** + +The script **cmake_build.sh** can be executed to build the each unikernel images. The .img disk file will be located in the **build** folder inside the project folder. + +## Container Versions + +The **CONTAINER** folder contains the container versions of the unikernel images. + +The container versions are aimed to be analogs of the unikernel code but adapted to run in a standalone Docker container. + +## Deployment + +For deploying the unikernel or container environment, see the [DEPLOYMENT](https://git.cetic.be/stages/unikernels/tree/feature/stagelongree2018/DEPLOYMENT) folder for deployment scripts. \ No newline at end of file diff --git a/SOURCE/UNIKERNEL/DNS/CMakeLists.txt b/SOURCE/UNIKERNEL/DNS/CMakeLists.txt new file mode 100644 index 0000000..3874757 --- /dev/null +++ b/SOURCE/UNIKERNEL/DNS/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 2.8.9) + +# IncludeOS install location +if (NOT DEFINED ENV{INCLUDEOS_PREFIX}) + set(ENV{INCLUDEOS_PREFIX} /usr/local) +endif() +include($ENV{INCLUDEOS_PREFIX}/includeos/pre.service.cmake) +project (DNS) + +# Human-readable name of your service +set(SERVICE_NAME "CETIC DNS Service") + +# Name of your service binary +set(BINARY "DNS") + +# Source files to be linked with OS library parts to form bootable image +set(SOURCES + service.cpp # ...add more here + ) + +# To add your own include paths: +# set(LOCAL_INCLUDES ".") + +# DRIVERS / PLUGINS: + +set(DRIVERS + virtionet # Virtio networking + # virtioblock # Virtio block device + # ... Others from src/drivers +) + +set(PLUGINS + ) + +# include service build script +include($ENV{INCLUDEOS_PREFIX}/includeos/post.service.cmake) diff --git a/SOURCE/UNIKERNEL/DNS/cmake_build.sh b/SOURCE/UNIKERNEL/DNS/cmake_build.sh new file mode 100644 index 0000000..529e821 --- /dev/null +++ b/SOURCE/UNIKERNEL/DNS/cmake_build.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +mkdir -p build +pushd build +cmake .. +make +popd diff --git a/SOURCE/UNIKERNEL/DNS/config.json b/SOURCE/UNIKERNEL/DNS/config.json new file mode 100644 index 0000000..c38d4bc --- /dev/null +++ b/SOURCE/UNIKERNEL/DNS/config.json @@ -0,0 +1,11 @@ +{ + "net": [ + { + "iface": 0, + "config": "static", + "address": "10.0.0.100", + "netmask": "255.255.255.0", + "gateway": "10.0.0.254" + } + ] +} diff --git a/SOURCE/UNIKERNEL/DNS/service.cpp b/SOURCE/UNIKERNEL/DNS/service.cpp new file mode 100644 index 0000000..ba3342e --- /dev/null +++ b/SOURCE/UNIKERNEL/DNS/service.cpp @@ -0,0 +1,262 @@ +/** + * Basic DNS server for the IncludeOS unikernel framework. + * + * This code uses portions of code created by GitHub user tomasorti for his dns-server project (https://github.com/tomasorti/dns-server) + */ + +#include +#include +#include +#include + +using namespace net; + +#define SERVER_PORT 53 + +static const uint QR_MASK = 0x8000; +static const uint OPCODE_MASK = 0x7800; +static const uint AA_MASK = 0x0400; +static const uint TC_MASK = 0x0200; +static const uint RD_MASK = 0x0100; +static const uint RA_MASK = 0x8000; +static const uint RCODE_MASK = 0x000F; +static const uint HDR_OFFSET = 12; +static const int BUFFER_SIZE = 1024; + +// for more info on DNS fields, see RFC 1035 + +struct queryHeader { + uint id; // 16 bit identifier assigned by the program who generated the query + uint query; // identifies if message is query (0) or a response (1) + uint opcode; // 4 bit field specifying kind of query: standard (0), inverse (1), server status request (2), reserved (3-15) + uint aa; // bit indicating if responding server is an authority for the domain name + uint truncation; // specifies whether this message was truncated or not + uint recursionDesired; // may be set in a query, directs the name server to pursue the query recursively + uint recursionAvailable; // set in a response, indicates whether recursive queries are available + uint responseCode; // 4 bit response code: 0 - no error, 1 - format error, 2 - server failure, 3 - name error, 4 - not implemented, 5 - refused + + // unsigned 16-bit integers + uint questionCount; // number of entries in the question section + uint answerCount; // number of resource reconds in the answer section + uint nameServerCount; // number of name server resource records in the authority records section + uint additionalResourceCount; // number of resource records in the additional records section +}; + +struct queryQuestion { + std::string queryName; // domain name requested + uint queryType; // 2 octet code specifying the type of the query + uint queryClass; // 2 octet code specifying the class of the query +}; + +queryHeader pQueryHeader; +queryQuestion pQueryQuestion; +std::map> resourceRecords; + +uint get16bits(const char*& buffer) { + uint value = static_cast (buffer[0]); + value = value << 8; + value += static_cast (buffer[1]); + buffer += 2; + + return value; +} + +void put8bits(char*& buffer, uint value) throw () { + buffer[0] = (value); + buffer += 1; +} + +void put16bits(char*& buffer, uint value) throw () { + buffer[0] = (value & 0xFF00) >> 8; + buffer[1] = value & 0xFF; + buffer += 2; +} + +void put32bits(char*& buffer, ulong value) throw () { + buffer[0] = (value & 0xFF000000) >> 24; + buffer[1] = (value & 0xFF0000) >> 16; + buffer[2] = (value & 0xFF00) >> 16; + buffer[3] = (value & 0xFF) >> 16; + buffer += 4; +} + +queryHeader decodeHeader(const char* data, queryHeader pQueryHeader){ + pQueryHeader.id = get16bits(data); + + uint fields = get16bits(data); + pQueryHeader.query = fields & QR_MASK; + pQueryHeader.opcode = fields & OPCODE_MASK; + pQueryHeader.aa = fields & AA_MASK; + pQueryHeader.truncation = fields & TC_MASK; + pQueryHeader.recursionDesired = fields & RD_MASK; + pQueryHeader.recursionAvailable = fields & RA_MASK; + + pQueryHeader.questionCount = get16bits(data); + pQueryHeader.answerCount = get16bits(data); + pQueryHeader.nameServerCount = get16bits(data); + pQueryHeader.additionalResourceCount = get16bits(data); + return pQueryHeader; +} + +queryQuestion decodeQuery(const char*& data, queryQuestion pQueryQuestion){ + pQueryQuestion.queryName = ""; + + int length = *data++; + while (length != 0) { + for (int i = 0; i < length; i++) { + char c = *data++; + pQueryQuestion.queryName.append(1, c); + } + length = *data++; + if (length != 0) pQueryQuestion.queryName.append(1,'.'); + } + + pQueryQuestion.queryType = get16bits(data); + pQueryQuestion.queryClass = get16bits(data); + return pQueryQuestion; +} + +void codeDomain(char*& buffer, const std::string& domain) { + int start = 0, end; // indexes + while ((end = domain.find('.', start)) != std::string::npos) { + *buffer++ = end - start; // label length octet + for (int i=start; i>::iterator record = resourceRecords.find(pQueryQuestion.queryName); + if (record == resourceRecords.end()) + bRRexists = false; + + + char* bufferBegin = buffer; + + // create header + put16bits(buffer, pQueryHeader.id); + + int fields = (1 << 15); // Response code + fields += (0 << 11); // Opcode + fields += (0 << 10); // Authoritative code + fields += (0 << 9); // Truncated code + fields += (1 << 8); // Recursion desired code + fields += (0 << 7); // Recursion available code + fields += (0 << 6); // Z reserved code + fields += (0 << 5); // Answers authenticated code + fields += (0 << 4); // Non-authenticated data code + if(bRRexists) + fields += 0; // Reply code + else + fields += 3; + put16bits(buffer, fields); + + put16bits(buffer, pQueryHeader.questionCount); // Questions count + if(bRRexists) + put16bits(buffer, 1); // Answers count + else + put16bits(buffer, 0); + put16bits(buffer, 0); // Authority RRs + put16bits(buffer, 0); // Additional RRs + + // create domain query section - copy original question format + codeDomain(buffer, pQueryQuestion.queryName); + put16bits(buffer, pQueryQuestion.queryType); + put16bits(buffer, pQueryQuestion.queryClass); + + // if requested domain exists in resourceRecords, create the answer + if(bRRexists){ + // compression code to pointing to original question - should be offset from ID to domain name (in number of 16bits) + put16bits(buffer, 49164); + + put16bits(buffer, pQueryQuestion.queryType); + put16bits(buffer, pQueryQuestion.queryClass); + put32bits(buffer, 0); // time to live + + put16bits(buffer, 4); // data length (always 4 for IPv4 addresses) + put8bits(buffer,resourceRecords[pQueryQuestion.queryName][0]); + put8bits(buffer,resourceRecords[pQueryQuestion.queryName][1]); + put8bits(buffer,resourceRecords[pQueryQuestion.queryName][2]); + put8bits(buffer,resourceRecords[pQueryQuestion.queryName][3]); + } + + int size = buffer - bufferBegin; + + return size; +} + +void Service::start() +{ + resourceRecords["www.cetic.be"].push_back(10); + resourceRecords["www.cetic.be"].push_back(0); + resourceRecords["www.cetic.be"].push_back(0); + resourceRecords["www.cetic.be"].push_back(5); + resourceRecords["cetic.be"].push_back(10); + resourceRecords["cetic.be"].push_back(0); + resourceRecords["cetic.be"].push_back(0); + resourceRecords["cetic.be"].push_back(5); + resourceRecords["internship.cetic.be"].push_back(10); + resourceRecords["internship.cetic.be"].push_back(0); + resourceRecords["internship.cetic.be"].push_back(0); + resourceRecords["internship.cetic.be"].push_back(5); + + // get the first network interfaces of the unikernel + auto& inet = Inet4::stack<0>(); + Expects(inet.is_configured()); + + printf("Service IP address is %s\n", inet.ip_addr().str().c_str()); + + const UDP::port_t port = SERVER_PORT; + auto& sock = inet.udp().bind(port); + + sock.on_read( + [&sock] (UDP::addr_t addr, UDP::port_t port, const char* data, size_t len){ + + pQueryHeader = decodeHeader(data, pQueryHeader); + data += HDR_OFFSET; + pQueryQuestion = decodeQuery(data, pQueryQuestion); + + // debug output + printf("####### INCOMMING REQUEST #######\n"); + printf("Getting UDP data from %s:%d\n", addr.str().c_str(), port); + printf("Header:\n"); + printf("\tID: %u\n",pQueryHeader.id); + printf("\tQuery: %u\n", pQueryHeader.query); + printf("\topCode: %u\n", pQueryHeader.opcode); + printf("\tAA: %u\n", pQueryHeader.aa); + printf("\tTruncation: %u\n", pQueryHeader.truncation); + printf("\tRecursion Desired: %u\n", pQueryHeader.recursionDesired); + printf("\tRecursion Available: %u\n", pQueryHeader.recursionAvailable); + printf("\tReponse Code: %u\n", pQueryHeader.responseCode); + printf("\tQuestion Count: %u\n", pQueryHeader.questionCount); + printf("\tAnswer Count: %u\n", pQueryHeader.answerCount); + printf("\tName Server Count: %u\n", pQueryHeader.nameServerCount); + printf("\tAdditional Resource Count: %u\n", pQueryHeader.additionalResourceCount); + printf("Query:\n"); + printf("\tQuery name: %s\n", pQueryQuestion.queryName.data()); + printf("\tQuery Type: %u\n", pQueryQuestion.queryType); + printf("\tAdditional Resource Count: %u\n", pQueryQuestion.queryClass); + printf("#################################\n"); + + // send reply + char buffer[BUFFER_SIZE]; + + int nbrBytes = processQuery(buffer, pQueryHeader, pQueryQuestion); + + sock.sendto(addr, port, buffer, nbrBytes); + }); + + INFO("DNS Server", "Listening on port %d\n", port); +} \ No newline at end of file diff --git a/SOURCE/UNIKERNEL/DNS/vm.json b/SOURCE/UNIKERNEL/DNS/vm.json new file mode 100644 index 0000000..fb4ef39 --- /dev/null +++ b/SOURCE/UNIKERNEL/DNS/vm.json @@ -0,0 +1,6 @@ +{ + "net" : [ + {"device" : "virtio", "mac" : "c0:01:0a:00:00:2a"}, + {"device" : "virtio", "mac" : "c0:01:0a:00:00:3a"} + ] +} diff --git a/SOURCE/UNIKERNEL/Firewall/CMakeLists.txt b/SOURCE/UNIKERNEL/Firewall/CMakeLists.txt new file mode 100644 index 0000000..447e885 --- /dev/null +++ b/SOURCE/UNIKERNEL/Firewall/CMakeLists.txt @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 2.8.9) + +# IncludeOS install location +if (NOT DEFINED ENV{INCLUDEOS_PREFIX}) + set(ENV{INCLUDEOS_PREFIX} /usr/local) +endif() +include($ENV{INCLUDEOS_PREFIX}/includeos/pre.service.cmake) +project (Firewall) + +# Human-readable name of your service +set(SERVICE_NAME "CETIC Firewall Service") + +# Name of your service binary +set(BINARY "Firewall") + +# Source files to be linked with OS library parts to form bootable image +set(SOURCES + service.cpp # ...add more here + ) + +# To add your own include paths: +# set(LOCAL_INCLUDES ".") + +# DRIVERS / PLUGINS: + +if ("$ENV{PLATFORM}" STREQUAL "x86_solo5") + set(DRIVERS + solo5net + ) +else() + set(DRIVERS + virtionet # Virtio networking + # virtioblock # Virtio block device + # ... Others from src/drivers + ) +endif() + +set(PLUGINS + ) + +# include service build script +include($ENV{INCLUDEOS_PREFIX}/includeos/post.service.cmake) diff --git a/SOURCE/UNIKERNEL/Firewall/cmake_build.sh b/SOURCE/UNIKERNEL/Firewall/cmake_build.sh new file mode 100644 index 0000000..529e821 --- /dev/null +++ b/SOURCE/UNIKERNEL/Firewall/cmake_build.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +mkdir -p build +pushd build +cmake .. +make +popd diff --git a/SOURCE/UNIKERNEL/Firewall/nacl.txt b/SOURCE/UNIKERNEL/Firewall/nacl.txt new file mode 100644 index 0000000..9d72159 --- /dev/null +++ b/SOURCE/UNIKERNEL/Firewall/nacl.txt @@ -0,0 +1,41 @@ +Iface outside { + address: 192.168.100.254, + netmask: 255.255.255.0, + index: 0 +} + +Iface inside { + address: 192.168.101.3, + netmask: 255.255.255.248, + gateway: 192.168.101.2, + index: 1 +} + +Gateway routing { + forward: firewallChain, + outside_route: { + net: 192.168.100.0, + netmask: 255.255.255.0, + iface: outside + }, + firewall_to_router_route: { + net: 192.168.101.0, + netmask: 255.255.255.248, + iface: inside + }, + inside_route: { + net: 10.0.0.0, + netmask: 255.255.255.0, + iface: inside + } +} + +Filter::IP firewallChain { + Filter::ICMP { + if (icmp.type == echo-request) { + log("Dropped ping from ", ip.saddr, " to ", ip.daddr, "\n") + drop + } + } + accept +} \ No newline at end of file diff --git a/SOURCE/UNIKERNEL/Firewall/service.cpp b/SOURCE/UNIKERNEL/Firewall/service.cpp new file mode 100644 index 0000000..7ddbdfb --- /dev/null +++ b/SOURCE/UNIKERNEL/Firewall/service.cpp @@ -0,0 +1,6 @@ +#include + +void Service::start() +{ + printf("IncludeOS firewall booted up"); +} diff --git a/SOURCE/UNIKERNEL/Firewall/vm.json b/SOURCE/UNIKERNEL/Firewall/vm.json new file mode 100644 index 0000000..fb4ef39 --- /dev/null +++ b/SOURCE/UNIKERNEL/Firewall/vm.json @@ -0,0 +1,6 @@ +{ + "net" : [ + {"device" : "virtio", "mac" : "c0:01:0a:00:00:2a"}, + {"device" : "virtio", "mac" : "c0:01:0a:00:00:3a"} + ] +} diff --git a/SOURCE/UNIKERNEL/Router/CMakeLists.txt b/SOURCE/UNIKERNEL/Router/CMakeLists.txt new file mode 100644 index 0000000..1c7103e --- /dev/null +++ b/SOURCE/UNIKERNEL/Router/CMakeLists.txt @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 2.8.9) + +# IncludeOS install location +if (NOT DEFINED ENV{INCLUDEOS_PREFIX}) + set(ENV{INCLUDEOS_PREFIX} /usr/local) +endif() +include($ENV{INCLUDEOS_PREFIX}/includeos/pre.service.cmake) +project (Router) + +# Human-readable name of your service +set(SERVICE_NAME "CETIC Router Service") + +# Name of your service binary +set(BINARY "Router") + +# Source files to be linked with OS library parts to form bootable image +set(SOURCES + service.cpp # ...add more here + ) + +# To add your own include paths: +# set(LOCAL_INCLUDES ".") + +# DRIVERS / PLUGINS: + +if ("$ENV{PLATFORM}" STREQUAL "x86_solo5") + set(DRIVERS + solo5net + ) +else() + set(DRIVERS + virtionet # Virtio networking + # virtioblock # Virtio block device + # ... Others from src/drivers + ) +endif() + +set(PLUGINS + ) + +# include service build script +include($ENV{INCLUDEOS_PREFIX}/includeos/post.service.cmake) diff --git a/SOURCE/UNIKERNEL/Router/cmake_build.sh b/SOURCE/UNIKERNEL/Router/cmake_build.sh new file mode 100644 index 0000000..529e821 --- /dev/null +++ b/SOURCE/UNIKERNEL/Router/cmake_build.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +mkdir -p build +pushd build +cmake .. +make +popd diff --git a/SOURCE/UNIKERNEL/Router/config.json b/SOURCE/UNIKERNEL/Router/config.json new file mode 100644 index 0000000..a2732d8 --- /dev/null +++ b/SOURCE/UNIKERNEL/Router/config.json @@ -0,0 +1,38 @@ +{ + "net" : [ + { + "iface": 0, + "config": "static", + "address": "10.0.0.254", + "netmask": "255.255.255.0", + "gateway": "10.0.0.254" + }, + { + "iface": 1, + "config": "static", + "address": "192.168.101.2", + "netmask": "255.255.255.248", + "gateway": "192.168.101.3" + } + + ], + "router" : [ + [ + { + "address": "10.0.0.0", + "netmask": "255.255.255.0", + "iface" : 0 + }, + { + "address": "192.168.101.0", + "netmask": "255.255.255.248", + "iface" : 1 + }, + { + "address": "0.0.0.0", + "netmask": "0.0.0.0", + "iface" : 1 + } + ] + ] +} diff --git a/SOURCE/UNIKERNEL/Router/service.cpp b/SOURCE/UNIKERNEL/Router/service.cpp new file mode 100644 index 0000000..6fe4f2d --- /dev/null +++ b/SOURCE/UNIKERNEL/Router/service.cpp @@ -0,0 +1,17 @@ +/* + * This code is copied from the IncludeOS Router example. + */ + +#include +#include + +void Service::start() +{ + auto& router = net::get_router(); + + auto& eth0 = net::Super_stack::get(0); + auto& eth1 = net::Super_stack::get(1); + + eth0.set_forward_delg(router.forward_delg()); + eth1.set_forward_delg(router.forward_delg()); +} diff --git a/SOURCE/UNIKERNEL/Router/vm.json b/SOURCE/UNIKERNEL/Router/vm.json new file mode 100644 index 0000000..fb4ef39 --- /dev/null +++ b/SOURCE/UNIKERNEL/Router/vm.json @@ -0,0 +1,6 @@ +{ + "net" : [ + {"device" : "virtio", "mac" : "c0:01:0a:00:00:2a"}, + {"device" : "virtio", "mac" : "c0:01:0a:00:00:3a"} + ] +} diff --git a/SOURCE/UNIKERNEL/WebServer/CMakeLists.txt b/SOURCE/UNIKERNEL/WebServer/CMakeLists.txt new file mode 100644 index 0000000..863ccce --- /dev/null +++ b/SOURCE/UNIKERNEL/WebServer/CMakeLists.txt @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 2.8.9) +if (NOT DEFINED ENV{INCLUDEOS_PREFIX}) + set(ENV{INCLUDEOS_PREFIX} /usr/local) +endif() +include($ENV{INCLUDEOS_PREFIX}/includeos/pre.service.cmake) + +project (WebServer) + +# Human-readable name of your service +set(SERVICE_NAME "CETIC Unikernel Web Server") + +# Name of your service binary +set(BINARY "WebServer") + +# Source files to be linked with OS library parts to form bootable image +set(SOURCES + service.cpp # ...add more here + ) + +# To add your own include paths: +# set(LOCAL_INCLUDES ".") + +# DRIVERS / PLUGINS: +set(DRIVERS + virtionet # Virtio networking + ) + +set(PLUGINS + autoconf + ) + +# STATIC LIBRARIES: +set(LIBRARIES + # path to full library + ) + + +# include service build script +include($ENV{INCLUDEOS_PREFIX}/includeos/post.service.cmake) + +# Create in-memory filesystem from folder +diskbuilder(disk) diff --git a/SOURCE/UNIKERNEL/WebServer/cmake_build.sh b/SOURCE/UNIKERNEL/WebServer/cmake_build.sh new file mode 100644 index 0000000..529e821 --- /dev/null +++ b/SOURCE/UNIKERNEL/WebServer/cmake_build.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +mkdir -p build +pushd build +cmake .. +make +popd diff --git a/SOURCE/UNIKERNEL/WebServer/config.json b/SOURCE/UNIKERNEL/WebServer/config.json new file mode 100644 index 0000000..443dc4e --- /dev/null +++ b/SOURCE/UNIKERNEL/WebServer/config.json @@ -0,0 +1,13 @@ +{ + "net": [ + { + "iface": 0, + "config": "static", + "address": "10.0.0.5", + "netmask": "255.255.255.0", + "gateway": "10.0.0.254" + } + ] +} + + diff --git a/SOURCE/UNIKERNEL/WebServer/disk/index.html b/SOURCE/UNIKERNEL/WebServer/disk/index.html new file mode 100644 index 0000000..c6c9b59 --- /dev/null +++ b/SOURCE/UNIKERNEL/WebServer/disk/index.html @@ -0,0 +1,15 @@ + + + + + CETIC Internship Unikernel Web Page + + + +

+ CETIC Internship Unikernel Web Page +

+
+

This is the first web server spawn from a unikernel during the CETIC Intership 2017-18

+ + diff --git a/SOURCE/UNIKERNEL/WebServer/service.cpp b/SOURCE/UNIKERNEL/WebServer/service.cpp new file mode 100644 index 0000000..50ea18b --- /dev/null +++ b/SOURCE/UNIKERNEL/WebServer/service.cpp @@ -0,0 +1,47 @@ +/* + * This code is adapted from the IncludeOS Acorn web server example. + */ + +#include +#include +#include +#include +std::unique_ptr server; + +void Service::start() +{ + // Retreive the stack (configured from outside) + auto& inet = net::Inet4::stack<0>(); + Expects(inet.is_configured()); + + // Init the memdisk + auto& disk = fs::memdisk(); + disk.init_fs([] (auto err, auto&) { + Expects(not err); + }); + // Retreive the HTML page from the disk + auto file = disk.fs().read_file("/index.html"); + Expects(file.is_valid()); + net::tcp::buffer_t html( + new std::vector (file.data(), file.data() + file.size())); + + // Create a HTTP Server and setup request handling + server = std::make_unique(inet.tcp()); + server->on_request([html] (auto req, auto rw) + { + // We only support get + if(req->method() != http::GET) { + rw->write_header(http::Not_Found); + return; + } + // Serve HTML on / + if(req->uri() == "/") { + rw->write(html); + } else { + rw->write_header(http::Not_Found); + } + }); + + // Start listening on port 80 + server->listen(80); +} diff --git a/SOURCE/UNIKERNEL/external.xml b/SOURCE/UNIKERNEL/external.xml new file mode 100644 index 0000000..bccc163 --- /dev/null +++ b/SOURCE/UNIKERNEL/external.xml @@ -0,0 +1,10 @@ + + external + + + + + + + + \ No newline at end of file diff --git a/SOURCE/UNIKERNEL/firewall.xml b/SOURCE/UNIKERNEL/firewall.xml new file mode 100644 index 0000000..c5e32d2 --- /dev/null +++ b/SOURCE/UNIKERNEL/firewall.xml @@ -0,0 +1,6 @@ + + firewall + + + + \ No newline at end of file diff --git a/SOURCE/UNIKERNEL/internal.xml b/SOURCE/UNIKERNEL/internal.xml new file mode 100644 index 0000000..d234fed --- /dev/null +++ b/SOURCE/UNIKERNEL/internal.xml @@ -0,0 +1,10 @@ + + internal + + + + + + + + \ No newline at end of file