Alibaba Cloud Linux 2, 4.19.91-18.al7 çekirdek sürümünden ve Alibaba Cloud Linux 3, 5.10.60-9.al8 çekirdek sürümünden itibaren bellek alt sistemi (memcg) bellek yetersizliği (OOM) öncelik ilkesi özelliğini destekler. Bu konu, memcg OOM öncelik ilkesi özelliğinin arayüzlerini açıklar ve bir yapılandırma örneği sunar.
Arka plan bilgileri
Mevcut çekirdek sistemlerinde bellek baskısı yüksek olduğunda çekirdek, en çok bellek tüketen cgroup'lardan bellek geri kazanmak için cgroup'ları tarar. Geri kazanım başarısız olursa çekirdek bir bellek yetersizliği (OOM) olayını tetikleyebilir ve ilgili cgroup içindeki tüm görevleri sonlandırabilir. Bu durum, cgroup içinde çalışan kritik hizmetleri ciddi şekilde etkileyebilir. Bu nedenle, kritik hizmetler içeren cgroup'ların belleğinin geri kazanılmasını engellemek veya bu cgroup'lar içindeki görevlerin OOM olaylarından sağ çıkmasını sağlamak büyük önem taşır. Böylece çekirdek, bellek geri kazanımı veya OOM sonlandırması için başka cgroup'ları seçebilir.
Bu sorunu çözmek için Alibaba Cloud Linux, memcg bellek yetersizliği (OOM) öncelik yapılandırma özelliğini içerir. Bir OOM işlemi sırasında bu özellik, cgroup önceliklerini belirler ve düşük öncelikli bir cgroup'u işlem için seçer.
Memcg OOM öncelik arayüzünün işlevselliği
Arayüz | Açıklama |
| Memcg OOM öncelik ilkesi özelliğinin etkinleştirilip etkinleştirilmeyeceğini belirtir. Geçerli değerler 0 ve 1'dir. Bu ayar alt cgroup'lar tarafından devralınmaz. Varsayılan değer 0'dır.
|
| Farklı öneme sahip işleri desteklemek için memcg önceliğini ayarlar. 13 öncelik düzeyi bulunur. Geçerli değerler 0 ile 12 arasındadır. Daha büyük bir değer daha yüksek öncelik anlamına gelir. Bu ayar alt cgroup'lar tarafından devralınmaz. Varsayılan değer 0'dır.
|
Arayüz yapılandırma örneği
Bu örnek, A, B, C, D, E ve F olmak üzere altı cgroup alt düğümünün nasıl oluşturulacağını gösterir. memory.use_priority_oom arayüzünü etkinleştirebilir ve memory.priority arayüzünü kullanarak OOM önceliklerini ayarlayabilirsiniz.
root
/ \
A B
/ \ / \
C D E F
Her düzeydeki arayüz değerleri aşağıdaki gibi eşlenir:
A: 10
B: 8
C: 5
D: 6
E: 7
F: 8
-
ECS örneğine uzaktan bağlanın.
Daha fazla bilgi için bkz. Workbench kullanarak bir Linux örneğine bağlanma.
-
A ve B adlı iki cgroup düğümü oluşturmak ve memcg OOM öncelik ilkesi özelliğini etkinleştirmek için aşağıdaki komutları çalıştırın.
mkdir /sys/fs/cgroup/memory/A cd /sys/fs/cgroup/memory/A echo 1 >memory.use_priority_oom mkdir /sys/fs/cgroup/memory/B cd /sys/fs/cgroup/memory/B echo 1 >memory.use_priority_oom -
A düğümü için memcg OOM önceliğini 10, B düğümü için ise 8 olarak ayarlamak için aşağıdaki komutları çalıştırın.
cd /sys/fs/cgroup/memory/A echo 10 > memory.priority cd /sys/fs/cgroup/memory/B echo 8 > memory.priority -
A düğümü altında C ve D alt düğümlerini, B düğümü altında ise E ve F alt düğümlerini oluşturmak ve memcg OOM öncelik ilkesi özelliğini etkinleştirmek için aşağıdaki komutları çalıştırın.
mkdir /sys/fs/cgroup/memory/A/C cd /sys/fs/cgroup/memory/A/C echo 1 >memory.use_priority_oom mkdir /sys/fs/cgroup/memory/A/D cd /sys/fs/cgroup/memory/A/D echo 1 >memory.use_priority_oom mkdir /sys/fs/cgroup/memory/B/E cd /sys/fs/cgroup/memory/B/E echo 1 >memory.use_priority_oom mkdir /sys/fs/cgroup/memory/B/F cd /sys/fs/cgroup/memory/B/F echo 1 >memory.use_priority_oom -
C, D, E ve F alt düğümlerinin memcg OOM önceliklerini sırasıyla 5, 6, 7 ve 8 olarak ayarlamak için aşağıdaki komutları çalıştırın.
cd /sys/fs/cgroup/memory/A/C echo 5 > memory.priority cd /sys/fs/cgroup/memory/A/D echo 6 > memory.priority cd /sys/fs/cgroup/memory/B/E echo 7 > memory.priority cd /sys/fs/cgroup/memory/B/F echo 8 > memory.priority
Kök hesap kullanıldığında bir OOM hatasını tetiklemek için sistem A ve B'den başlayarak yinelemeli bir sorgu başlatır. B'nin önceliği A'dan daha düşük olduğu için sistem B altındaki E ve F'yi sorgulamaya devam eder. Sistem, alt cgroup'lar arasında en düşük önceliğe sahip olanın E olduğunu belirler ve E üzerinde bir OOM hatası tetikler.