
Bem -vindo ao Projeto Alegrama Alps. Nosso inovador agendador de kernel foi projetado para melhorar o desempenho das cargas de trabalho da função como serviço (FAAs), conhecidas por sua natureza eférmeral, altamente concorrente e rancorada. Os agendadores do sistema operacional existentes, como o Linux completamente justo (CFS), geralmente não atendem às demandas exclusivas de funções sem servidor, particularmente aquelas com curto tempo de execução. O ALPS aborda esse desafio, aproximando os princípios do tempo restante do processo restante (SRPT) com a estrutura robusta do CFS, fornecendo uma solução dinâmica de programação do sistema operacional com reconhecimento de aplicativos.
Para a revisão de artefatos ATC'24, para salvar o esforço dos revisores, recomendamos fortemente que os revisores usem nossa máquina de desenvolvimento dedicada. Forneceremos suporte para garantir que os revisores tenham acesso total à máquina em todo o processo de revisão do artefato.
Implementamos os ALPs com base no kernel Linux versão 5.18-rc5. Você deve compilar e executar os Alpes no kernel. Recomendamos construir o kernel com base no Ubuntu 22.04 LTS.
O software exato usado para construir Alpes da seguinte maneira:
Além disso, modificamos e fornecemos binários de softwares exatos para executar o serviço FAAS.
apt update -y
sudo apt install build-essential
gcc --version
Baixe o Arquivo Binário da Linguagem 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
Configurar o ambiente Go, incluindo GOROOT e GOPATH . Adicione variáveis de ambiente ao ~/.profile .
export GOROOT=/usr/local/go
mkdir $HOME/project
export GOPATH=$HOME/project
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
Verifique a instalação
~$ go version
~$ go version go1.21.10 linux/amd64
CLONE BPFTOOL Repository e construir a seguinte instrução de instalação
git clone --recurse-submodules https://github.com/libbpf/bpftool.git
Instale o Schedtool por apt
sudo apt-get update -y
sudo apt-get install -y schedtool
CLONE ALPS repositório e copiar binários do docker para /usr/sbin
git clone https://github.com/fishercht1995/ALPS.git
cd docker_binaries
cp binary-client/* /usr/bin/
cp binary-daemon/* /usr/bin/
Construir a imagem do trabalhador
cd experiments && make imgs/lambda
Modificamos o OpenLambda para suportar o esquema de configuração do JSON ALPS . Fornecemos o ol binário e um exemplo de arquivo de configuração em experiments/ . Além da configuração do OL, os ALPs permitem que o usuário defina a meta da função para distinguir a programação no kernel da seguinte maneira:
"seal_priority": "Function UID",
"function_name" : "Function Name",
Inicie o serviço do Docker
cd experiments && ./docker.sh
Executar o Alenamento de Frontend Alps
cd frontend && python main.py
Construa e execute o back -end dos Alpes
mv LINUX_SOURCE /Linux
cd backend
make bpf && make alps
./alps.o
Execute o OpenLambda
cd experiments && ./ol worker --path={PATH}
Agora invoco seu lambda
curl -X POST http://localhost:5002/run/fib
-H "Content-Type: application/json"
-d '{"n":"30", "id":"20", "job":"fib"}'
Para testar o desempenho dos ALPs , fornecemos alguns scripts auxiliares, primeiro, inicia e excluímos várias funções:
cd experiments
./init_function.sh # init functions
./delete_function.sh # delete function workers
Em seguida, inicie o front -end e o back -end.
cd frontend && python3 main.py --alpha 1 --beta 1 --ml avg --exp_result ../experiments/seals
cd backend && ./alps.o
Enviar solicitação de benchmark pelo cliente HTTP
go build run.go
cd http_client && ./test.sh
O Agendador de Frontend oferece dois parâmetros para controlar o ajuste fino da política. Por prefeitura, o ajuste fino da política é ativado
python3 main.py
E os usuários podem desativar a finseneamento e sobrecarregar a finsetuning por
python3 main.py --unpred --overload
Os usuários podem controlar os parâmetros da política
python3 main.py --alpha 1 --beta 1 --theta 50 --gamma 1
Os usuários também podem alterar os métodos de aprendizado de máquina por
python3 main.py --ml avg
python3 main.py --ml LR
Para testar diferentes cargas de trabalho de rastreamento, substitua o arquivo de carga de trabalho (exp) na pasta http_client . Por padrão, a carga de trabalho é gerada pelo Huawei Trace e oferecemos uma carga de trabalho gerada pelo Azure (Azure) na mesma pasta.