
Bienvenido al Proyecto Alps Scheduler. Nuestro innovador planificador del núcleo está diseñado para mejorar el rendimiento de las cargas de trabajo de la función como servicio (FAAS), que son conocidas por su naturaleza efermental, altamente concurrente y estallada. Los programadores del sistema operativo existentes, como Linux Complett Scheduler (CFS), a menudo no cumplen con las demandas únicas de las funciones sin servidor, particularmente aquellas con un tiempo de ejecución corto. ALPS aborda este desafío al aproximar los principios del tiempo de proceso restante más corto (SRPT) con el marco robusto en CFS, entregando una solución dinámica de programación del sistema operativo.
Para la revisión de artefactos ATC'24, para ahorrar el esfuerzo de los revisores, recomendamos encarecidamente que los revisores usen nuestra máquina de desarrollo dedicada. Brindaremos soporte para garantizar que los revisores tengan acceso completo a la máquina durante todo el proceso de revisión de artefactos.
Hemos implementado Alpes basados en Linux Kernel Versión 5.18-RC5. Debe compilar y ejecutar los Alpes en el núcleo. Recomendamos construir el núcleo basado en Ubuntu 22.04 LTS.
El software exacto utilizado para construir Alpes de la siguiente manera:
Además, modificamos y proporcionamos binarios de software exactos para ejecutar el servicio FAAS.
apt update -y
sudo apt install build-essential
gcc --version
Descargar el archivo binario de idiomas 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
Configuración de entorno GO, incluidos GOROOT y GOPATH . Agregue las variables de entorno al ~/.profile .
export GOROOT=/usr/local/go
mkdir $HOME/project
export GOPATH=$HOME/project
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
Verificar la instalación
~$ go version
~$ go version go1.21.10 linux/amd64
Repositorio y compilación de Clone Bpftool después de la instrucción de instalación
git clone --recurse-submodules https://github.com/libbpf/bpftool.git
Instalar schedtool por apt
sudo apt-get update -y
sudo apt-get install -y schedtool
Repositorio de Alpes Clon y copiar binarios de Docker a /usr/sbin
git clone https://github.com/fishercht1995/ALPS.git
cd docker_binaries
cp binary-client/* /usr/bin/
cp binary-daemon/* /usr/bin/
Construir una imagen de trabajador
cd experiments && make imgs/lambda
Modificamos OpenLambda para admitir el esquema de configuración ALPS JSON. Proporcionamos el Binario ol y un ejemplo de archivo de configuración en experiments/ . Además de la configuración de OL, Alps permite al usuario definir meta de funciones para distinguir la programación en el núcleo de la siguiente manera:
"seal_priority": "Function UID",
"function_name" : "Function Name",
Iniciar servicio Docker
cd experiments && ./docker.sh
Ejecutar el planificador de frontend de los Alpes
cd frontend && python main.py
Construir y ejecutar el backend de los Alpes
mv LINUX_SOURCE /Linux
cd backend
make bpf && make alps
./alps.o
Ejecutar OpenLambda
cd experiments && ./ol worker --path={PATH}
Ahora invoca tu lambda
curl -X POST http://localhost:5002/run/fib
-H "Content-Type: application/json"
-d '{"n":"30", "id":"20", "job":"fib"}'
Para probar el rendimiento de los Alpes , proporcionamos algunos scripts de ayuda, en primer lugar, iniciar y eliminar múltiples funciones:
cd experiments
./init_function.sh # init functions
./delete_function.sh # delete function workers
Luego comience a Frontend y Backend.
cd frontend && python3 main.py --alpha 1 --beta 1 --ml avg --exp_result ../experiments/seals
cd backend && ./alps.o
Envíe la solicitud de referencia del cliente HTTP
go build run.go
cd http_client && ./test.sh
El planificador de frontend ofrece dos parámetros para controlar la política ajustada. Por defauly, el ajuste de la política se habilita
python3 main.py
Y los usuarios pueden deshabilitar la imprevisibilidad de los finecirios y la sobrecarga de finecing por
python3 main.py --unpred --overload
Los usuarios pueden controlar los parámetros de política
python3 main.py --alpha 1 --beta 1 --theta 50 --gamma 1
Los usuarios también pueden cambiar los métodos de aprendizaje automático por
python3 main.py --ml avg
python3 main.py --ml LR
Para probar diferentes cargas de trabajo, reemplace el archivo de carga de trabajo (EXP) en la carpeta http_client . Por defecto, la carga de trabajo es generada por Huawei Trace, y ofrecemos una carga de trabajo generada por Azure (Azure) en la misma carpeta.