Flux NSDI 2019

Flow size prediction

Posted by Yiran on March 27, 2019

核心思想

机器学习算法预测流的size, 除此之外的亮点:探讨了对流大小是不是知道的越多越好?

获取流大小 方法总结

  • 应用提供

    局限:有的应用一开始不知道大小;需要改应用API,对public cloud不适用

  • Flow aging (LAS PIAS

    局限:不适用于需要知道流确切大小的调度场景(fastpasssincronia等);有效性与流分布特征有关 比如重尾分布还是效果不错的 但是当大部分流大小都相同时(轻尾分布)不好

  • 根据TCP buffer的占用情况

    局限:buffering只有当发送方瓶颈在网络或者接收方是才能反映流大小

  • 监测系统调用

    write send系统调用。大多数应用有标准的系统调用长度(Tomcat 8KB, MySQL 16KB, Spark standalone 100KB,YARN 262KB)。如果小于8KB,一次系统调用就可以完成,会体现出真实size大小

    局限:只有当流小于一次标准系统调用的长度时,获取的信息才是准确的。可以根据这个获取小流大小!

  • 从以前的trace中学习(机器学习)

    局限:从以前的trace学习的重要依据是:很多job在数据中心中是重复的, one-shot的job则不适用

    论文搭建了一个真实的机器学习系统(Flux)去预测。

    选择适合的机器学习方法:Recurrent Neural Network with LSTM layersGradient Boosting Decisions TreesFeed-Forward Neural Network

    最终GBDT准确度最高,还对模型准确性、model大小、训练集大小 实现(offload)进行了讨论

    使用这个预测模型,对网络流调度的进行了实验(simulatior:YAPS)FCT CCT

More knowledge—>better performance?

  • 实验证明 Knowing x% of all flows 越多越好
  • 实验证明 Knowing all flows of size up to x bytes: SRF-age 知道更大的流的size更有好处 因为这样大流就不用一开始与小流竞争了
  • 针对Coflow scheduling: 发现有意思的结论: 知道更多coflow的大小有时反而会使CCT性能下降 论文进行了举例说明
  • Mean completion time across all co/flows

    重要结论 SRF-age, making a certain flow’s size known can never deteriorate its performance, at least when interpreted in a worst-case manner

参考文献

Is advance knowledge of flow sizes a plausible assumption?