使用MATH (和Rust )节省另外100TB的RAM

Cloudflare的全球网络庞大但并非无限。当我们寻找减少资源使用的小方法时,我们有时会很幸运,我们可以削减更多。以下是我们如何通过统计来减少基于Pingora的服务的RAM使用量。

Cloudflare的全球网络庞大但并非无限。当我们寻找减少资源使用的小方法时,我们有时会很幸运,我们可以削减更多。以下是我们如何通过统计来减少基于Pingora的服务的RAM使用量。Cloudflare的运营规模如此之大,即使在这里工作多年,也似乎并不真实。

我们在全球拥有数千台服务器,拥有数PB的RAM和数百万个CPU内核,所有这些都被推到了最大值。尽管这些资源非常庞大,但它们仍然是有限的,当您需要在每个节点上运行每个服务时,它不会留下浪费空间的空间。在这个规模上,微小的改进会被大大放大,因此即使是1%的改进也值得庆祝。

一些调整加起来要多得多:在这篇文章中,我们将了解对单个算法的微小更改如何显著减少我们基于Pingora的服务之一的内存占用。这使我们能够在全球范围内回收超过100TB的内存,此外, DNS团队上个月还能够节省100TB的内存。浪费不维护团队之间的公平资源共享并不容易,在大型组织中尤其如此。

Cloudflare确保平衡的方法之一是通过出色的性能团队的不懈努力。这个故事始于Ivan提交的一张工单,他发现: Pingora后端路由器中pingora-ketama的内存使用过多。

调查结果表明,我们的内部负载平衡服务Pingora后端路由器(是的, PBR )使用的内存比预期的要多得多,特别是在与pingora-ketama相关的结构中, pingora-ketama是我们用于处理一致哈希的开源库。