Tuning Linux to reach maximum performance on 10 Gbps network card with HTTP Streaming.

The idea of this post, is share the experience and informations found after almost 2 months of investigation and 1 year of production use.

I found many post about how serve high numbers of traffic over 10Gbps or similar for HTTP streaming, but none of these posts share the Linux OS tuning they apply to reach this goal.

In my case, we had a extra challenge, we use P2P settings, that hitting the server around 3 times more that standard HTTP (HLS) Streaming…

When work with P2P need setting smaller size chunks, with high number of items into playlist.

The HLS spec say you need 10 sec chunks with almost 3 items into playlist. For good Sharing Ratio inside P2P is needed put 3 sec chunks and 20 items into playlist.

As HTTP Server we use Varnish, that cache all the request from Origin.

/etc/sysctl.d/20-streaming-tuning.conf

/etc/security/limits.conf

/etc/rc.local

Here you need change the Interface name for the correct based on your setup, in our server setup the public network card is “p5p1"

Here some screenshot about full capacity reached on production:

Image for post
Image for post

The server Spec be:

  • 2 x Intel(R) Xeon(R) CPU E5645 @ 2.40GHz (HT) = 24 logical cores
  • 16GB Ram
Image for post
Image for post

Any advice or feedback is welcome, feel free to write into the comments!

Enjoy!

Alejandro

Written by

Streaming Professional Consulting Services / Wowza - Flussonic - Icecast / Akamai - CloudFlare - CloudFront

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store