
Bienvenue dans Alps Scheduler Project. Notre planificateur de noyau innovant est conçu pour améliorer les performances des charges de travail Fonction-As-A-Service (FAAS), connues pour leur nature éphémère, très simultanée et rafale. Les planificateurs de système d'exploitation existants, tels que Linux complètement équitable (CFS), ne répondent souvent pas aux demandes uniques des fonctions sans serveur, en particulier celles qui ont un court temps d'exécution. ALPS relève ce défi en approximant les principes du plus court temps de processus restant (SRPT) avec le cadre robuste sur CFS, offrant une solution de planification de système d'exploitation dynamique et consciente de l'application.
Pour ATC'24 Artifact Review, pour sauver les efforts des critiques, nous recommandons fortement aux critiques d'utiliser notre machine de développement dédiée. Nous fournirons un soutien pour nous assurer que les examinateurs ont un accès complet à la machine tout au long du processus d'examen de l'artefact.
Nous avons implémenté des Alpes basées sur la version 5.18-RC5 du noyau Linux. Vous devez compiler et exécuter les Alpes sur le noyau. Nous vous recommandons de construire le noyau basé sur Ubuntu 22.04 LTS.
Le logiciel exact utilisé pour créer des Alpes comme suit:
De plus, nous modifions et fournissons des binaires de logiciels exacts pour exécuter le service FAAS.
apt update -y
sudo apt install build-essential
gcc --version
Téléchargez l'archive binaire de la langue go
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
Configurez l'environnement GO, y compris GOROOT et GOPATH . Ajoutez des variables d'environnement au ~/.profile .
export GOROOT=/usr/local/go
mkdir $HOME/project
export GOPATH=$HOME/project
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
Vérifiez l'installation
~$ go version
~$ go version go1.21.10 linux/amd64
Clone BPFTool Repository and Build suivant Instructions d'installation
git clone --recurse-submodules https://github.com/libbpf/bpftool.git
Installer Schedtool par apt
sudo apt-get update -y
sudo apt-get install -y schedtool
Clone Alps Repository et copier des binaires Docker vers /usr/sbin
git clone https://github.com/fishercht1995/ALPS.git
cd docker_binaries
cp binary-client/* /usr/bin/
cp binary-daemon/* /usr/bin/
Construisez l'image de l'employer
cd experiments && make imgs/lambda
Nous modifions OpenLambda pour prendre en charge le schéma de configuration JSON ALPS . Nous fournissons le binaire ol et un exemple de fichier de configuration aux experiments/ . En plus de la configuration OL, les Alpes permet à l'utilisateur de définir la méta de la fonction pour distinguer la planification dans le noyau comme suit:
"seal_priority": "Function UID",
"function_name" : "Function Name",
Démarrer le service Docker
cd experiments && ./docker.sh
Exécuter les Alpes Frontend Scheduler
cd frontend && python main.py
Construire et exécuter le backend Alpes
mv LINUX_SOURCE /Linux
cd backend
make bpf && make alps
./alps.o
Exécutez Openlambda
cd experiments && ./ol worker --path={PATH}
Maintenant, invoquez votre lambda
curl -X POST http://localhost:5002/run/fib
-H "Content-Type: application/json"
-d '{"n":"30", "id":"20", "job":"fib"}'
Pour tester les performances des Alpes , nous fournissons des scripts d'assistance, tout d'abord, démarrer et supprimer plusieurs fonctions:
cd experiments
./init_function.sh # init functions
./delete_function.sh # delete function workers
Ensuite, commencez le frontend et le backend.
cd frontend && python3 main.py --alpha 1 --beta 1 --ml avg --exp_result ../experiments/seals
cd backend && ./alps.o
Soumettre la demande de référence par le client HTTP
go build run.go
cd http_client && ./test.sh
Le planificateur Frontend propose deux paramètres pour contrôler le réglage de la politique. Par Defauly, le réglage fin de la politique est activé
python3 main.py
Et les utilisateurs peuvent désactiver l'imprévisibilité des finetunages et surcharger les finetuning par
python3 main.py --unpred --overload
Les utilisateurs peuvent contrôler les paramètres de politique
python3 main.py --alpha 1 --beta 1 --theta 50 --gamma 1
Les utilisateurs peuvent également modifier les méthodes d'apprentissage automatique par
python3 main.py --ml avg
python3 main.py --ml LR
Pour tester différentes charges de travail de trace, remplacez le fichier de charge de travail (EXP) dans le dossier http_client . Par défaut, la charge de travail est générée par Huawei Trace, et nous proposons une charge de travail générée par Azure (Azure) dans le même dossier.