
Alps Scheduler Project에 오신 것을 환영합니다. 당사의 혁신적인 커널 스케줄러는 Ephermeral, Hearthern, Bursty 특성으로 알려진 FAAS (Service as-A-Service) 워크로드의 성능을 향상 시키도록 설계되었습니다. Linux와 같은 기존 OS 스케줄러는 완전히 공정한 스케줄러 (CFS)는 종종 서버리스 기능의 고유 한 요구, 특히 단기 실행 시간이있는 요구를 충족시키지 못합니다. ALPS는 CFS의 강력한 프레임 워크와 함께 가장 짧은 남은 공정 시간 (SRPT)의 원리를 근사하여 동적 인 응용 프로그램 인식 OS 스케줄링 솔루션을 제공함으로써 이러한 과제를 해결합니다.
ATC'24 Artifact Review를 위해 리뷰어의 노력을 절약하기 위해 검토자가 전용 개발 기계를 사용하는 것이 좋습니다. 우리는 검토자가 아티팩트 검토 프로세스 전반에 걸쳐 기계에 완전히 액세스 할 수 있도록 지원을 제공 할 것입니다.
Linux 커널 버전 5.18-RC5를 기반으로 ALP를 구현했습니다. 커널에서 알프스를 컴파일하고 실행해야합니다. 우분투 22.04 LTS를 기반으로 커널을 구축하는 것이 좋습니다.
다음과 같이 알프스를 구축하는 데 사용되는 정확한 소프트웨어 :
또한 FAAS 서비스를 실행하기 위해 정확한 소프트웨어 바이너리를 수정하고 제공합니다.
apt update -y
sudo apt install build-essential
gcc --version
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
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
클론 알프스 저장소 및 Docker Binaries를 /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 이미지를 구축하십시오
cd experiments && make imgs/lambda
Alps JSON 구성 스키마를 지원하기 위해 OpenLambda를 수정합니다. experiments/ 에서 ol 바이너리와 구성 파일의 예제를 제공합니다. ALPS는 OL 구성 외에도 기능 메타를 정의하여 커널의 스케줄링을 다음과 같이 구별 할 수 있습니다.
"seal_priority": "Function UID",
"function_name" : "Function Name",
Docker Service를 시작하십시오
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"}'
Alps 의 성능을 테스트하기 위해 일부 도우미 스크립트를 제공합니다. 먼저 여러 기능을 시작하고 삭제합니다.
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)을 교체하십시오. 기본적으로 워크로드는 Huawei Trace에 의해 생성되며 동일한 폴더에서 Azure 생성 워크로드 (Azure)를 제공합니다.