全部产品
Search
文档中心

Alibaba Cloud Linux:Memcg backend asynchronous reclaim

更新时间:Jun 28, 2025

Ketika penggunaan memori yang dialokasikan oleh sistem mencapai batas atas yang ditentukan untuk sebuah memcg, sistem memicu proses pengambilan kembali memori langsung pada tingkat memcg. Proses ini bersifat sinkron dan terjadi dalam konteks alokasi memori, sehingga memengaruhi performa proses saat ini. Untuk mengatasi masalah ini, Alibaba Cloud Linux menyediakan fitur pengambilan kembali asinkron backend untuk memcg. Fitur ini didukung oleh Alibaba Cloud Linux 2 dengan versi kernel 4.19.81-17.al7 dan yang lebih baru, serta Alibaba Cloud Linux 3 dengan versi kernel 5.10.134-12.al8 dan yang lebih baru. Fitur ini membantu Anda mengelola penggunaan memori cgroup secara dinamis dan efisien, serta mencegah kehabisan sumber daya.

Peringatan
  • Alokasi memori di memcg yang ada dapat memicu secara rekursif pengambilan kembali asinkron backend dari cgroup induk.

  • Ketika pengambilan kembali asinkron backend dipicu, proses dimulai dari memcg tempat fitur tersebut dipicu dan dilakukan secara berkelanjutan dari atas ke bawah dalam hierarki cgroup.

  • Ketika antarmuka memory.high ditentukan ke nilai yang lebih kecil dari nilai antarmuka memory.limit_in_bytes, nilai-nilai antarmuka memory.wmark_high dan memory.wmark_low dihitung berdasarkan antarmuka memory.high bukan antarmuka memory.limit_in_bytes.

Deskripsi Antarmuka

Antarmuka

Deskripsi

memory.wmark_ratio

Menentukan apakah akan mengaktifkan fitur pengambilan kembali asinkron backend memcg dan watermark memori memcg yang memicu pengambilan kembali memori asinkron.

Satuan: persen dari batas memcg.

Nilai valid: 0 hingga 100.

  • Nilai default adalah 0, yang menunjukkan bahwa fitur pengambilan kembali asinkron backend memcg dinonaktifkan.

  • Ketika nilainya bukan 0, fitur pengambilan kembali asinkron backend memcg diaktifkan dan watermark diatur.

memory.wmark_high

Ketika penggunaan memori memcg melebihi nilai antarmuka ini, pengambilan kembali asinkron backend dipicu.

Antarmuka hanya-baca.

  • Nilai antarmuka ini dihitung menggunakan rumus berikut: memory.wmark_high = memory.limit_in_bytes × memory.wmark_ratio/100.

  • Ketika fitur pengambilan kembali asinkron backend memcg dinonaktifkan, nilai default antarmuka memory.wmark_high adalah nilai maksimum. Hal ini mencegah fitur pengambilan kembali asinkron backend dipicu.

  • Berkas antarmuka ini tidak disimpan di direktori root memcg.

memory.wmark_low

Ketika penggunaan memori memcg kurang dari nilai antarmuka ini, pengambilan kembali asinkron backend dihentikan.

Antarmuka hanya-baca.

  • Nilai antarmuka ini dihitung menggunakan rumus berikut: memory.wmark_low = memory.wmark_high - memory.limit_in_bytes × memory.wmark_scale_factor/10000.

  • Berkas antarmuka ini tidak disimpan di direktori root memcg.

memory.wmark_scale_factor

Mengontrol perbedaan antara nilai memory.wmark_high dan nilai memory.wmark_low.

Satuan: 0,01 persen dari batas atas memori memcg (memcg limit).

Nilai valid: 1 hingga 1000.

  • Antarmuka ini mewarisi nilai dari grup induknya ketika antarmuka dibuat. Nilai yang diwarisi adalah 50, yang menunjukkan 0,50% dari batas atas memori memcg (memcg limit). Ini juga merupakan nilai default.

  • Berkas antarmuka ini tidak disimpan di direktori root memcg.

Contoh Konfigurasi

  1. Buat file tes.

    sudo mkdir /sys/fs/cgroup/memory/test/
  2. Tentukan nilai antarmuka memory.limit_in_bytes.

    Dalam contoh ini, nilai diatur menjadi 1 GB.

    sudo sh -c 'echo 1G > /sys/fs/cgroup/memory/test/memory.limit_in_bytes'
  3. Tentukan nilai antarmuka memory.wmark_ratio.

    Dalam contoh ini, nilai diatur menjadi 95%. Watermark memori di memcg untuk fitur pengambilan kembali asinkron adalah 95% dari batas atas memori memcg (memcg limit).

    sudo sh -c 'echo 95 > /sys/fs/cgroup/memory/test/memory.wmark_ratio'
  4. Lihat nilai-nilai antarmuka di memcg.

    • Lihat nilai antarmuka memory.wmark_scale_factor.

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

      Nilai default adalah 0,50% dari batas memori memcg (memcg limit). Contoh nilai yang dikembalikan: 50.

    • Lihat nilai antarmuka memory.wmark_high.

      cat /sys/fs/cgroup/memory/test/memory.wmark_high
    • Lihat nilai antarmuka memory.wmark_low.

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