We evaluate our heuristics using three metrics:
For brevity, we use the terms core size, load, and coverage to indicate average core size, maximum load, and average coverage, respectively. Where we do refer to these terms in the context of a particular host, we say so explicitly.
A good heuristic will determine cores with small size, low load, and high coverage. Coverage is the most critical metric because it determines how well it does in guaranteeing service in the event of a catastrophe. Coverage may not equal 1 either because there was no host that was available to cover an attribute of , or because the heuristic failed to identify such a host . As shown in the following sections, the second case rarely happens with our heuristics.
Note that, as a single number, the coverage of a given Core does not fully capture its resilience. For example, consider host with two attributes and host with 10 attributes. If Core covers only one attribute, then Core has a coverage of 0.5. If Core has the same coverage, then it covers only 5 of the 10 attributes. There are more ways to fail all of the hosts in Core than those in Core. Consequently, we also use the number of cores that do not have a coverage of 1.0 as an extension of the coverage metric.