All Products
Search
Document Center

Container Service for Kubernetes:Aktifkan isolasi resource berdasarkan cache L3 dan MBA

Last Updated:Jun 17, 2026

Batasi penggunaan cache L3 dan bandwidth memori untuk Pod BestEffort guna melindungi workload sensitif latensi pada node bersama.

Cara kerja

Intel Resource Director Technology (RDT) mempartisi resource perangkat keras per node. ack-koordinator membaca ConfigMap ack-slo-config dan menerapkan pengaturan grup resctrl berdasarkan kelas QoS setiap pod. Secara default, pod BestEffort (BE) mendapatkan 30% cache L3, sedangkan pod sensitif latensi (LS) mendapatkan 100%. Bandwidth memori secara default dialokasikan 100% untuk kedua kelas tersebut.

Prasyarat

Pastikan Anda telah memiliki:

Penagihan

ack-koordinator gratis. Biaya mungkin berlaku di dua area berikut:

  • Konsumsi resource node: ack-koordinator tidak dikelola dan berjalan pada node pekerja. Tentukan permintaan resource per modul saat instalasi untuk mengontrol overhead.

  • Metrik Prometheus: Jika Anda mengaktifkan metrik Prometheus untuk ack-koordinator dan menggunakan Managed Service for Prometheus, metrik tersebut dihitung sebagai metrik kustom dan dikenai biaya sesuai ketentuan. Biaya tergantung pada ukuran kluster dan jumlah aplikasi. Tinjau penagihan Managed Service for Prometheus sebelum mengaktifkan fitur ini, dan pantau penggunaan melalui Kueri data observabel dan tagihan.

Langkah 1: Periksa dan aktifkan RDT pada kernel node

  1. Periksa apakah kernel telah mengaktifkan RDT:

    cat /proc/cmdline

    Cari l3cat dan mba dalam output:

    # Bidang lain dihilangkan. Contoh ini hanya menampilkan bagian RDT dari bidang BOOT_IMAGE.
    BOOT_IMAGE=... rdt=cmt,l3cat,l3cdp,mba

    Jika l3cat dan mba muncul, RDT sudah diaktifkan — lanjutkan ke Langkah 2.

  2. Tambahkan opsi RDT ke parameter boot kernel. Di /etc/default/grub, tambahkan baris berikut ke GRUB_CMDLINE_LINUX:

    Penting

    Pisahkan opsi RDT dari pengaturan yang sudah ada dengan spasi. Jangan menimpa parameter kernel lainnya.

    # Bidang lain dihilangkan. Contoh ini hanya menampilkan bagian RDT dari bidang GRUB_CMDLINE_LINUX.
    GRUB_CMDLINE_LINUX="... rdt=cmt,mbmtotal,mbmlocal,l3cat,l3cdp,mba"
  3. Buat ulang konfigurasi GRUB:

    # Jalur file dapat berbeda tergantung distribusi OS Anda.
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  4. Mulai ulang node:

    sudo systemctl reboot

    Setelah node dimulai ulang, jalankan kembali cat /proc/cmdline dan pastikan bahwa l3cat dan mba muncul.

Langkah 2: Konfigurasikan isolasi cache L3 dan MBA

Isolasi cache L3 dan MBA dikendalikan oleh ConfigMap ack-slo-config di namespace kube-system. Terapkan ConfigMap tersebut, lalu beri label pod sesuai kelas QoS-nya untuk mengaktifkan kebijakan ini.

Terapkan ConfigMap

Buat file configmap.yaml dengan konten berikut:

apiVersion: v1
kind: ConfigMap
metadata:
  name: ack-slo-config
  namespace: kube-system
data:
  # resource-qos-config: mengonfigurasi fitur isolasi resource berbasis QoS.
  # resctrlQOS: mengontrol isolasi Intel RDT (cache L3 dan MBA) per kelas QoS.
  #   enable: atur ke true untuk mengaktifkan isolasi cache L3 dan MBA untuk pod kelas ini.
  resource-qos-config: |
    {
      "clusterStrategy": {
        "beClass": {
          "resctrlQOS": {
            "enable": true
          }
        }
      }
    }

Kemudian terapkan ConfigMap tersebut:

  • Jika ack-slo-config sudah ada di kube-system, patch ConfigMap tersebut agar pengaturan lain tetap terjaga:

    kubectl patch cm -n kube-system ack-slo-config --patch "$(cat configmap.yaml)"
  • Jika ConfigMap belum ada, buat ConfigMap tersebut:

    kubectl apply -f configmap.yaml

(Opsional) Sesuaikan persentase isolasi per kelas QoS

Untuk menyesuaikan alokasi cache L3 dan bandwidth memori per kelas QoS, perbarui ConfigMap dengan persentase eksplisit:

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

Parameter resctrlQOS:

Parameter Tipe Nilai valid Default (kelas LS) Default (kelas BE) Deskripsi
enable Boolean true / false Mengaktifkan atau menonaktifkan isolasi cache L3 dan MBA.
catRangeEndPercent Int 0–100 (%) 100 30 Persentase cache L3 yang dialokasikan untuk kelas QoS tersebut.
mbaPercent Int 0–100 (%), harus kelipatan 10 100 100 Persentase bandwidth memori yang tersedia untuk kelas QoS tersebut.

Beri label pod sesuai kelas QoS

Terapkan label koordinator.sh/qosClass pada pod yang ingin Anda isolasi. Contoh berikut membuat pod BE yang menjalankan workload stres memori:

apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  labels:
    koordinator.sh/qosClass: 'BE'  # Menetapkan pod ini ke kelas QoS BE.
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"]
Catatan Untuk Deployment, tetapkan label koordinator.sh/qosClass pada bidang template.metadata, bukan pada level Deployment.

Terapkan pod tersebut:

kubectl apply -f pod-demo.yaml