来自Netflix的员工Drew Gallatin在挪威举办的2019欧洲BSD大会(EuroBSDcon 2019)上介绍了该公司对FreeBSD网络栈的优化。Netflix之前为了能让视频流在Intel Xeno和AMD EPYC服务器上达到200Gb/s而不断发力,现在他们终于让传输率达到190Gb/s,同时发现在AMD EPYC Naples/Rome服务器的具有多达两倍增幅的潜力,远超 Intel。
Netflix一直以来都用FreeBSD作为数据中心服务器系统而著称,尤其是网络性能要求高的地方更为如此。但由于想要在单个服务器上达到200Gb/s的网络性能,于是就使得他们开始在FreeBSD的网络栈上为NUMA单元做优化。在NUMA本地内存上为内核TLS密钥缓存分配空间,以及使用sendfile传送文件,也都属于他们的优化范围。同时还顺手改善了Nginx的网络连接处理以及入站连接处理。
只想看结果的话请看这里,Netflix在FreeBSD上的NUMA优化,使得传输速率在 Intel Xeno 服务器上从105Gb/s增长到191Gb/s,而NUMA总线占用率从40%下降到13%。
AMD EPYC的性能就更加令人印象深刻了,从68Gb/s增长到194Gb/s。换句话说,EPYC最初远比Xeon慢,但现在Netflix的AMD EPYC服务器比起 Intel更接近与200Gb/s的目标。
不但因为EPYC更快,而且还要感谢的是,由于每个插槽有128条PCIe传输通道,因此他们可以在一个插槽中获得使用两个Intel Xeon CPU的能力。另一方面,Netflix也为此批评AMD的工具实在太过匮乏(即使在Linux上也是这样)。
最终,Netflix现在可以在每台FreeBSD服务器上达到200Gb/s的加密视频流传输率了。详情可见这篇幻灯展示。