FaaSdom
收藏资源简介:
FaaSdom是由瑞士弗里堡大学计算机科学系开发的基准测试套件,专注于无服务器计算平台。该套件支持主流云服务提供商,如AWS、Azure、Google和IBM,并提供广泛的测试和多种编程语言。FaaSdom自动化部署、执行和清理测试,为无服务器应用提供性能洞察。此外,它还集成了一个模型来估计跨支持提供商的部署预算成本。FaaSdom的应用领域包括帮助开发者选择最适合其应用的云服务提供商,以优化性能、可靠性和成本。
FaaSdom is a benchmarking suite developed by the Department of Computer Science, University of Fribourg, Switzerland, focusing on serverless computing platforms. It supports major cloud service providers such as AWS, Azure, Google and IBM, and offers extensive testing capabilities along with support for multiple programming languages. FaaSdom automates the deployment, execution and cleanup of tests, providing performance insights for serverless applications. Additionally, it integrates a model for estimating deployment budget costs across the supported providers. The application domains of FaaSdom include assisting developers in selecting the most suitable cloud service provider for their applications to optimize performance, reliability and costs.
无服务器计算基准测试套件
概述
该工具使用 Node.js 编写,用于对以下云服务提供商的无服务器平台进行基准测试:
- Amazon Web Services 的 AWS Lambda
- Microsoft Azure 的 Azure Functions
- Google Cloud 的 Google Cloud Functions
- IBM Cloud 的 IBM Cloud Functions
支持的编程语言包括:
可用测试
- 延迟测试: 测量一个非常简单的函数的延迟。
- CPU 测试(因子): 通过迭代计算一个数的因子来基准测试 CPU 性能。
- CPU 测试(矩阵): 通过迭代乘以两个 NxN 矩阵来基准测试 CPU 性能。
- 文件系统测试: 将一个 x kB 的文本文件写入和读取 n 次到文件系统。
- 自定义测试: 实现你自己的测试,提供模板。
安装
对于 Ubuntu 18.04,可以执行以下步骤:
bash sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" sudo apt-get update sudo apt-get install docker-ce docker-compose
将你的用户添加到 docker 组(如果不想总是使用 sudo 运行)
sudo groupadd docker sudo usermod -aG docker $USER
配置
对于每个云服务提供商,你需要创建一个账户并进行一些设置:
- AWS: Amazon Web Services Setup.md
- Azure: Microsoft Azure Setup.md
- Google: Google Cloud Setup.md
- IBM: IBM Cloud Setup.md
还需要创建一些 Docker 卷并登录到云 CLI,以便在 Docker 容器中使用。
bash
创建 5 个卷,1 个用于应用数据,4 个用于每个云的密钥
docker volume create serverless-data docker volume create aws-secrets docker volume create google-secrets docker volume create ibm-secrets docker volume create azure-secrets
将所有数据复制到 Docker 卷(重要:从项目根目录运行!)
docker run -v serverless-data:/data --name helper bschitter/alpine-with-zip:0.1 docker cp . helper:/data docker rm helper
挂载卷并使用云服务提供商登录
docker run --rm -tiv aws-secrets:/root/.aws mikesir87/aws-cli:1.16.310 aws configure docker run --rm -tiv azure-secrets:/root/.azure mcr.microsoft.com/azure-cli:2.0.78 az login docker run --rm -tiv google-secrets:/root/.config/gcloud google/cloud-sdk:274.0.1-alpine gcloud init docker run --rm -tiv ibm-secrets:/root/.bluemix ibmcom/ibm-cloud-developer-tools-amd64:0.20.0 ibmcloud login
对于 IBM,还需要设置区域、API 端点、组织和空间
docker run --rm -tiv ibm-secrets:/root/.bluemix ibmcom/ibm-cloud-developer-tools-amd64:0.20.0 ibmcloud target -r <YOUR_REGION> --cf-api https://api.<YOUR_REGION>.cf.cloud.ibm.com -o <YOUR_ORGANIZATION> -s <YOUR_SPACE>
使用
启动应用程序
在 main 文件夹中启动主应用程序:
bash docker-compose up -d db grafana app
应用程序的 Web 界面将暴露在端口 3001 http://localhost:3001
Grafana 将暴露在端口 3000 http://localhost:3000
操作
可以执行以下操作:
部署/删除
用户可以部署和删除测试。存在以下参数:
- Test: 要部署的测试
- Memory: 函数实例的内存量(不适用于 Azure)
- Timeout: 函数超时(不适用于 Azure)
- Clouds: 要部署函数的云
- Languages: 要部署的运行时
- Locations: 为每个云选择区域
Deploy 按钮将启动部署过程,Cleanup All 按钮将清理所有内容。状态可以在右侧查看。
重要提示: 清理过程将删除 AWS 上的所有 API 网关和 Lambda 函数,Azure 上包含测试名称的所有资源组,Google 上配置项目的所有函数,以及 IBM 上的所有函数和网关。请谨慎使用!
运行比较测试
运行比较测试。存在以下参数:
- Test name: 用于标识测试的名称
- Function dependant paramters: 各种函数依赖参数
可以使用 Run 按钮启动测试,使用 Stop 按钮停止测试。结果将在 Grafana 中查看。
运行基准测试
为已部署的函数运行负载测试。存在以下参数:
- Requests per second: 每秒发送的请求数
- Duration: 基准测试的持续时间
- Test: 要基准测试的测试
- N: 函数依赖参数
- Test name: 用于标识测试的名称
应用程序将使用 wrk2 对已部署的函数进行基准测试。结果将在 Grafana 中查看。
计算理论定价
通过提供以下参数计算假设价格:
- Calls: 每月调用次数
- Execution Time: 函数的估计执行时间(以毫秒为单位)
- Return Size: 返回的函数体的大小(以 KB 为单位)
- Memory: 为函数选择的内存分配
Calculate / Update 按钮将进行计算,结果将显示在右侧。
根据测试计算定价
根据特定测试计算价格:
- Calls: 每月调用次数
- Test: 因子、矩阵、自定义
- Test Name: 比较测试期间给出的名称
- Runtime: 要计算的运行时
Calculate / Update 按钮将进行计算,结果将显示在右侧。
清理
停止并删除容器:
bash docker-compose down
删除所有镜像:
bash docker rmi $(docker images -q)
删除所有卷:
bash docker volume rm $(docker volume ls -q)
故障排除
IBM
- 有时删除函数时,ibmcloud CLI 会无法加载资源,因此程序无法正确删除资源。这通常发生在长时间未使用后第一次使用时。
- IBM Cloud 使用一个会过期的身份验证令牌。一段时间后,你需要重新登录并配置。请参阅 Configure 部分。
- 有时 IBM CLI 会返回错误
Unable to create API: Request accepted, but processing not completed yet.,但函数很可能会正确部署。
Azure
- Azure 的超时参数目前被忽略,因为部署机制的实现方式不容易支持它。




