Container Intelligence Service menyediakan fitur diagnostik memori untuk membantu mengidentifikasi masalah umum terkait memori dalam kluster Container Service for Kubernetes (ACK), seperti kebocoran memori, fragmentasi memori, dan kesalahan out of memory (OOM). Hasil diagnostik disajikan dalam bentuk grafik dan tabel untuk menunjukkan penggunaan memori sistem serta mendukung pekerjaan operasional Anda. Topik ini menjelaskan tentang diagnostik memori.
Diagnostik memori mencakup gambaran memori, analisis memori, dan analisis OOM. Anda dapat melihat penggunaan memori pada node dan pod.
Item diagnostik dapat bervariasi berdasarkan konfigurasi kluster. Item yang ditampilkan akan sesuai dengan halaman diagnostik yang berlaku.
Saat menggunakan fitur diagnostik, ACK menjalankan program pengumpulan data pada setiap node dalam kluster dan mengumpulkan hasil diagnostik. Informasi yang dikumpulkan mencakup versi sistem, status beban, Docker, kubelet, serta informasi kesalahan utama dalam log sistem. ACK tidak mengumpulkan informasi bisnis atau data sensitif.
Gambaran Memori
Fitur gambaran memori menampilkan item diagnostik terkait risiko memori. Tabel berikut menjelaskan item diagnostik tersebut.
Item Diagnostik | Deskripsi |
Memori Bocor | Memeriksa kebocoran memori kernel sistem di Slab, Vmalloc, dan sistem buddy (allocpage). |
Penggunaan Memori | Menampilkan utilisasi memori sistem. |
Memcg | Mengevaluasi apakah memori cgroups yang tidak dilepaskan mengganggu kinerja sistem dan menyebabkan kesalahan statistik. |
Fragmentasi Memori | Memeriksa fragmentasi memori, yang mengganggu kinerja sistem. |
THPZeroPage | Mengevaluasi rasio pemborosan THP. |
Informasi penggunaan memori sistem, termasuk memori kernel, memori aplikasi dalam mode pengguna, dan memori bebas, ditampilkan dalam grafik.
Memori kernel (kernel): total memori yang digunakan oleh kernel sistem operasi.
Memori aplikasi (app): total memori yang digunakan oleh program dalam mode pengguna.
Memori bebas (free): jumlah memori sistem yang tersedia.
Istilah
Istilah | Deskripsi |
kebocoran memori | Kebocoran memori mengacu pada pelepasan sumber daya memori yang dialokasikan secara dinamis ke program, yang menyebabkan peningkatan utilisasi memori sistem. Kebocoran memori dapat mengganggu kinerja program atau bahkan menyebabkan crash sistem. |
utilisasi memori | Utilisasi Memori = (Total memori - Memori bebas) × 100/Total memori. File cache adalah memori bebas, yang tidak mempengaruhi utilisasi memori. Sistem dapat mereklaim dan menggunakan kembali file cache kapan saja. |
Memcg yang tidak dilepaskan | Memory cgroups yang tidak dilepaskan karena pengecualian sistem. Memory cgroups ini dapat mengganggu kinerja sistem. |
fragmentasi memori | Fragmentasi memori mengacu pada kegagalan memenuhi permintaan alokasi memori kontigu karena blok memori bebas yang kontigu terlalu kecil setelah sistem berjalan lama. Kegagalan ini menunda alokasi memori dan menyebabkan jitter bisnis. |
rasio pemborosan THP | Transparent Enormous Pages (THPs) adalah halaman besar yang ukurannya 2 MiB atau 1 GiB di kernel. Ukuran subhalaman adalah 4 KiB. Saat THPs diaktifkan, kernel secara dinamis mengalokasikan THPs untuk mengurangi Translation Lookaside Buffer (TLB) misses dan meningkatkan kinerja aplikasi. Namun, THPs dapat menyebabkan pembengkakan memori. Kernel mengalokasikan blok memori 2 MiB sebagai THPs, yang setara dengan 512 subhalaman. Ini menyebabkan pemborosan memori dan menghasilkan overcommitment memori. Pembengkakan memori dapat menyebabkan kesalahan OOM. Sebagai contoh, ketika aplikasi yang hanya meminta 8 KiB memori (2 subhalaman) diberi 2-MiB THP, 510 subhalaman sisanya adalah halaman nol, yang mengakibatkan pemborosan resident set size (RSS) dan menyebabkan kesalahan OOM. Rasio pemborosan THP = Jumlah THP nol × 100%/Jumlah total THP |
sistem buddy | Sistem buddy adalah algoritma yang digunakan oleh kernel Linux untuk mengelola halaman memori. Ini membagi halaman memori menjadi 11 grup. Dalam banyak kasus, halaman memori berukuran 4 KB. Sistem buddy mengelola jumlah halaman memori dalam setiap blok memori dalam penambahan pangkat dua, seperti 4 KB, 8 KB, 16 KB, 32 KB……4 MB. |
Slab | Alokator memori yang mengalokasikan potongan kecil memori berdasarkan sistem buddy Linux. |
Vmalloc | Alokator memori yang menggunakan pemetaan nonlinier berdasarkan sistem buddy Linux. |
filecache | Saat Linux membaca atau menulis file, ia menyimpan konten file dalam memori. Dengan cara ini, program dapat langsung membaca atau menulis konten dalam memori, yang jauh lebih cepat daripada membaca atau menulis file. |
memori anonim | Memori anonim dialokasikan secara dinamis ke heap dan stack proses melalui new, malloc, atau mmap. Memori anonim tidak didukung oleh sistem file. |
memori bersama | Blok memori yang dibagikan oleh dua atau lebih proses untuk komunikasi. |
tmpfs | Sistem file sementara Linux berbasis memori. Sistem file menyimpan konten yang dibaca atau ditulisnya dalam memori. |
enormoustlb | Jumlah memori yang dikonsumsi oleh halaman besar dalam sistem file. |
Memori Kernel
Umumnya, kebocoran memori terjadi jika penggunaan memori Sunreclaim dan sistem buddy abnormal. Perhatikan penggunaan memori mereka dalam mode kernel.
Metrik | Deskripsi |
Sreclaimable | Memori yang dapat direklaim oleh Slab. |
Sunreclaim | Memori yang tidak dapat direklaim oleh Slab. |
PageTables | Memori yang ditempati oleh tabel halaman kernel. |
Vmalloc | Memori yang dialokasikan dengan memanggil fungsi Vmalloc. |
KernelStack | Total memori yang ditempati oleh heap dan stack proses. |
AllocPages | Memori yang dialokasikan dari sistem buddy dengan memanggil fungsi seperti alloc_pages. Memori ini tidak dapat diambil kembali menggunakan file node apa pun. Penggunaan memori yang berlebihan menyebabkan lubang hitam. |
Memori Aplikasi
Perhatikan memori anonim, memori bersama, dan file cache saat menganalisis penggunaan memori aplikasi dalam mode pengguna.
Metrik | Deskripsi |
filecache | File cache yang dapat direklaim dengan melakukan drop caches. |
anon | Memori anonim yang ditempati oleh heap dan stack program. Jika sejumlah besar memori anonim ditempati, Anda perlu memeriksa kebocoran memori dalam proses dan memeriksa apakah THP diaktifkan. |
mlock | Memori yang dikunci oleh sistem. |
enormous | Memori yang ditempati oleh halaman besar. |
buffer | Memori yang ditempati oleh metadata perangkat blok dan sistem file. |
shmem | Memori bersama (tmpfs). Jika file tmpfs tidak dihapus setelah proses dihentikan atau file tmpfs dihapus sementara file masih terbuka, terjadi kebocoran memori bersama. |
Analisis Memori
Analisis memori mencakup analisis memori proses dan analisis memori pod.
Memori Proses
Informasi penggunaan memori ditampilkan per proses, termasuk memori anonim, file cache, dan memori bersama.
Memori Pod
Fitur analisis memori pod memungkinkan Anda melihat file yang menempati file cache dan memori bersama kontainer serta pod, rasio cache aktif, dan rasio cache tidak aktif.
Item Diagnostik | Deskripsi |
Pod | Nama pod. |
Kontainer | Nama kontainer. |
File | Path lengkap file, yang mencakup nama file. |
Cache | File cache (filecache) yang ditempati oleh file. |
Container Cache | Cache kontainer yang ditempati oleh file. Proses yang berbeda dalam kontainer mungkin mengelola file yang sama. |
Active Cache | File cache yang sedang digunakan. |
Inactive Cache | File cache yang tidak digunakan. |
Analisis OOM
Fitur analisis OOM dapat dengan cepat mendiagnosis kesalahan OOM dan menampilkan item diagnostik berikut.
Item Diagnostik | Deskripsi |
OS OOM Count | Jumlah total kesalahan OOM yang terjadi dari waktu host mulai hingga waktu diagnostik dilakukan. |
Memori Tersedia | Jumlah memori sistem yang bebas. |
Low Watermark | Ambang batas penggunaan memori rendah yang ditentukan. Saat penggunaan memori turun di bawah ambang batas rendah, operasi reklamasi memori asinkron dipicu. |
Kontainer | Nama pod, ID kontainer, atau nama cgroup. |
limit | Batas memori kontainer. |
usage | Jumlah memori yang digunakan oleh kontainer. |
OOM Count | Jumlah total kesalahan OOM yang terjadi dalam kontainer. |
OOM Type | Tipe kesalahan OOM, yang bisa berupa Host atau cgroup. |