All Products
Search
Document Center

Container Service for Kubernetes:Diagnosis masalah memori kontainer dengan SysOM

Last Updated:Aug 21, 2026

Untuk mengatasi keterbatasan visibilitas di lapisan container engine, SysOM menyediakan pemantauan kontainer tingkat kernel OS yang meningkatkan observabilitas terhadap masalah memori dan mendukung migrasi kontainer. Topik ini menjelaskan cara menggunakan SysOM untuk mendiagnosis masalah memori kontainer, termasuk rincian working set yang lebih detail dibandingkan metrik standar.

Prasyarat

Pastikan Anda telah:

Penagihan

Saat diaktifkan, ack-sysom-monitor mengirimkan metrik pemantauan ke Prometheus Service for Alibaba Cloud. Metrik ini ditagih sebagai Custom Metrics dan menimbulkan biaya tambahan.

Tinjau ikhtisar penagihan untuk Prometheus Service for Alibaba Cloud sebelum mengaktifkan fitur ini. Biaya bergantung pada ukuran kluster dan jumlah aplikasi. Gunakan Resource Consumption untuk memantau penggunaan.

Konsep utama

Komponen memori kontainer

ACK menyediakan pemantauan kontainer tingkat kernel OS untuk melacak penggunaan memori secara akurat dan mencegah masalah OOM.

Memori kontainer terdiri dari tiga kategori:

Category Subcategory Description
Application memory Anonymous memory: heap, stack, dan segmen data suatu proses, dialokasikan melalui panggilan sistem brk dan mmap Memori yang digunakan oleh aplikasi yang sedang berjalan
File cache: data yang di-cache untuk I/O file. Cache yang sering diakses (ActiveFileCache) tidak mudah direklaim.
Buffers: metadata untuk perangkat blok atau sistem file
HugeTLB: memori yang dialokasikan melalui HugePages
Kernel memory Slab: pool memori untuk cache objek kernel Memori yang digunakan oleh kernel OS
Vmalloc: mengalokasikan blok memori virtual besar
allocpage: mengalokasikan memori lokal
Others: kernel stack, page table, dan memori yang dicadangkan
Free memory — Memori yang tidak terpakai dan tersedia

Working set vs. RSS

Kubernetes melacak dua metrik memori utama:

  • Working set — memori yang aktif digunakan oleh kontainer: working set = inactive_anon + active_anon + active_file. OOM killer dan Kubernetes menggunakan nilai ini untuk menentukan apakah kontainer harus dievakuasi atau dihentikan.

  • RSS (resident set size) — memori fisik yang dipetakan ke ruang alamat kontainer, tidak termasuk file cache. RSS mencerminkan memori aplikasi aktual tetapi tidak mencakup memori cache yang dihitung Kubernetes terhadap batas memori.

Karena Kubernetes menggunakan working set untuk keputusan evakuasi, file cache dapat diam-diam meningkatkan nilai tersebut dan memicu OOM kill meskipun memori aplikasi stabil. SysOM memecah working set menjadi komponen-komponennya untuk mengidentifikasi jenis memori yang menyebabkan masalah.

Cara kerja

SysOM menampilkan metrik tingkat kernel OS pada dasbor Pemantauan Prometheus di Konsol ACK, mengelompokkan memori Pod ke dalam komponen working set untuk melacak penggunaan tinggi ke jenis memori tertentu.

Gunakan rumus berikut saat mendiagnosis masalah memori:

  • Total pod memory = RSS + Cache ≈ inactive_anon + active_anon + inactive_file + active_file

  • working set = inactive_anon + active_anon + active_file

Temukan dan perbaiki masalah memori kontainer

Langkah 1: Buka dasbor SysOM

  1. Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Operations > Prometheus Monitoring.

  3. Pada halaman Prometheus Monitoring, klik tab SysOM, lalu klik SysOM - Pods.

Langkah 2: Identifikasi memory black hole

  1. Di bagian Pod Memory Monitor, terapkan rumus total memori Pod untuk memecah memori menjadi cache dan RSS. Tinjau proporsi cache (active_file, inactive_file, shmem) dan RSS (active_anon, inactive_anon). Pada contoh ini, inactive_anon mendominasi.

    image

  2. Di bagian Pod Resource Analysis, gunakan top untuk mengidentifikasi Pod dengan konsumsi InactiveAnon tertinggi. Pada contoh ini, arms-prom memiliki konsumsi tertinggi.

    image.png

  3. Di bagian Pod Memory Details, lihat komposisi memori Pod yang telah diidentifikasi. Komponen-komponennya mencakup Pod Cache, InactiveFile (cache file tidak aktif), InactiveAnon (memori anonim tidak aktif), dan dirty memory (modifikasi yang belum ditulis). Gunakan rincian ini untuk mengidentifikasi memory black hole.

    image.png

Langkah 3: Selidiki penggunaan file cache

Di bagian Pod File Cache, identifikasi penyebab tingginya memori cache.

File cache yang tidak dapat direklaim meningkatkan working set, menjadi memory black hole yang dihitung terhadap batas memori Pod dan dapat memicu evakuasi atau OOM kill tanpa peningkatan memori aplikasi.

image.png

Langkah 4: Perbaiki memory black hole

Setelah mengidentifikasi memory black hole, atasi masalah tersebut dengan penjadwalan detail halus ACK. Lihat Enable container memory QoS.

Langkah selanjutnya