Deframmentazione delle metriche e del carico in Service FabricDefragmentation of metrics and load in Service Fabric

La strategia predefinita di Cluster Resource Manager di Service Fabric per la gestione delle metriche di carico del cluster è di distribuire il carico.The Service Fabric Cluster Resource Manager's default strategy for managing load metrics in the cluster is to distribute the load. Assicurare che i nodi vengano usati in modo uniforme evita aree sensibili e non sensibili che possono causare conflitti e spreco di risorse.Ensuring that nodes are evenly utilized avoids hot and cold spots that lead to both contention and wasted resources. La distribuzione dei carichi di lavoro nel cluster è il modo più sicuro per la sopravvivenza agli errori perché garantisce che qualsiasi anomalia non interessi gran parte di un carico di lavoro.Distributing workloads in the cluster is also the safest in terms of surviving failures since it ensures that a failure doesn’t take out a large percentage of a given workload.

Cluster Resource Manager di Service Fabric supporta anche una strategia diversa per la gestione del carico, ovvero la deframmentazione.The Service Fabric Cluster Resource Manager does support a different strategy for managing load, which is defragmentation. La deframmentazione implica che invece di tentare di distribuire l'uso di una metrica all'interno del cluster, viene consolidata.Defragmentation means that instead of trying to distribute the utilization of a metric across the cluster, it is consolidated. Il consolidamento rappresenta una inversione della strategia di bilanciamento predefinita: invece di ridurre al minimo la deviazione media standard del carico della metrica Cluster Resource Manager cerca di aumentarla.Consolidation is just an inversion of the default balancing strategy – instead of minimizing the average standard deviation of metric load, the Cluster Resource Manager tries to increase it.

Quando usare la deframmentazioneWhen to use defragmentation

La distribuzione del carico nel cluster usa alcune delle risorse in ogni nodo.Distributing load in the cluster consumes some of the resources on each node. Alcuni carichi di lavoro creano servizi di dimensioni eccezionalmente elevate e consumano la maggior parte o tutto un nodo.Some workloads create services that are exceptionally large and consume most or all of a node. In questi casi, è possibile che durante la creazione di grandi carichi di lavoro non vi sia spazio sufficiente su qualsiasi nodo per eseguirli.In these cases, it's possible that when there are large workloads getting created that there isn't enough space on any node to run them. I carichi di lavoro di grandi dimensioni non sono un problema in Service Fabric. Cluster Resource Manager determina come è necessario per riorganizzare il cluster per far spazio al carico di lavoro di dimensioni elevate.Large workloads aren't a problem in Service Fabric; in these cases the Cluster Resource Manager determines that it needs to reorganize the cluster to make room for this large workload. Tuttavia, nel frattempo il carico di lavoro deve rimanere in attesa di essere pianificato nel cluster.However, in the meantime that workload has to wait to be scheduled in the cluster.

Se sono presenti molti servizi e stati da spostare, potrebbe occorrere molto tempo per inserire nel cluster il carico di lavoro di dimensioni elevate.If there are many services and state to move around, then it could take a long time for the large workload to be placed in the cluster. Ciò è più probabile se anche altri carichi di lavoro già nel cluster sono di dimensioni elevate e pertanto richiedono più tempo per la riorganizzazione.This is more likely if other workloads in the cluster are also large and so take longer to reorganize. Il team di Service Fabric ha misurato i tempi di creazione nelle simulazioni di questo scenario.The Service Fabric team measured creation times in simulations of this scenario. È stato rilevato che la creazione di servizi di grandi dimensioni ha richiesto molto più tempo quando l'uso del cluster ha superato il valore tra il 30 e il 50%.We found that creating large services took much longer as soon as cluster utilization got above between 30% and 50%. Per gestire questo scenario, è stata introdotta la deframmentazione come strategia di bilanciamento.To handle this scenario, we introduced defragmentation as a balancing strategy. È stato riscontrato che per i carichi di lavoro di grandi dimensioni, soprattutto quelli per cui il tempo di creazione era elevato, la deframmentazione ha davvero aiutato nella pianificazione di tali carichi nel cluster.We found that for large workloads, especially ones where creation time was important, defragmentation really helped those new workloads get scheduled in the cluster.

È possibile configurare le metriche di deframmentazione in modo che Cluster Resource Manager tenti in maniera proattiva di condensare in meno nodi il carico dei servizi.You can configure defragmentation metrics to have the Cluster Resource Manager to proactively try to condense the load of the services into fewer nodes. Questo garantisce che ci sia quasi sempre spazio per servizi di dimensioni ancora più elevate senza necessità di riorganizzare il cluster.This helps ensure that there is almost always room for large services without reorganizing the cluster. Non dover riorganizzare il cluster consente di creare rapidamente grandi carichi di lavoro.Not having to reorganize the cluster allows creating large workloads quickly.

La maggior parte degli utenti non avrà bisogno della deframmentazione.Most people don’t need defragmentation. I servizi sono in genere di piccole dimensioni e non è difficile trovare spazio nel cluster.Services are usually be small, so it’s not hard to find room for them in the cluster. Quando la riorganizzazione è possibile avviene rapidamente poiché la maggior parte dei servizi sono di dimensioni ridotte e possono essere spostati rapidamente e in parallelo.When reorganization is possible, it goes quickly, again because most services are small and can be moved quickly and in parallel. Se tuttavia si dispone di servizi di grandi dimensioni da creare rapidamente allora la deframmentazione è la strategia più indicata.However, if you have large services and need them created quickly then the defragmentation strategy is for you. Si illustreranno gli svantaggi dell'uso della deframmentazione qui di seguito.We'll discuss the tradeoffs of using defragmentation next.

Svantaggi della deframmentazioneDefragmentation tradeoffs

La deframmentazione può aumentare l'impatto degli errori, poiché vengono eseguiti più servizi sui nodi che presentano errori.Defragmentation can increase impactfulness of failures, since more services are running on nodes that fail. La deframmentazione può anche aumentare i costi poiché le risorse del cluster devono essere tenute di riserva in attesa della creazione di carichi di lavoro di grandi dimensioni.Defragmentation can also increase costs, since resources in the cluster must be held in reserve, waiting for the creation of large workloads.

Il diagramma di seguito offre una rappresentazione visiva di due cluster, uno deframmentato e uno non deframmentato.The following diagram gives a visual representation of two clusters, one that is defragmented and one that is not.

Confronto tra cluster bilanciati e deframmentati
Comparing Balanced and Defragmented Clusters

Nel caso bilanciato, considerare il numero di spostamenti necessari per posizionare uno degli oggetti servizio di dimensioni più grandi.In the balanced case, consider the number of movements that would be necessary to place one of the largest service objects. Nel cluster deframmentato il carico di lavoro di grandi dimensioni potrebbe trovarsi nel nodo quattro o cinque senza dover attendere lo spostamento di altri servizi.In the defragmented cluster, the large workload could be placed on nodes four or five without having to wait for any other services to move.

Vantaggi e svantaggi della deframmentazioneDefragmentation pros and cons

Quali sono quindi questi altri compromessi concettuali?So what are those other conceptual tradeoffs? Ecco una tabella riepilogativa degli aspetti da considerare:Here’s a quick table of things to think about:

Vantaggi della deframmentazioneDefragmentation Pros Svantaggi della deframmentazioneDefragmentation Cons
Consente di creare servizi di grandi dimensioni più rapidamenteAllows faster creation of large services Concentra i carichi in meno nodi, aumentando il conflittoConcentrates load onto fewer nodes, increasing contention
Consente di ridurre lo spostamento dei dati durante la creazioneEnables lower data movement during creation Eventuali errori possono impattare più servizi e causare una maggiore varianzaFailures can impact more services and cause more churn
Consente una descrizione completa dei requisiti e il recupero di spazioAllows rich description of requirements and reclamation of space Configurazione di gestione delle risorse complessiva più complessaMore complex overall Resource Management configuration

È possibile combinare le metriche normali e deframmentate nello stesso cluster.You can mix defragmented and normal metrics in the same cluster. Cluster Resource Manager tenta di consolidare il più possibile le metriche di deframmentazione, diffondendo le altre.The Cluster Resource Manager tries to consolidate the defragmentation metrics as much as possible while spreading out the others. I risultati della combinazione delle strategie di deframmentazione e bilanciamento del carico dipendono da diversi fattori, tra cui:The results of mixing defragmentation and balancing strategies depends on several factors, including:

  • il numero delle metriche di bilanciamento e il numero delle metriche di deframmentazionethe number of balancing metrics vs. the number of defragmentation metrics
  • se un servizio usa entrambi i tipi di metricheWhether any service uses both types of metrics
  • i pesi delle metrichethe metric weights
  • i carichi correnti delle metrichecurrent metric loads

È necessario fare delle prove per determinare la configurazione esatta necessaria.Experimentation is required to determine the exact configuration necessary. Si consiglia di misurare accuratamente i carichi di lavoro prima di abilitare le metriche di deframmentazione nella produzione.We recommend thorough measurement of your workloads before you enable defragmentation metrics in production. Ciò vale soprattutto quando si combinano metriche di deframmentazione e metriche bilanciate all'interno dello stesso servizio.This is especially true when mixing defragmentation and balanced metrics within the same service.

Configurazione delle metriche di deframmentazioneConfiguring defragmentation metrics

La configurazione delle metriche di deframmentazione è una decisione globale nel cluster ed è possibile selezionare metriche singole per la deframmentazione.Configuring defragmentation metrics is a global decision in the cluster, and individual metrics can be selected for defragmentation. I frammenti di codice di configurazione seguenti illustrano come configurare le metriche per la deframmentazione.The following config snippets show how to configure metrics for defragmentation. In questo caso, "Metric1" è configurato come una metrica di deframmentazione, mentre "Metric2" continuerà a essere bilanciata normalmente.In this case, "Metric1" is configured as a defragmentation metric, while "Metric2" will continue to be balanced normally.

ClusterManifest.xml:ClusterManifest.xml:

<Section Name="DefragmentationMetrics">
    <Parameter Name="Metric1" Value="true" />
    <Parameter Name="Metric2" Value="false" />
</Section>

mediante ClusterConfig.json per le distribuzioni autonome o Template.json per i cluster ospitati in Azure:via ClusterConfig.json for Standalone deployments or Template.json for Azure hosted clusters:

"fabricSettings": [
  {
    "name": "DefragmentationMetrics",
    "parameters": [
      {
          "name": "Metric1",
          "value": "true"
      },
      {
          "name": "Metric2",
          "value": "false"
      }
    ]
  }
]

Passaggi successiviNext steps

  • Cluster Resource Manager dispone di varie opzioni per descrivere il cluster.The Cluster Resource Manager has man options for describing the cluster. Per altre informazioni a riguardo vedere l'articolo Descrivere un cluster di Service FabricTo find out more about them, check out this article on describing a Service Fabric cluster
  • Le metriche determinano il modo in cui Cluster Resource Manger di Service Fabric gestisce il consumo e la capacità del cluster.Metrics are how the Service Fabric Cluster Resource Manger manages consumption and capacity in the cluster. Per altre informazioni sulle metriche e su come configurarle, vedere questo articoloTo learn more about metrics and how to configure them, check out this article