Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:Enable resource isolation based on the L3 cache and MBA

Son Güncelleme:Oct 06, 2026

Paylaşılan düğümlerdeki gecikme duyarlı iş yüklerini korumak amacıyla BestEffort kapsülleri için L3 önbelleği ve bellek bant genişliğini sınırlayın.

Nasıl çalışır?

Intel Resource Director Technology (RDT), donanım kaynaklarını düğüm başına bölümlere ayırır. ack-koordinator, ack-slo-config ConfigMap dosyasını okur ve her kapsülün QoS sınıfına göre resctrl grup ayarlarını uygular. Varsayılan olarak BestEffort (BE) kapsülleri L3 önbelleğin %30'unu, gecikme duyarlı (LS) kapsülleri ise %100'ünü alır. Bellek bant genişliği varsayılan olarak her iki sınıf için de %100'dür.

Ön koşullar

Aşağıdakilere sahip olduğunuzdan emin olun:

Faturalandırma

ack-koordinator ücretsizdir. Maliyetler iki alanda oluşabilir:

  • Düğüm kaynağı tüketimi: ack-koordinator yönetilmeyen bir bileşendir ve worker düğümlerinde çalışır. Yükü kontrol etmek için kurulum sırasında modül başına kaynak isteklerini belirtin.

  • Prometheus ölçümleri: ack-koordinator için Prometheus ölçümlerini etkinleştirir ve Managed Service for Prometheus kullanırsanız bu ölçümler özel ölçümler olarak sayılır ve buna göre faturalandırılır. Ücretler küme boyutuna ve uygulama sayısına bağlıdır. Etkinleştirmeden önce Managed Service for Prometheus faturalandırması nu inceleyin ve kullanımı Gözlemlenebilir verileri ve faturaları sorgulama ile izleyin.

Adım 1: Düğüm çekirdeğinde RDT'yi kontrol edin ve etkinleştirin

  1. Çekirdekte RDT'nin etkin olup olmadığını kontrol edin:

    cat /proc/cmdline

    Çıktıda l3cat ve mba ifadelerini arayın:

    # Other fields omitted. This example shows only the RDT portion of the BOOT_IMAGE field.
    BOOT_IMAGE=... rdt=cmt,l3cat,l3cdp,mba

    l3cat ve mba görünüyorsa RDT zaten etkindir; Adım 2 bölümüne geçin.

  2. Çekirdek önyükleme parametrelerine RDT seçeneklerini ekleyin. /etc/default/grub dosyasında GRUB_CMDLINE_LINUX değerine aşağıdakileri ekleyin:

    Önemli

    RDT seçeneklerini mevcut ayarlardan bir boşlukla ayırın. Diğer çekirdek parametrelerinin üzerine yazmayın.

    # Other fields omitted. This example shows only the RDT portion of the GRUB_CMDLINE_LINUX field.
    GRUB_CMDLINE_LINUX="... rdt=cmt,mbmtotal,mbmlocal,l3cat,l3cdp,mba"
  3. GRUB yapılandırmasını yeniden oluşturun:

    # The file path may differ depending on your OS distribution.
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  4. Düğümü yeniden başlatın:

    sudo systemctl reboot

    Düğüm yeniden başladıktan sonra cat /proc/cmdline komutunu tekrar çalıştırın ve l3cat ile mba ifadelerinin göründüğünü doğrulayın.

Adım 2: L3 önbellek ve MBA yalıtımını yapılandırın

L3 önbellek ve MBA yalıtımı kube-system ad alanındaki ack-slo-config ConfigMap tarafından kontrol edilir. ConfigMap'i uygulayın ardından ilkeyi etkinleştirmek için kapsülleri QoS sınıflarıyla etiketleyin.

ConfigMap'i uygulayın

Aşağıdaki içeriğe sahip configmap.yaml dosyasını oluşturun:

apiVersion: v1
kind: ConfigMap
metadata:
  name: ack-slo-config
  namespace: kube-system
data:
  # resource-qos-config: configures QoS-based resource isolation features.
  # resctrlQOS: controls Intel RDT (L3 cache and MBA) isolation per QoS class.
  #   enable: set to true to activate L3 cache and MBA isolation for pods of this class.
  resource-qos-config: |
    {
      "clusterStrategy": {
        "beClass": {
          "resctrlQOS": {
            "enable": true
          }
        }
      }
    }

Ardından ConfigMap'i uygulayın:

  • ack-slo-config zaten kube-system içinde varsa diğer ayarları korumak için yamalayın:

    kubectl patch cm -n kube-system ack-slo-config --patch "$(cat configmap.yaml)"
  • ConfigMap yoksa oluşturun:

    kubectl apply -f configmap.yaml

(İsteğe bağlı) QoS sınıfı başına yalıtım yüzdelerini ayarlayın

QoS sınıfı başına L3 önbelleği ve bellek bant genişliğini ayarlamak için ConfigMap'i açık yüzdelerle güncelleyin:

apiVersion: v1
kind: ConfigMap
metadata:
  name: ack-slo-config
  namespace: kube-system
data:
  resource-qos-config: |
    {
      "clusterStrategy": {
        "lsClass": {
          "resctrlQOS": {
            "enable": true,
            "catRangeEndPercent": 100,  # LS pods: 100% of L3 cache (default)
            "mbaPercent": 100           # LS pods: 100% memory bandwidth (default)
          }
        },
        "beClass": {
          "resctrlQOS": {
            "enable": true,
            "catRangeEndPercent": 30,   # BE pods: 30% of L3 cache (default)
            "mbaPercent": 100           # BE pods: 100% memory bandwidth (default)
          }
        }
      }
    }

resctrlQOS parametreleri:

Parametre Tür Geçerli değerler Varsayılan (LS sınıfı) Varsayılan (BE sınıfı) Açıklama
enable Boolean true / false — — L3 önbellek ve MBA yalıtımını etkinleştirir veya devre dışı bırakır.
catRangeEndPercent Int 0–100 (%) 100 30 QoS sınıfına ayrılan L3 önbellek yüzdesi.
mbaPercent Int 0–100 (%), 10'un katı olmalıdır 100 100 QoS sınıfının kullanabileceği bellek bant genişliği yüzdesi.

Kapsülleri bir QoS sınıfıyla etiketleyin

Yalıtmak istediğiniz kapsüllere koordinator.sh/qosClass etiketini uygulayın. Bu örnek bellek stres iş yükü çalıştıran bir BE kapsülü oluşturur:

apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  labels:
    koordinator.sh/qosClass: 'BE'  # Assigns this pod to the BE QoS class.
spec:
  containers:
  - name: pod-demo
    image: polinux/stress
    resources:
      requests:
        cpu: 1
        memory: "50Mi"
      limits:
        cpu: 1
        memory: "1Gi"
    command: ["stress"]
    args: ["--vm", "1", "--vm-bytes", "256M", "-c", "2", "--vm-hang", "1"]
Not

Deployments için

koordinator.sh/qosClass

etiketini Deployment düzeyinde değil

template.metadata

alanında ayarlayın.

Kapsülü dağıtın:

kubectl apply -f pod-demo.yaml

Sonraki adımlar