
Добро пожаловать в проект Alps Scheduler. Наш инновационный планировщик ядра предназначен для повышения производительности рабочих нагрузок функции как услуги (FAAS), которые известны своей эфмеральной, очень одновременной и взрывающейся природой. Существующие планировщики ОС, такие как Linux, полностью справедливый планировщик (CFS), часто не соответствуют уникальным требованиям функций без серверов, особенно с коротким временем выполнения. ALPS решает эту проблему путем аппроксимации принципов кратчайшего оставшегося времени процесса (SRPT) с надежной структурой на CFS, предоставляя динамическое решение для планирования ОС.
Для обзора артефакта ATC'24, чтобы сохранить усилия рецензентов, мы настоятельно рекомендуем рецензентам использовать нашу специальную машину для разработки. Мы предоставим поддержку, чтобы убедиться, что рецензенты имеют полный доступ к машине на протяжении всего процесса обзора артефактов.
Мы реализовали Альпы на основе ядра Linux 5.18-RC5. Вы должны скомпилировать и запустить Альпы на ядре. Мы рекомендуем построить ядро на основе Ubuntu 22.04 LTS.
Точное программное обеспечение, используемое для создания Альп следующим образом:
Кроме того, мы модифицируем и предоставляем точные двоичные файлы с программным обеспечением для запуска обслуживания FAAS.
apt update -y
sudo apt install build-essential
gcc --version
Скачать бинарный архив языка 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
Среда настройки GO, включая GOROOT и GOPATH . Добавить переменные среды в ~/.profile .
export GOROOT=/usr/local/go
mkdir $HOME/project
export GOPATH=$HOME/project
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
Проверьте установку
~$ go version
~$ go version go1.21.10 linux/amd64
Клон репозиторий BPFTool и строительство следующей инструкции по установке
git clone --recurse-submodules https://github.com/libbpf/bpftool.git
Установите Schedtool на Apt
sudo apt-get update -y
sudo apt-get install -y schedtool
Репозиторий клонов Альп и копировать бинарные файлы докера в /usr/sbin
git clone https://github.com/fishercht1995/ALPS.git
cd docker_binaries
cp binary-client/* /usr/bin/
cp binary-daemon/* /usr/bin/
Построить OL Worker Image
cd experiments && make imgs/lambda
Мы изменяем OpenLambda для поддержки схемы конфигурации ALPS JSON. Мы предоставляем ol Binary и пример файла конфигурации в experiments/ . В дополнение к конфигурации OL, ALPS позволяет пользователю определять Meta Function для различения планирования в ядре следующим образом:
"seal_priority": "Function UID",
"function_name" : "Function Name",
Начать сервис Docker
cd experiments && ./docker.sh
Запустить планировщик Альп -фронта
cd frontend && python main.py
Создать и запустить бэкэнд Альп
mv LINUX_SOURCE /Linux
cd backend
make bpf && make alps
./alps.o
Запустить OpenLambda
cd experiments && ./ol worker --path={PATH}
Теперь вызвать свою лямбду
curl -X POST http://localhost:5002/run/fib
-H "Content-Type: application/json"
-d '{"n":"30", "id":"20", "job":"fib"}'
Чтобы проверить производительность Альп , мы предоставляем несколько вспомогательных сценариев, во -первых, запустить и удалять несколько функций:
cd experiments
./init_function.sh # init functions
./delete_function.sh # delete function workers
Затем запустите Frontend и Backend.
cd frontend && python3 main.py --alpha 1 --beta 1 --ml avg --exp_result ../experiments/seals
cd backend && ./alps.o
Отправить контрольный запрос HTTP Client
go build run.go
cd http_client && ./test.sh
Планировщик Frontend предлагает два параметра для управления точной настройкой политики. По Defaulual
python3 main.py
И пользователи могут отключить непредсказуемость, и перегружать и перегружать.
python3 main.py --unpred --overload
Пользователи могут управлять параметрами политики
python3 main.py --alpha 1 --beta 1 --theta 50 --gamma 1
Пользователи также могут изменить методы машинного обучения
python3 main.py --ml avg
python3 main.py --ml LR
Чтобы проверить различные рабочие нагрузки трассировки, замените файл рабочей нагрузки (EXP) в папке HTTP_CLIent . По умолчанию рабочая нагрузка генерируется Huawei Trace, и мы предлагаем рабочую нагрузку, сгенерированную Azure (Azure) в той же папке.