Releases: johannes-manner/SeMoDe
A Simulation Framework for Function as a Service
This is the final code release for the PhD project on "A Simulation Framework for Function as a Service".
Supporting material for generating plots, tables, diagrams etc. are archived at Zenodo, 10.5281/zenodo.7447912
Resource Scaling Strategies for Open-Source FaaS Platforms compared to Commercial Cloud Offerings
This is a snapshot of the source code used for generating the experimental data presented in the paper of the same name.
Furthermore, we document the installation of OpenFaaS on a single node deployed on K3s, a lightweight K8s distribution.
Installation of OpenFaaS:
- Install Docker on your machine
- Install K3s
curl -sfL https://get.k3s.io/ | sh -
Update K8s configuration and store it in the default directory:
sudo kubectl config view --raw > ~/.kube/config
Change the permissions of the rancher yaml, otherwise you will get an error on some machine, follow also this guide here.
sudo chmod 744 /etc/rancher/k3s/k3s.yaml
- Install OpenFaaS
export TIMEOUT=2h
arkade install openfaas \
--set gateway.upstreamTimeout=$TIMEOUT \
--set gateway.writeTimeout=$TIMEOUT \
--set gateway.readTimeout=$TIMEOUT \
--set faasnetes.writeTimeout=$TIMEOUT \
--set faasnetes.readTimeout=$TIMEOUT \
--set queueWorker.ackWait=$TIMEOUT
Rollout of the gateway and port-forwarding
kubectl rollout status -n openfaas deploy/gateway
kubectl port-forward -n openfaas svc/gateway 8080:8080 &
Store the credentials within the current bash session.
PASSWORD=$(kubectl get secret -n openfaas basic-auth -o jsonpath="{.data.basic-auth-password}" | base64 --decode; echo)
echo -n $PASSWORD | faas-cli login --username admin --password-stdin
Uninstall OpenFaaS
Using helm therfore: https://artifacthub.io/packages/helm/openfaas/openfaas/6.0.2
helm delete openfaas --namespace openfaas
kubectl delete namespace openfaas openfaas-fn
kill $(fuser 8080/tcp)
/usr/local/bin/k3s-uninstall.sh
An update of the technical report which includes the new OpenFaaS functionalities will also follow.
We executed the benchmarks locally on the machine via bash scripts since the timeouts of the system made trouble (an undeployment of a function on OpenFaaS was only possible after the specified timeout. Therefore we configured the function accordingly and used bash scripts to execute the functions and log the infos in text files. For the integration into our research prototype, we implemented a small web service to transfer the experiment data to the research prototype - more information can be found in the update technical report.
If you have any questions regarding the integration of SeMoDe with the OpenFaaS experiment data, feel free to contact me.
v1.1 - TechRep release
Added some features the last weeks to the research prototype when conducting the SLR mentioned in the technical report.
SLR and technical report are attached to this version.
V1.0
This is the first production-ready release and contains the source code and features described in the technical report following in the next weeks.
Why a lot of Benchmarks might be Compromised
Enables an independent calibration of your hardware via LINPACK benchmark functionality.
Optimizing Cloud Function Configuration via Local Simulations
This release tackles the simulation options presented in our research roadmap.
All data and scripts are included to reproduce the experiments.
dataAndR.zip
aws-java-prime.zip
aws-js-fibonacci.zip
fibonacci-local.zip
linpack-calibration.zip
Impact of Application Load in Function as a Service
The input files and parameters (readme.md) to reproduce the experiment mentioned in the paper.
Cold Start Influencing Factors in Function as a Service (v0.1)
Scope
This release includes the source code of our utitlity on the time of performing the experiments and the data extraction. It inlcudes the data for a paper accepted at the 4th Workshop on Serverless Computing (WoSC)
https://www.serverlesscomputing.org/wosc4/. It also includes the R script to reproduce the box plots and also to play around with our collected data.