Thursday, April 14, 2016

FACEBOOK’S DIS AGGREGATION ACTION

Disaggregation can be defined as the separation of a whole system into components. One of the ways to offer operators in a data center flexibility is to separate the data-center equipment, in particular servers, into resource components. This increases their chances of covering times of high demand while ensuring optimal utilization.

An application of disaggregation can be seen in the way the backend infrastructure that populates a Facebook user’s news feed is set up. Up until last year, Multifeed, the name of the news feed backend, was made up of uniform servers, with each having the same amount of memory and CPU capacity. The query engine that takes data for the news feed, called Aggregator, uses a lot of CPU power. The storage layer it pulls data from keeps it in memory, so it can be delivered faster. This layer is called Leaf, and it uses a lot of memory. The former version of a Multifeed rack contained 20 servers, each running both Aggregator and Leaf. In order to catch up with the increasing user growth, Facebook engineers continued adding servers and eventually realized that while CPUs on those servers were being heavily utilized, a lot of the memory capacity was sitting idle.

To solve this inefficiency, the way Multifeed works was reconstructed in the way that the backend infrastructure was set up and the way the software used it. Separate servers were designed for Aggregator and Leaf functions. While the Aggregator had lots of compute, the Leaf functions had lots of memory. This led to a 40 percent efficiency improvement in the way Multifeed used CPU and memory resources. The infrastructure went from a CPU-to-RAM ratio of 20:20 to 20:5 or 20:4 – a 70 to 80-percent reduction in the amount of memory that needs to be deployed.

No comments:

Post a Comment