Versi kernel 4.19.91-18.al7 untuk Alibaba Cloud Linux 2 dan versi kernel 5.10.60-9.al8 untuk Alibaba Cloud Linux 3 mendukung fitur kebijakan prioritas memcg out of memory (OOM). Topik ini menjelaskan antarmuka yang disediakan untuk fitur kebijakan prioritas memcg OOM serta cara menggunakannya.
Informasi latar belakang
Pada sistem kernel yang ada, jika memori tidak mencukupi, kernel melintasi cgroups dan mengambil kembali memori dari cgroups yang menggunakan banyak memori. Jika memori tidak dapat diambil kembali dari sebuah cgroup, kesalahan OOM dilaporkan dan semua tugas dalam cgroup dihentikan. Hal ini berdampak pada bisnis penting dalam cgroup. Untuk mencegah memori yang digunakan oleh cgroups dengan bisnis penting diambil kembali, serta memastikan bahwa tugas-tugas dalam cgroups tersebut tetap berjalan sehingga kernel dapat mengambil kembali memori dari cgroups lain atau memicu kesalahan OOM, Alibaba Cloud Linux menyediakan fitur kebijakan prioritas memcg OOM.
Saat fitur ini diaktifkan, sistem kernel menentukan prioritas cgroups dan memicu kesalahan OOM pada cgroups dengan prioritas rendah.
Antarmuka
| Antarmuka | Deskripsi |
memory.use_priority_oom | Antarmuka ini digunakan untuk menentukan apakah akan mengaktifkan fitur kebijakan prioritas memcg OOM. Nilai valid: 0 dan 1. Prioritas cgroup induk tidak diwariskan oleh cgroup anaknya. Nilai default: 0.
|
memory.priority | Antarmuka ini menyediakan 13 prioritas memcg OOM untuk mendukung bisnis dengan tingkat kepentingan yang berbeda. Nilai valid: 0 hingga 12. Semakin besar nilai, semakin tinggi prioritasnya. Prioritas cgroup induk tidak diwariskan oleh cgroup anaknya. Nilai default: 0.
|
Contoh konfigurasi antarmuka
memory.use_priority_oom dan atur prioritas OOM dengan menentukan antarmuka memory.priority root
/ \
A B
/ \ / \
C D E F. Berikut adalah deskripsi nilai antarmuka yang diatur untuk cgroup anak:- A: 10
- B: 8
- C: 5
- D: 6
- E: 7
- F: 8
- Hubungkan ke instance ECS.
Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk terhubung ke instance Linux melalui SSH.
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_oomcd /sys/fs/cgroup/memory/A echo 10 > memory.priority cd /sys/fs/cgroup/memory/B echo 8 > memory.prioritymkdir /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_oomcd /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
Untuk memicu kesalahan OOM saat akun root digunakan, sistem memulai permintaan iteratif dari A dan B. Prioritas B lebih rendah daripada A, sehingga sistem terus memeriksa E dan F di bawah B. Sistem menentukan bahwa E memiliki prioritas terendah di antara cgroup anak, dan memicu kesalahan OOM pada E.