
Selamat datang di Proyek Penjadwal Alps. Penjadwal kernel inovatif kami dirancang untuk meningkatkan kinerja beban kerja fungsi-sebagai-layanan (FAAS), yang dikenal dengan sifatnya yang lebih jauh, sangat bersamaan, dan murni. Penjadwal OS yang ada, seperti Linux benar -benar adil (CFS), sering gagal memenuhi tuntutan unik fungsi tanpa server, terutama yang memiliki waktu eksekusi yang singkat. Alps membahas tantangan ini dengan mendekati prinsip-prinsip waktu proses tersisa (SRPT) dengan kerangka kerja yang kuat pada CFS, memberikan solusi penjadwalan OS yang dinamis dan sadar aplikasi.
Untuk ATC'24 Artefact Review, untuk menghemat upaya pengulas, kami sangat menyarankan agar pengulas menggunakan mesin pengembangan khusus kami. Kami akan memberikan dukungan untuk memastikan bahwa pengulas memiliki akses penuh ke mesin selama proses peninjauan artefak.
Kami telah mengimplementasikan Alpen berdasarkan Linux Kernel Versi 5.18-RC5. Anda harus mengkompilasi dan menjalankan Pegunungan Alpen di kernel. Kami merekomendasikan membangun kernel berdasarkan Ubuntu 22.04 lts.
Perangkat lunak yang tepat yang digunakan untuk membangun Alpen sebagai berikut:
Selain itu, kami memodifikasi dan menyediakan binari softwares yang tepat untuk menjalankan layanan FAAS.
apt update -y
sudo apt install build-essential
gcc --version
Unduh arsip biner bahasa 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
Lingkungan Pengaturan GO, termasuk GOROOT dan GOPATH . Tambahkan variabel lingkungan ke ~/.profile .
export GOROOT=/usr/local/go
mkdir $HOME/project
export GOPATH=$HOME/project
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
Verifikasi instalasi
~$ go version
~$ go version go1.21.10 linux/amd64
Klon BPFTOOL Repositori dan Bangun Instruksi Instalasi berikut
git clone --recurse-submodules https://github.com/libbpf/bpftool.git
Instal SCRETTOOL oleh Apt
sudo apt-get update -y
sudo apt-get install -y schedtool
Klone Alps Repository dan Copy Docker Binaries ke /usr/sbin
git clone https://github.com/fishercht1995/ALPS.git
cd docker_binaries
cp binary-client/* /usr/bin/
cp binary-daemon/* /usr/bin/
Bangun gambar pekerja
cd experiments && make imgs/lambda
Kami memodifikasi OpenLambda untuk mendukung skema konfigurasi ALPS JSON. Kami menyediakan biner ol dan contoh file konfigurasi di experiments/ . Selain konfigurasi OL, ALPS memungkinkan pengguna untuk mendefinisikan meta fungsi untuk membedakan penjadwalan dalam kernel sebagai berikut:
"seal_priority": "Function UID",
"function_name" : "Function Name",
Mulai Layanan Docker
cd experiments && ./docker.sh
Jalankan Penjadwal Frontend Alps
cd frontend && python main.py
Bangun dan Jalankan Backend Pegunungan Alpen
mv LINUX_SOURCE /Linux
cd backend
make bpf && make alps
./alps.o
Jalankan OpenLambda
cd experiments && ./ol worker --path={PATH}
Sekarang memohon lambda Anda
curl -X POST http://localhost:5002/run/fib
-H "Content-Type: application/json"
-d '{"n":"30", "id":"20", "job":"fib"}'
Untuk menguji kinerja Pegunungan Alpen , kami menyediakan beberapa skrip penolong, pertama, mulai dan hapus banyak fungsi:
cd experiments
./init_function.sh # init functions
./delete_function.sh # delete function workers
Kemudian mulailah Frontend dan Backend.
cd frontend && python3 main.py --alpha 1 --beta 1 --ml avg --exp_result ../experiments/seals
cd backend && ./alps.o
Kirimkan Permintaan Benchmark oleh HTTP Client
go build run.go
cd http_client && ./test.sh
Penjadwal Frontend menawarkan dua parameter untuk mengontrol penyempurnaan kebijakan. Secara pasti, penyesuaian kebijakan diaktifkan
python3 main.py
Dan pengguna dapat menonaktifkan finetuning dan kelebihan yang tidak dapat diprediksi
python3 main.py --unpred --overload
Pengguna dapat mengontrol parameter kebijakan
python3 main.py --alpha 1 --beta 1 --theta 50 --gamma 1
Pengguna juga dapat mengubah metode pembelajaran mesin dengan
python3 main.py --ml avg
python3 main.py --ml LR
Untuk menguji berbagai pelacakan beban kerja, ganti file beban kerja (exp) di folder http_client . Secara default, beban kerja dihasilkan oleh Huawei Trace, dan kami menawarkan beban kerja yang dihasilkan Azure (Azure) di folder yang sama.