Tuesday, February 26, 2013

Video Streaming to Jumbo Boob Tubes (Part 3 of 3)

So how do web content delivery networks (CDN) or a video streaming service providers like NetFlix or Hulu handle such explosive growth? Well, the first thing most of them did was move to a more robust web server platform designed to handle many thousands of users at a time, in most cases as mentioned in "Part 2" that has been Nginx. As content, Video places a far greater demand on the server than traditional web pages. A normal web user requests a page, the components arrive, they are then assembled by the user's browser, and typically read for about one minute. The user then requests another page. A video user on the other hand is far more demanding. For their experience they demand a constant stream of packets be sent to them continuously for very long periods of time. These packets need to be transmitted from the content server at very regular intervals, much like the lights on California highway on ramps that meter traffic entering the highway during rush hour. Maintaining continuous streams of video packets to thousands of web connected users is something Nginx can do very well.

So we mentioned in "Part 2" of this series that magic can occur when Nginx is coupled with an "Intelligent NIC". This "magic" is called FastStack VidePump™, and here are three main benefits:

Congestion mitigation, having a well tuned user space communications stack and a processor based NIC enables us to be considerably smarter with regard to sending many streams through many small pipes.
Asynchronous sendfile() support, this dramatically improves overall I/O performance.
This "magic" requires a processor based network adapter that can communicate directly with user space memory. This alone dramatically offloads the host CPU from having to provide file based content delivery to web users.

FastStack VideoPump™ offered with both Emulex OneConnect and Myricom network adapters provides all of the above features. Today Nginx supports many users by typically having 1,024 worker threads all doing synchronous sendfile(). With VideoPump™ and a single worker thread we see dramatic performance improvements because Nginx isn't flopping around between many threads trying keep the I/O pipeline full. So if all of the Nginx video streaming demand is coming from TCP sources (intelligent devices like browsers or applications running on laptops, tablets or smartphones) and the video content is being served up from files, the performance gains afforded by VideoPump™ in transparent mode (which requires no code changes to Nginx or applications) delivers a 25% reduction in host CPU utilization.

VideoPump™ can also be accessed through an Application Programming Interface. For applications designed to serve video content we've measured host CPU gains of up to 50%. To learn more about FastStack VideoPump™ please consider contacting your Emulex or Myricom sales representative.

No comments:

Post a Comment