
歡迎使用阿爾卑斯山計劃項目。我們的創新內核調度程序旨在增強功能 - 服務(FAAS)工作負載的性能,這些功能以其拼寫,高度並發和爆發性質而聞名。現有的OS調度程序(例如Linux完全公平的調度程序(CFS))通常無法滿足無服務器功能的獨特需求,尤其是那些執行時間較短的功能。阿爾卑斯山通過使用CFS上的穩健框架近似剩餘過程時間(SRPT)的原理來解決這一挑戰,並提供動態的,應用吸引的OS調度解決方案。
對於ATC'24 Artifact評論,為了節省審閱者的努力,我們強烈建議審稿人使用我們專用的開發機器。我們將提供支持,以確保審閱者在整個工件審核過程中都可以完全訪問機器。
我們已經基於Linux內核版本5.18-RC5實現了ALP。您必須在內核上編譯並運行阿爾卑斯山。我們建議基於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 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
APT安裝Schedtool
sudo apt-get update -y
sudo apt-get install -y schedtool
克隆阿爾卑斯座存儲庫,並將Docker二進製文件複製到/usr/sbin
git clone https://github.com/fishercht1995/ALPS.git
cd docker_binaries
cp binary-client/* /usr/bin/
cp binary-daemon/* /usr/bin/
建立工人形象
cd experiments && make imgs/lambda
我們修改OpenLambda以支持Alps JSON配置模式。我們提供ol二進製文件和experiments/中的配置文件的示例。除了OL配置外,阿爾卑斯山還允許用戶定義函數meta以區分內核中的調度如下:
"seal_priority": "Function UID",
"function_name" : "Function Name",
啟動Docker服務
cd experiments && ./docker.sh
運行Alps前端調度程序
cd frontend && python main.py
構建和運行阿爾卑斯山後端
mv LINUX_SOURCE /Linux
cd backend
make bpf && make alps
./alps.o
運行Openlambda
cd experiments && ./ol worker --path={PATH}
現在調用你的lambda
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
然後開始前端和後端。
cd frontend && python3 main.py --alpha 1 --beta 1 --ml avg --exp_result ../experiments/seals
cd backend && ./alps.o
提交HTTP客戶端的基準請求
go build run.go
cd http_client && ./test.sh
前端調度程序提供兩個參數來控制策略微調。在授予政策微調的情況下啟用了
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
要測試不同的跟踪工作負載,請在HTTP_CLIENT文件夾中替換工作量文件(EXP)。默認情況下,工作負載是由華為跟踪生成的,我們在同一文件夾中提供了Azure生成的工作負載(Azure)。