
Willkommen beim Alps Scheduler Project. Unser innovativer Kernel-Scheduler ist entwickelt, um die Leistung von FAAS-Arbeitsbelastungen (Function-a-Service) zu verbessern, die für ihre ephereral, hochrangige und bursty Natur bekannt sind. Bestehende OS -Scheduler wie Linux CLOM FAIR FAIR SPAN (CFS) werden häufig nicht den einzigartigen Anforderungen serverloser Funktionen erfüllt, insbesondere diejenigen mit kurzer Ausführungszeit. Alps befasst sich mit dieser Herausforderung, indem sie die Prinzipien der kürzesten verbleibenden Prozesszeit (SRPT) mit dem robusten Rahmen für CFS annähern und eine dynamische, anwendungsbewusste OS-Planungslösung bereitstellen.
Für ATC'24 Artefact Review, um die Bemühungen der Gutachter zu sparen, empfehlen wir den Rezensenten dringend, unsere dedizierte Entwicklungsmaschine zu verwenden. Wir werden Unterstützung bieten, um sicherzustellen, dass Gutachter während des gesamten Artefakt -Review -Prozesses vollen Zugriff auf die Maschine haben.
Wir haben Alpen basierend auf Linux Kernel Version 5.18-RC5 implementiert. Sie müssen die Alpen auf dem Kernel kompilieren und ausführen. Wir empfehlen, den Kernel basierend auf Ubuntu 22.04 LTS zu bauen.
Die genaue Software zum Erstellen von Alpen wie folgt:
Darüber hinaus ändern und bieten wir exakte Software -Binärdateien für den FAAS -Service.
apt update -y
sudo apt install build-essential
gcc --version
Laden Sie das Go Language Binärarchiv herunter
wget https://go.dev/dl/go1.21.10.linux-amd64.tar.gz
sudo tar -xvf go1.12.linux-amd64.tar.gz
sudo mv go /usr/local
Setup Go -Umgebung, einschließlich GOROOT und GOPATH . Fügen Sie Umgebungsvariablen zum ~/.profile hinzu.
export GOROOT=/usr/local/go
mkdir $HOME/project
export GOPATH=$HOME/project
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
Überprüfen Sie die Installation
~$ go version
~$ go version go1.21.10 linux/amd64
Klon BPFTOOL -Repository und Erstellen der folgenden Installationsanweisung
git clone --recurse-submodules https://github.com/libbpf/bpftool.git
Schedtool nach APT installieren
sudo apt-get update -y
sudo apt-get install -y schedtool
Klonalps -Repository und Kopieren von Docker -Binärdateien in /usr/sbin
git clone https://github.com/fishercht1995/ALPS.git
cd docker_binaries
cp binary-client/* /usr/bin/
cp binary-daemon/* /usr/bin/
Bauen Sie das AL -Arbeiterbild auf
cd experiments && make imgs/lambda
Wir ändern OpenLambda, um das Alps -JSON -Konfigurationsschema zu unterstützen. Wir geben das ol -Binär und ein Beispiel für die Konfigurationsdatei bei experiments/ . Zusätzlich zur OL -Konfiguration kann der Benutzer die Funktionsmeta definieren, um die Planung im Kernel wie folgt zu unterscheiden:
"seal_priority": "Function UID",
"function_name" : "Function Name",
Starten Sie den Docker -Service
cd experiments && ./docker.sh
Führen Sie den Alpen Frontend Scheduler aus
cd frontend && python main.py
Alpen -Backend bauen und ausführen
mv LINUX_SOURCE /Linux
cd backend
make bpf && make alps
./alps.o
Führen Sie OpenLambda aus
cd experiments && ./ol worker --path={PATH}
Rufen Sie jetzt Ihre Lambda auf
curl -X POST http://localhost:5002/run/fib
-H "Content-Type: application/json"
-d '{"n":"30", "id":"20", "job":"fib"}'
Um die Leistung von Alps zu testen, bieten wir einige Helfer -Skripte, zunächst mehrere Funktionen an und löschen Sie:
cd experiments
./init_function.sh # init functions
./delete_function.sh # delete function workers
Dann starten Sie Frontend und Backend.
cd frontend && python3 main.py --alpha 1 --beta 1 --ml avg --exp_result ../experiments/seals
cd backend && ./alps.o
Senden Sie eine Benchmark -Anfrage vom HTTP -Client
go build run.go
cd http_client && ./test.sh
Der Frontend Scheduler bietet zwei Parameter zur Steuerung der Feinabstimmung der Richtlinien. Bis zuverlässig ist die Feinabstimmung der Richtlinien aktiviert
python3 main.py
Und Benutzer können Unvorhersehbarkeitsfonetuning und Überlastungsfonetuning deaktivieren
python3 main.py --unpred --overload
Benutzer können Richtlinienparameter steuern
python3 main.py --alpha 1 --beta 1 --theta 50 --gamma 1
Benutzer können auch Methoden für maschinelles Lernen ändern
python3 main.py --ml avg
python3 main.py --ml LR
Um verschiedene Trace -Workloads zu testen, ersetzen Sie die Workload -Datei (EXP) im Ordner http_client . Standardmäßig wird die Arbeitsbelastung von Huawei Trace generiert, und wir bieten eine von Azure erzeugte Workload (Azure) im selben Ordner an.