Overwegingen voor het vastmaken van processen

Voltooid

Waarom processen en threads vastmaken?

Maak processen altijd vast aan specifieke kernen om maximale prestaties te bereiken en consistentere prestaties te krijgen van uitvoering tot uitvoering.

Procespinning:

  • Maximaliseert de geheugenbandbreedte door processen te plaatsen of vast te maken op locaties die gebruikmaken van alle geheugenkanalen en alle geheugenkanalen gelijkmatig verdelen over de kernen.

  • Verbetert de prestaties van drijvende komma door te garanderen dat elk proces zich op een eigen kern bevindt. Dit elimineert de mogelijkheid dat twee processen op dezelfde kern terechtkomen.

  • Optimaliseert gegevensverplaatsing tussen de processen door processen te plaatsen die communiceren in NUMA-domeinknooppunten (Non-Uniform Memory Access). Dit garandeert dat ze de laagste latentie en de hoogste bandbreedte hebben.

  • Vermindert de overhead van het besturingssysteem en geeft u consistentere resultaten omdat het besturingssysteem processen niet naar verschillende kernen of NUMA-domeinen kan verplaatsen.

Waar kunt u processen en threads vastmaken?

Als u wilt bepalen waar processen en threads moeten worden vastgemaakt, moet u de processor- en geheugentopologie begrijpen, en met name het aantal en de locatie van de NUMA-domeinen.

Het hulpprogramma lstopo-no-graphics (van de hwloc RPM) en de Intel Memory Latency Checker (MLC) zijn handige hulpprogramma's om de processor- en geheugentopologie te bepalen. Bijvoorbeeld: Hoeveel NUMA-domeinen heeft de VIRTUELE machine? Welke kernen zijn lid van elk NUMA-domein? Wat is de latentie en bandbreedte voor processen in elk NUMA-domein terwijl ze met elkaar communiceren?

In de volgende afbeelding ziet u de HB120_v2 NUMA-domeinlatentiekaart die is gegenereerd door Intel MLC. Hoe lager de latentie tussen NUMA-domeinen, hoe sneller de communicatie ertussen is. In de afbeelding ziet u duidelijk dat HB120_v2 30 NUMA-domeinen heeft en welke NUMA-domeinen zich op welke socket bevinden. Ook ziet u welke NUMA-domeinen kunnen worden gegroepeerd om de laagste gegevensoverdracht en communicatielatentie te bereiken.

Image that shows the HB120_v2 NUMA domain latency map.

Intel-processors hebben zes geheugenkanalen en AMD EPYC-processors hebben acht geheugenkanalen. Zorg ervoor dat u alle geheugenkanalen gebruikt om de beschikbare geheugenbandbreedte te maximaliseren. Doe dit door de parallelle processen gelijkmatig over de NUMA-knooppuntdomeinen te spreiden. Voor hybride parallelle toepassingen houdt u proces-/threadgroepering in dezelfde NUMA-domeinen, waarbij u idealiter dezelfde L3-cache deelt. Zorg ervoor dat het totale aantal threads niet groter is dan het totale aantal kernen.

In de volgende afbeelding ziet u een HC44-SKU met 2 NUMA-domeinen en 44 kernen.

Image that shows the HC44 NUMA domains.

In de volgende afbeelding ziet u een HB60-SKU met 15 NUMA-domeinen en 60 kernen.

Image that shows the HB60 NUMA domains.

Aan geheugenbandbreedte gebonden toepassingen

Als u een toepassing hebt die afhankelijk is van de geheugenbandbreedte, krijgt u mogelijk betere prestaties op de VIRTUELE machine door het aantal parallelle processen en threads in elk NUMA-knooppuntdomein te verminderen. Dit kan meer geheugenbandbreedte per proces bieden en mogelijk de kloktijd van de wand verminderen.

Als u bijvoorbeeld HB120_v2 SKU met 30 NUMA-knooppuntdomeinen gebruikt, kunt u proberen om 1, 2 en 3 processen en threads per NUMA-knooppuntdomein uit te voeren (bijvoorbeeld: 30, 60 en 90 processen en threads per VM). Vervolgens kunt u zien welke configuratie de beste prestaties biedt.