针对Sidecar模式下的服务网格数据面应用服务访问QPS和延时的优化
本赛题的目标是提升服务网格的整体性能, 具体的来说就是平均时延/资源节约率/QPS.
赛题有两个用来量化性能的指标:
就如同赛题里所说的, 我们的优化手段主要有三点:
- 合理分配Sidecar的资源
- 平台特性调优
- Sidecar配置调优
接下来我们具体分析这三点内容.
合理分配Sidecar的资源
这可以说是本赛题的重中之重, 直接影响到性能分数和资源分数.
我们的解法分为以下几个步骤:
平台特性调优
平台特性主要是multi-buffer,可以调整的参数有是否开启和pollDelay值的大小, 我们对这个了解的不多, 做了一些尝试后认为将pollDelay调小到0.1以内或者直接关闭对分数比较有利.
Sidecar配置调优
同样由于我们其实没有istio的实际使用经验, 只能凭借一些资料查阅和实际测试.
最后发现似乎将proxy.istio.io/config: 'concurrency'
稍微调大会有一些正面作用, 例如调到[2, 4].
总结
因为欠缺对istio的了解, 所以我们只能把系统当成一个黑盒. 主要把功夫下在资源分配的策略上, 凭借一些贪心策略去构建一个分配资源的模型. 重点在于最低限度使用资源的同时, 根据找到的一些衡量sidecar权重的指标合理分配资源.
实际上赛题中还提供了很多其他信息和数据(例如请求大小, 上一轮的CPU/内存使用量等), 但是我们在经过一些尝试和测试后并没能在其中发现一些能显著对结果有正面相关性的指标(或者并不显著的比目前选择的两个指标更好), 所以最后主要还是只通过请求数量和sidecar数量来分配资源.