Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Linux:Memcg backend asynchronous reclaim

Son Güncelleme:Oct 08, 2026

Bir memcg'nin bellek kullanımı sınırına ulaştığında çekirdek doğrudan bellek geri kazanımını tetikler. Bu işlem, bellek ayırma yolunda çalışan ve mevcut süreci durduran eşzamanlı bir işlemdir. Bu gecikmeyi ortadan kaldırmak için Alibaba Cloud Linux, memcg'ler için arka uç asenkron geri kazanım özelliği sunar. Çekirdek, kullanım zorunlu sınıra ulaşmadan önce belleği arka planda geri kazanır; böylece süreçleriniz geri kazanımın tamamlanmasını beklerken bloke olmaz.

Bu özellik aşağıdaki sürümlerde kullanılabilir:

  • Çekirdek sürümü 4.19.81-17.al7 ve üzeri olan Alibaba Cloud Linux 2

  • Çekirdek sürümü 5.10.134-12.al8 ve üzeri olan Alibaba Cloud Linux 3

Uyarı

Bu özelliği etkinleştirmeden önce aşağıdaki davranışları göz önünde bulundurun:

  • Mevcut bir memcg'deki bellek ayırma işlemi, üst cgroup'ta özyinelemeli olarak arka uç asenkron geri kazanımı tetikleyebilir.

  • Geri kazanım, tetiklendiği memcg'de başlar ve cgroup hiyerarşisi boyunca yukarıdan aşağıya doğru ilerler.

  • memory.high değeri memory.limit_in_bytes değerinden küçük olarak ayarlandığında, memory.wmark_high ve memory.wmark_low değerleri memory.limit_in_bytes yerine memory.high baz alınarak hesaplanır.

Çalışma mekanizması

Bu özellik su işareti tabanlı bir mekanizma sunar. Yüksek su işaretini (memory.wmark_high) tanımlamak için memory.wmark_ratio parametresini memcg sınırının bir yüzdesi olarak ayarlayın. Bellek kullanımı bu su işaretini aştığında çekirdek, belleği arka planda asenkron olarak geri kazanmaya başlar. Kullanım, yapılandırılabilir bir ölçeklendirme faktörüyle memory.wmark_high değerinden türetilen düşük su işaretinin (memory.wmark_low) altına düştüğünde geri kazanım durur.

Bu yaklaşım bir tampon bölge oluşturur. Geri kazanım, zorunlu sınıra ulaşmadan önce arka planda çalışır ve doğrudan geri kazanımın neden olduğu ani duraksamaları önler.

Arayüz referansı

memory.wmark_ratio

Okuma-yazma. Özelliği etkinleştirir ve yüksek su işaretini memcg sınırının bir yüzdesi olarak ayarlar.

  • Geçerli değerler: 0–100

  • Varsayılan: 0 (özellik devre dışı)

  • Sıfır dışı bir değer ayarlandığında özellik etkinleşir ve memory.wmark_high yeniden hesaplanır.

memory.wmark_high

Salt okunur. Arka uç asenkron geri kazanımını tetikleyen bellek kullanımı eşiğidir.

  • Formül: memory.wmark_high = memory.limit_in_bytes x memory.wmark_ratio / 100

  • Özellik devre dışı bırakıldığında (memory.wmark_ratio = 0), tetiklemeyi önlemek için bu değer mümkün olan en yüksek değere ayarlanır.

  • Memcg kök dizininde bulunmaz.

memory.wmark_low

Salt okunur. Arka uç asenkron geri kazanımının durduğu bellek kullanımı eşiğidir.

  • Formül: memory.wmark_low = memory.wmark_high - memory.limit_in_bytes x memory.wmark_scale_factor / 10000

  • Memcg kök dizininde bulunmaz.

memory.wmark_scale_factor

Okuma-yazma. memory.wmark_high ile memory.wmark_low arasındaki boşluğu kontrol eder.

  • Birim: Memcg sınırının %0,01'i

  • Geçerli değerler: 1–1000

  • Varsayılan: 50 (memcg sınırının %0,50'si); memcg oluşturulduğunda üst cgroup'tan miras alınır

  • Memcg kök dizininde bulunmaz.

Arka uç asenkron geri kazanımını etkinleştirme

Aşağıdaki örnek, bir test memcg'si oluşturur, 1 GB bellek sınırı ayarlar, %95 su işareti ile özelliği etkinleştirir ve ortaya çıkan arayüz değerlerini doğrular.

  1. Bir test memcg'si oluşturun.

    sudo mkdir /sys/fs/cgroup/memory/test/
  2. Bellek sınırını 1 GB olarak ayarlayın.

    sudo sh -c 'echo 1G > /sys/fs/cgroup/memory/test/memory.limit_in_bytes'
  3. memory.wmark_ratio değerini 95 olarak ayarlayarak arka uç asenkron geri kazanımını etkinleştirin. Bu işlem, memory.wmark_high değerini memcg sınırının %95'ine yapılandırır.

    sudo sh -c 'echo 95 > /sys/fs/cgroup/memory/test/memory.wmark_ratio'
  4. Yapılandırmayı doğrulamak için arayüz değerlerini okuyun.

    memory.wmark_scale_factor değerini okuyun. Varsayılan miras alınan değer 50'dir ve bu, memcg sınırının %0,50'sini temsil eder.

    cat /sys/fs/cgroup/memory/test/memory.wmark_scale_factor

    Yüksek su işaretini doğrulamak için memory.wmark_high değerini okuyun.

    cat /sys/fs/cgroup/memory/test/memory.wmark_high

    Düşük su işaretini doğrulamak için memory.wmark_low değerini okuyun.

    cat /sys/fs/cgroup/memory/test/memory.wmark_low