Wednesday, August 23, 2017

Technical Session 5 Paper 3: Disk | Crypt | Net: rethinking the stack for high-performance video streaming

Authors:  Ilias Marinos, Robert N.M. Watson, Mark Handley and Randall R. Stewart

Presented by: Ilias Marinos (Cambridge)
Ilias starts the presentation by emphasizing the increase in popularity of video traffic in the internet, stating it accounts 50% of all North American traffic. He switches the focus from video popularity to how most of the video being delivered is now encrypted. The authors study the various kernel optimizations made by Netflix and show using the figure below how the throughput for encrypted video is 30% less for when all the content is in the buffer cache compared to when all the data is fetched from disk . The authors state using the buffer cache entirely causes core saturation leading to drop in performance. The reason disk is better is due to the decrease in storage latencies due to SSDs. 

This motivates the author to build a system called Atlas which ideally does not use any memory and fetches the content straight from disk to the NICs. Atlas puts SSDs directly in TCP control loop by processing disk reads to completion and then transmiting. Atlas uses diskmap (kernel bypass framework) to achieve this design. Ilias states that this design is slightly far off from the ideal case due to diskmap limitations.

 Atlas outperforms the Netflix stack by 15% for unencrypted and 50% for encrypted traffic in terms of throughput with half the number of cores used by Netflix.  The number of memory reads is half for each packet sent. Their solution does involve some memory use particularly due to inefficient re-use of buffer cache limited by diskmap.

Question & Answers: 

Q. Did you consider cache partitioning? offloading encryption on to NICs? What would be the next important optimization?
A: Offloading to NICs would help but the next thing for us to look would be how we can get pass the dismap limitations to re-use buffers more efficiently then waiting for the content to be copied to and from the memory due to buffer evictions.