如果您需要优化函数的成本和性能,例如给CPU密集型场景的函数设置合适的内存,给I/O密集型场景的函数设置合适的并发值。您可以使用Power Tuning探测功能对函数实现探测,获取满足需求的配置信息例如内存大小或并发值。本文介绍Power Tuning探测的背景信息和对函数实现探测的使用示例。
前提条件
背景信息
- CPU密集型场景
对于CPU密集型场景,例如音视频处理、AI推理或图片处理等,您一般会选择使用单实例单并发。由于该类场景的函数内存大小和CPU能力成正比,因此您需要根据函数是成本敏感型还是延迟敏感型选择合适的内存规格。
- I/O密集型场景
对于I/O密集型场景,您一般会选择使用单实例多并发。该类场景下由于函数内存和CPU能力成正比,建议您将函数内存规格设置足够大,但可能会出现浪费资源的现象,很难选择合适的单实例并发值。
针对在以上两种使用场景无法设置合适的参数规格的情况,Serverless Devs为您提供了探测功能,可以实现内存探测和并发度探测,获取满足您需求的参数配置信息。
使用示例
- 内存探测模式
本示例以探测CPU密集型场景事件函数为例,介绍如何实现内存模式的探测。请执行以下命令,获取最佳的内存规格:
s cli fc eval start --region cn-hangzhou --function-name cpu-test --service-name Service --eval-type memory --run-count 10 --payload '{"key":"val"}' --memory-size 128,256,512,1024 --access default
本示例表示被探测的目标函数在128 MB、256 MB、512 MB和1024 MB四个不同的内存模式下分别被调用十次后取平均值,例如目标函数在128 MB内存格式下被调用十次后取平均值,最终对目标函数在这四个不同内存模式下分别被调用十次后的平均值进行对比,获取探测信息。
输出示例:[2021-10-26T15:41:34.205] [INFO ] [FC-EVAL] - Reading payload content... [2021-10-26T15:41:34.332] [INFO ] [FC-EVAL] - Preparing helper resource for eval. Eval complete. Eval finally clean ... [2021-10-26T15:41:44.267] [INFO ] [FC-EVAL] - Eval result = [{"memorySize":128,"useTime":0,"cost":null},{"memorySize":256,"useTime":0,"cost":null},{"memorySize":512,"useTime":0,"cost":null},{"memorySize":1024,"useTime":0,"cost":null}] >- http://memory-tuning.devsapp.cn/#gAAAAQACAAQ=;AICCQwAAmEIAAJxCAADKQg==;27TBNKqeYTShjuc0HeuVNQ==
成功执行内存模式的探测后,在执行输出中会生成一个URL,使用浏览器打开该URL,如下图所示可以帮您可视化函数的内存,通过该图可以获取最优的参数配置信息: - 并发度探测模式
本示例以I/O密集型场景的HTTP函数为例,介绍如何对函数实现并发度的探测。请执行以下命令,获取最佳的并发度规格:
s cli fc eval start --region cn-hangzhou --function-name demo --service-name Service --function-type http --eval-type concurrency --memory 1536 --concurrency-args 2,20,5 --rt 200 --method=get --path /login --query 'a=1&b=2' --access default
本示例表示将被探测的目标函数的内存规格设置为1.5 GB,并发度范围[2,20],步长为5,即被探测的目标函数分别在2、7、12和17不同并发值模式下实现探测,获取探测信息。
输出示例:[2021-10-26T14:21:37.874] [INFO ] [FC-EVAL] - Reading payload content... [2021-10-26T14:21:37.879] [WARN ] [FC-EVAL] - payload reset empty when method is get!!! [2021-10-26T14:21:37.996] [INFO ] [FC-EVAL] - Preparing helper resource for eval. Eval complete. Eval finally clean ... [2021-10-26T14:21:56.724] [INFO ] [FC-EVAL] - Eval result = [{"instanceConcurrency":2,"useTime":7.729508196721311,"qps":91},{"instanceConcurrency":7,"useTime":12.062043795620438,"qps":107},{"instanceConcurrency":12,"useTime":19.40979381443299,"qps":187},{"instanceConcurrency":17,"useTime":23.04057279236277,"qps":194}] >- http://concurrency-tuning.devsapp.cn/#AgAHAAwAEQA=;Ilj3QCL+QEFCR5tBGFO4QQ==;AAC2QgAA1kIAADtDAABCQw==
成功执行并发度模式的探测后,在执行输出中会生成一个URL,使用浏览器打开该URL,如下图所示可以帮您可视化函数的内存,通过该图可以获取最优的参数配置信息:
如果您还需要指定其他的参数,请参见使用s cli fc eval的相关命令实现探测。