Bellek kontrol grubu (memcg) hizmet kalitesi (QoS) özelliği, Linux işletim sistemlerinde bellek kaynaklarını yönetmek ve bellek kullanımını optimize etmek için tasarlanmıştır. Kritik hizmetlerin veya uygulamaların gereksinimlerini karşılamak üzere belirli bir miktar belleği kilitlemek için memcg QoS özelliğini kullanabilirsiniz. Ayrıca, bellek tüketen görevlerden kaynaklanan sistem kararsızlığını önlemek amacıyla bellek kullanımına üst sınır belirlemek için de bu özelliği kullanabilirsiniz. Linux çekirdeğinin topluluk sürümlerinde memcg QoS özelliği yalnızca cgroup v2 arabirimini destekler. Alibaba Cloud Linux 2'de (çekirdek sürümü 4.19.91-18.al7 ve üzeri) ve Alibaba Cloud Linux 3'te ise memcg QoS özelliği cgroup v1 arabirimini de destekler.
Arka plan bilgileri
Alibaba Cloud Linux çekirdeğinde memcg QoS özelliği varsayılan olarak cgroup v1 arabiriminde etkindir. memcg QoS özelliği hakkında daha fazla bilgi için bkz. Documentation/admin-guide/cgroup-v2.rst. Çekirdek belgesine Alibaba Cloud Linux Debuginfo paketi ve kaynak kodu paketinden ulaşabilirsiniz. Daha fazla bilgi için bkz. Alibaba Cloud Linux 2'yi kullanma.
Kullanım notları
cgroup v1 arabiriminin memcg QoS özelliğini kullanırken görevlerinizi bir memcg yaprak düğümüne yerleştirmenizi öneririz. Örnek görev yolu: /sys/fs/cgroup/memory/<ara düğüm>/<yaprak düğüm>/tasks.
Arabirim açıklaması
Aşağıdaki tabloda, Alibaba Cloud Linux çekirdeğinde cgroup v1 arabiriminin memcg QoS özelliğini uygulayan arabirimler açıklanmaktadır.
Arabirim | Açıklama |
memory.min | Belirli bir miktar belleği kesin olarak kilitler. Sistemde geri kazanılacak başka bellek kalmadığında bile bu arabirim tarafından kilitlenen bellek geri kazanılamaz. Bu sayede, cgroup içindeki işlemlerin belirtilen minimum miktarda belleği elde etmesi garanti edilir ve hizmet performansının düşmesi önlenir. Bu arabirim, performans gereksinimlerini karşılamak için garantili minimum yerleşik bellek miktarına ihtiyaç duyan hizmetler için uygundur. Okuma ve yazma işlemleri şöyledir:
|
memory.low | Belirli bir miktar belleği nispeten kilitler. Sistemde geri kazanılacak başka bellek kalmadığında bu arabirim tarafından kilitlenen bellek kısmen geri kazanılabilir. Bu sayede, kaynaklar yetersiz kaldığında sistem bellek tahsisini daha makul bir şekilde ayarlayabilir. Bu arabirim, kritik olmayan iş uygulamaları ve arka plan görevleri gibi temel korumaya ihtiyaç duyan ancak mutlak koruma gerektirmeyen hizmetler için uygundur. Arabirim üzerinde aşağıdaki okuma ve yazma işlemlerini yapabilirsiniz:
|
memory.high | Bellek kullanımını sınırlar. Arabirim üzerinde aşağıdaki okuma ve yazma işlemlerini yapabilirsiniz:
|
API örnekleri
Alibaba Cloud Linux 3'te, bellek ayırma veya bellek kullanımına üst sınır belirleme işlemlerini memcg bağlama dizininde (örneğin /sys/fs/cgroup/memory/) gerçekleştirin.
Aşağıdaki komutları yalnızca root kullanıcı olarak çalıştırın.
Örnek komutlar:
-
test_memcg dizinini oluşturmak için aşağıdaki komutu çalıştırın:
mkdir /sys/fs/cgroup/memory/test_memcg -
Belirli bir miktar belleği kesin olarak kilitleyin.
-
200 MB belleği kesin olarak kilitlemek için aşağıdaki komutu çalıştırın.
echo 209715200 > /sys/fs/cgroup/memory/test_memcg/memory.min -
Sonucu görüntülemek için aşağıdaki komutu çalıştırın.
cd /sys/fs/cgroup/memory/test_memcg cat memory.min
-
-
Belirli bir miktar belleği nispeten kilitleyin.
-
Kesin olarak kilitlenen belleği 200 MB olarak ayarlamak için aşağıdaki komutu çalıştırın.
echo 209715200 > /sys/fs/cgroup/memory/test_memcg/memory.low -
Sonucu görüntülemek için aşağıdaki komutu çalıştırın.
cd /sys/fs/cgroup/memory/test_memcg cat memory.low
-
-
Bellek kullanımına üst sınır belirtin.
-
Bellek kullanımına ilişkin üst sınırı 1 GB olarak ayarlamak için aşağıdaki komutu çalıştırın.
echo 1073741824 > /sys/fs/cgroup/memory/test_memcg/memory.high -
Çıktıyı görüntülemek için aşağıdaki komutu çalıştırın.
cd /sys/fs/cgroup/memory/test_memcg cat memory.high
-