
ยินดีต้อนรับสู่โครงการ Alps Scheduler Kernel Scheduler นวัตกรรมของเราได้รับการออกแบบมาเพื่อเพิ่มประสิทธิภาพการทำงานของเวิร์กโหลดฟังก์ชั่น-AS-A-Service (FAAS) ซึ่งเป็นที่รู้จักกันดีในเรื่องธรรมชาติที่เกิดขึ้นพร้อมกันและธรรมชาติ ตัวกำหนดเวลาระบบปฏิบัติการที่มีอยู่เช่น Linux Fair Scheduler (CFS) อย่างสมบูรณ์มักจะล้มเหลวในการตอบสนองความต้องการที่ไม่ซ้ำกันของฟังก์ชั่นที่ไม่มีเซิร์ฟเวอร์โดยเฉพาะอย่างยิ่งผู้ที่มีเวลาดำเนินการสั้น ๆ ALPS จัดการกับความท้าทายนี้โดยการประมาณหลักการของเวลากระบวนการที่เหลืออยู่ที่สั้นที่สุด (SRPT) ด้วยกรอบการทำงานที่แข็งแกร่งบน CFS ส่งโซลูชันการกำหนดเวลาระบบปฏิบัติการที่รับรู้แอปพลิเคชันแบบไดนามิก
สำหรับการทบทวน ATC'24 Artifact เพื่อประหยัดความพยายามของผู้ตรวจสอบเราขอแนะนำอย่างยิ่งให้ผู้ตรวจสอบใช้เครื่องพัฒนาโดยเฉพาะของเรา เราจะให้การสนับสนุนเพื่อให้แน่ใจว่าผู้ตรวจสอบสามารถเข้าถึงเครื่องได้อย่างเต็มที่ตลอดกระบวนการตรวจสอบสิ่งประดิษฐ์
เราได้ใช้งาน ALPS ตาม Linux Kernel เวอร์ชัน 5.18-RC5 คุณต้องรวบรวมและเรียกใช้ เทือกเขาแอลป์ บนเคอร์เนล เราขอแนะนำให้สร้างเคอร์เนลตาม Ubuntu 22.04 LTS
ซอฟต์แวร์ที่แน่นอนที่ใช้ในการสร้าง เทือกเขาแอลป์ ดังนี้:
นอกจากนี้เราแก้ไขและให้บริการไบนารีซอฟต์แวร์ที่แน่นอนเพื่อเรียกใช้บริการ FAAS
apt update -y
sudo apt install build-essential
gcc --version
ดาวน์โหลด The Go Language Binary Archive
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
โคลน Alps Repository และคัดลอก Binaries Docker ไปยัง /usr/sbin
git clone https://github.com/fishercht1995/ALPS.git
cd docker_binaries
cp binary-client/* /usr/bin/
cp binary-daemon/* /usr/bin/
สร้างภาพคนงาน ol
cd experiments && make imgs/lambda
เราแก้ไข OpenLambda เพื่อรองรับ Schema การกำหนดค่า ALPS JSON เราให้บริการไบนารี ol และตัวอย่างของไฟล์การกำหนดค่าที่ experiments/ นอกเหนือจากการกำหนดค่า OL แล้ว ALPs ยังอนุญาตให้ผู้ใช้กำหนดฟังก์ชั่น meta เพื่อแยกความแตกต่างการกำหนดเวลาในเคอร์เนลดังต่อไปนี้:
"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
จากนั้นเริ่มต้นส่วนหน้าและแบ็กเอนด์
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
ตัวกำหนดเวลาส่วนหน้าเสนอพารามิเตอร์สองพารามิเตอร์เพื่อควบคุมการปรับแต่งนโยบาย โดย defauly เปิดใช้งานการปรับแต่งนโยบาย
python3 main.py
และผู้ใช้สามารถปิดการใช้งาน finetuning ที่คาดเดาไม่ได้และ overload finetuning โดย
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) ในโฟลเดอร์เดียวกัน