Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Linux:Memory reclamation optimization for the memcg global minimum watermark rating feature

Son Güncelleme:Oct 08, 2026

Gecikme süresine duyarlı ve kaynak tüketen görevler aynı ana bilgisayarda çalıştığında, kaynak tüketen görevlerin ani bellek tahsisi serbest belleği genel minimum su işaretine (global wmark_min) iterek gecikme süresine duyarlı görevlerde performans dalgalanmasına neden olabilir. Memcg genel minimum su işareti derecelendirmesi özelliği, her bir bellek cgroup'u (memcg) için farklı su işareti eşikleri atamanıza olanak tanır. Böylece gecikme süresine duyarlı görevler daha güçlü bellek koruması alır ve kaynak tüketen görevler sistemi kararsız hale getirmeden önce kısıtlanır.

Desteklenen sürümler:

İşletim Sistemi Minimum çekirdek sürümü
Alibaba Cloud Linux 2 4.19.91-18.al7
Alibaba Cloud Linux 3 5.10.134-12.al8

Çalışma mantığı

Bu özellik, kök olmayan her memcg üzerinde memory.wmark_min_adj arayüzünü kullanıma sunar. Arayüz varsayılan olarak 0 değerini alır (arayüz oluşturulduğunda üst gruptan devralınır) ve memcg kök dizininde depolanmaz. Yazdığınız değer, ilgili cgroup'un etkin minimum su işaretini genel su işareti aralığından bir yüzde sapması olarak ayarlar. Geçerli değerler: -25 ile 50 arasındadır.

  • Negatif değer (−25 ila −1) — koruma önceliğini artırır. Sapma, [0, WMARK_MIN] aralığına uygulanarak cgroup'un etkin minimum su işaretini global wmark_min değerinin altına düşürür. Bu cgroup'tan yapılan bellek geri kazanımı ertelenir; bu da gecikme süresine duyarlı görevlerdeki performans dalgalanmasını azaltır. Örnek: memory.wmark_min_adj=-25 değeri, cgroup'un WMARK_MIN değerini WMARK_MIN + (WMARK_MIN - 0) × (−25%) olarak ayarlar.

  • Pozitif değer (1 ila 50) — koruma önceliğini düşürür. Sapma, [WMARK_MIN, WMARK_LOW] aralığına uygulanarak cgroup'un etkin minimum su işaretini global wmark_min değerinin üzerine çıkarır. Bu cgroup üzerindeki bellek geri kazanım baskısı artar, hizmet kalitesi (QoS) düşer ve daha yüksek öncelikli görevlerin dışlanmasını engeller. Örnek: memory.wmark_min_adj=50 değeri, cgroup'un WMARK_MIN değerini WMARK_MIN + (WMARK_LOW - WMARK_MIN) × 50% olarak ayarlar.

Sapmalı su işareti seviyesine ulaşıldığında kısıtlama uygulanır. Kısıtlama süresi, aşırı bellek kullanımıyla doğru orantılıdır ve 1–1000 mikrosaniye aralığında değişir.

Çok düzeyli memcg hiyerarşisindeki etkin değer

Çok düzeyli bir memcg yapısında çekirdek, tüm üst düzeyleri gezerek maksimum değeri alır ve her düğüm için bir effective memory.wmark_min_adj değeri hesaplar. Varsayılan 0 değerine sahip ara düğümler bu hesaplamaya dahil edilmez.

Aşağıdaki hiyerarşiyi ele alalım:

         root
         / \
        A   D
       / \
      B   C
     / \
    E   F

Aşağıdaki tabloda yapılandırılan değerlerin her düğümdeki etkin değerlerle nasıl eşleştiği gösterilmektedir:

Düzey Yapılandırılan değer Etkin değer
A -10 -10
B -25 -10
C 0 0
D 50 50
E -25 -10
F 50 50

Bir cgroup için etkin değeri okumak üzere aşağıdaki komutu çalıştırın:

cat /sys/fs/cgroup/memory/<Memcg path>/memory.wmark_min_adj

<Memcg path> ifadesini hedef memcg'nin kök yoluyla değiştirin.

Su işareti derecelendirmesini yapılandırma

Uyarı

Memcg hizmet kalitesinde (QoS) yanlış değişiklikler yapmak ağ tıkanıklığı, artan yönlendirme gecikme süresi ve paket kaybı gibi ağ performansı sorunlarına yol açabilir. Bu durum işinizin kalitesini ve kullanılabilirliğini etkiler. İşlemi dikkatle yürütün.

Ön koşullar

  • Bu özelliği yüksek bir genel minimum su işaretiyle birlikte kullanmanızı öneririz. Örneğin, /proc/sys/vm/min_free_kbytes dosyasına yazarak global wmark_min değerini 2 GB veya üzerine ayarlayın.

  • Tüm yapılandırma komutlarını root kullanıcı olarak çalıştırın.

Gecikme süresine duyarlı görev memcg'sini yapılandırma

Etkin su işaretini düşürmek ve cgroup için bellek koruma önceliğini artırmak amacıyla negatif bir ayar değeri belirleyin.

  1. Gecikme süresine duyarlı iş yükü için bir memcg oluşturun:

    mkdir /sys/fs/cgroup/memory/test-lc
  2. Su işareti ayarını -25 olarak belirleyin:

    echo -25 > /sys/fs/cgroup/memory/test-lc/memory.wmark_min_adj

Kaynak tüketen görev memcg'sini yapılandırma

Etkin su işaretini yükseltmek ve cgroup için bellek koruma önceliğini düşürmek amacıyla pozitif bir ayar değeri belirleyin.

  1. Kaynak tüketen iş yükü için bir memcg oluşturun:

    mkdir /sys/fs/cgroup/memory/test-be
  2. Su işareti ayarını 25 olarak belirleyin:

    echo 25 > /sys/fs/cgroup/memory/test-be/memory.wmark_min_adj