Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Linux:THP geri kazanımı

Son Güncelleme:Oct 08, 2026

THP geri kazanımı, Şeffaf Büyük Sayfaları (THP) alt sayfalara bölerek ve sıfır alt sayfaları geri kazanarak bellek şişmesinden kaynaklanan yetersiz bellek (OOM) hatalarını önler. Bu konuda, bellek kontrol gruplarında THP geri kazanımını yapılandırmak için kullanılan arayüzler ile bu özelliğin nasıl etkinleştirileceği ve test edileceği açıklanmaktadır.

Arka plan

Linux belleği sayfalar halinde yönetir. Standart sayfalar 4 KiB boyutundadır. THP'ler ise Çeviri Yan Bakış Arabelleği (TLB) kayıplarını azaltmak ve uygulama performansını artırmak amacıyla çekirdek tarafından dinamik olarak ayrılan 2 MiB veya 1 GiB gibi daha büyük bloklardır.

THP'ler bellek şişmesine neden olabilir. Bir uygulama yalnızca 8 KiB istediğinde çekirdek 2 MiB'lik bir THP ayırabilir. Bu THP istenen iki adet 4 KiB'lik sayfanın yanı sıra 510 adet sıfır dolu 4 KiB'lik sayfadan (sıfır sayfalar) oluşur. Bu durum yerleşik küme boyutunu (RSS) boşa harcar ve OOM riskini artırır.

THP geri kazanımı THP'leri alt sayfalara bölerek ve sıfır alt sayfaları geri kazanarak bu sorunu çözer. THP geri kazanımını etkinleştirmenin bellek performansını düşürebileceğini unutmayın.

Arayüzler

Aşağıdaki arayüzler THP geri kazanımı davranışını kontrol eder.

Arayüz Açıklama
memory.thp_reclaim Bir bellek kontrol grubu için THP geri kazanımını etkinleştirir veya devre dışı bırakır. Geçerli değerler: reclaim (etkinleştir), swap (gelecekteki kullanım için ayrılmıştır), disable (varsayılan). Bellek şişmesi OOM hatalarına neden oluyorsa reclaim seçeneğini etkinleştirin; bunun bellek performansını düşürebileceğini unutmayın.
memory.thp_reclaim_stat Bir bellek kontrol grubu için THP geri kazanımı durumunu sorgular. Artan NUMA düğüm kimliği sırasına göre (node0, node1, ...) her NUMA düğümü için üç sayaç bildirir: queue_length (geri kazanım kuyruğunda bulunan THP sayısı), split_hugepage (toplam bölünen THP sayısı), reclaim_subpage (geri kazanılan toplam sıfır alt sayfa sayısı).
memory.thp_reclaim_ctrl THP geri kazanımının nasıl tetikleneceğini kontrol eder. Parametreler: threshold (geri kazanım tetiklenmeden önce bir THP'de bulunabilecek maksimum sıfır alt sayfa sayısı; varsayılan: 16), reclaim (salt yazılır; geri kazanımı hemen tetikler). Sıfır ağırlıklı bir THP'nin ne olarak nitelendirileceğini kontrol etmek için threshold değerini ayarlayın. Daha düşük değerler geri kazanımı daha agresif tetiklerken daha yüksek değerler geri kazanım sıklığını azaltır.
/sys/kernel/mm/transparent_hugepage/reclaim Grup başına yapılan ayarları geçersiz kılan genel arayüz. Geçerli değerler: memcg (her cgroup kendi memory.thp_reclaim yapılandırmasını kullanır; varsayılan), reclaim (tüm cgroup'lar için geri kazanımı zorla etkinleştirir), swap (gelecekteki kullanım için ayrılmıştır), disable (tüm cgroup'lar için geri kazanımı zorla devre dışı bırakır). reclaim veya disable olarak ayarlandığında bu arayüz grup başına memory.thp_reclaim yapılandırmalarına göre önceliklidir. Genel arayüz tekrar memcg olarak sıfırlandığında grup başına yapılandırmalar korunur ve yeniden etkili olur.

Desteklenen çekirdek sürümleri

THP geri kazanımı aşağıdaki Alibaba Cloud Linux çekirdek sürümlerinde desteklenir:

  • Alibaba Cloud Linux 2: çekirdek 4.19.91-24.al7 veya üzeri

  • Alibaba Cloud Linux 3: çekirdek 5.10.134-15.al8 veya üzeri

Çekirdek sürümünüzü kontrol etmek için şunu çalıştırın:

uname -r

THP geri kazanımını yapılandırma

Aşağıdaki adımlar test adlı bir bellek kontrol grubu için THP geri kazanımını yapılandırır.

Ön koşullar

Başlamadan önce şunları doğrulayın:

Yordam

  1. test adında bir bellek kontrol grubu oluşturun:

    sudo mkdir /sys/fs/cgroup/memory/test/
  2. test için THP geri kazanımını etkinleştirin:

    sudo sh -c 'echo reclaim > /sys/fs/cgroup/memory/test/memory.thp_reclaim'
  3. THP geri kazanımının etkin olduğunu doğrulayın:

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

    Etkin ayar köşeli parantez içinde gösterilir. Aşağıdaki çıktı THP geri kazanımının etkin olduğunu onaylar:

    [reclaim] swap disable
  4. (İsteğe bağlı) Genel arayüzü kullanarak grup başına ayarları geçersiz kılın.

    Tüm bellek kontrol grupları için THP geri kazanımını zorla etkinleştirmek için:

    sudo sh -c 'echo reclaim > /sys/kernel/mm/transparent_hugepage/reclaim'

    Tüm bellek kontrol grupları için THP geri kazanımını zorla devre dışı bırakmak için:

    sudo sh -c 'echo disable > /sys/kernel/mm/transparent_hugepage/reclaim'
    Not: Genel arayüz reclaim veya disable olarak ayarlandığında memory.thp_reclaim arayüzüne göre önceliklidir. Grup başına memory.thp_reclaim yapılandırmaları etkilenmez.
  5. test için sıfır alt sayfa eşik değerini ayarlayın.

    threshold parametresi THP geri kazanımı tetiklenmeden önce bir THP'nin içerebileceği maksimum sıfır alt sayfa sayısını tanımlar. Varsayılan değer 16 değeridir. Bu değeri 32 olarak değiştirmek için:

    sudo sh -c 'echo "threshold 32" > /sys/fs/cgroup/memory/test/memory.thp_reclaim_ctrl'

    Bu ayarla bir THP 32'den fazla sıfır alt sayfa içerdiğinde THP geri kazanımı tetiklenir.

  6. Sıfır alt sayfa geri kazanımını manuel olarak tetikleyin.

    Not: memory.thp_reclaim_ctrl içindeki reclaim parametresi salt yazılırdır. Bu arayüzde cat komutunu çalıştırmak reclaim ayarını döndürmez.

    Yalnızca test için geri kazanımı tetiklemek için:

    sudo sh -c 'echo "reclaim 1" > /sys/fs/cgroup/memory/test/memory.thp_reclaim_ctrl'

    test ve tüm alt kontrol grupları için geri kazanımı özyinelemeli olarak tetiklemek için:

    sudo sh -c 'echo "reclaim 2" > /sys/fs/cgroup/memory/test/memory.thp_reclaim_ctrl'

    THP geri kazanımı ayrıca şu durumlarda otomatik olarak tetiklenir:

  7. test için THP geri kazanımı durumunu kontrol edin:

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

    Örnek çıktı:

    queue_length        14
    split_hugepage     523
    reclaim_subpage 256207
    • queue_length 14: Geri kazanım kuyruğunda şu anda 14 THP bulunmaktadır.

    • split_hugepage 523: 523 THP bölünmüştür.

    • reclaim_subpage 256207: 256.207 sıfır alt sayfa geri kazanılmıştır.

THP geri kazanımı özelliğini test etme

Aşağıdaki örnek C kodu 10 THP'si sıfır alt sayfa içeren 1 GiB bellek (512 THP) ayırır. THP geri kazanımı etkin ve devre dışı iken bellek davranışını karşılaştırmak için bu kodu kullanın.

  1. test için bellek sınırını 1 GiB olarak ayarlayın:

    sudo sh -c 'echo 1G > /sys/fs/cgroup/memory/test/memory.limit_in_bytes'

    Değeri doğrulayın:

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

    Beklenen çıktı şöyledir:

    1073741824
  2. Testi izole etmek için memcg arka uç zaman uyumsuz geri kazanım özelliğini devre dışı bırakın:

    sudo sh -c 'echo 0 > /sys/fs/cgroup/memory/test/memory.wmark_ratio'

    Bu özellik hakkında ayrıntılı bilgi için bkz. Memcg arka uç zaman uyumsuz geri kazanma.

  3. Örnek C kodunu THP geri kazanımı etkin ve ardından devre dışı olacak şekilde derleyip çalıştırın. Sonuçları karşılaştırın.

    Derleme:

    gcc -o test <test.c>

    <test.c> ifadesini gerçek kaynak dosya adınızla değiştirin.

    // Allocates 1 GiB (512 THPs). The first 10 THPs contain zero subpages.
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    
    #define HUGEPAGE_SIZE 4096 * 512
    
    int main()
    {
        int i, thp = 512;
        char *addr;
        posix_memalign((void **)&addr, HUGEPAGE_SIZE, HUGEPAGE_SIZE * thp);
    
        for (i = 0; i < 10; i++) {
            memset(addr, 0xc, HUGEPAGE_SIZE >> 1);
            addr += HUGEPAGE_SIZE;
        }
    
        for (; i < thp; i++) {
            memset(addr, 0xc, HUGEPAGE_SIZE);
            addr += HUGEPAGE_SIZE;
        }
    
        pause();
        return 0;
    }

    Ayrı bir terminalde OOM hatalarını izleyin:

    dmesg -wH

    Beklenen sonuçlar:

    • THP geri kazanımı etkin: Özellik ayrılan THP'leri böler ve sıfır alt sayfaları geri kazanarak bellek kullanımını azaltır ve OOM hatalarını önler.

    • THP geri kazanımı devre dışı: THP'ler bölünmez ve sıfır alt sayfalar geri kazanılmaz. OOM hataları oluşabilir. Çekirdek günlüklerinde yetersiz bellek ve sonlandırılabilecek işlemlerin ayrıntıları gösterilir.

Sonraki adımlar