全部产品
Search
文档中心

:Apa yang harus saya lakukan jika instance ECS mengalami down dan pesan "Objects remaining in kmalloc" muncul di log peringatan?

更新时间:Jul 02, 2025

Jika instance Elastic Compute Service (ECS) Anda mengalami down dan pesan Objects remaining in kmalloc muncul di log peringatan saat menggunakan fitur kmem memory cgroup pada instance tersebut, gunakan solusi dalam topik ini untuk menyelesaikan masalah.

Deskripsi masalah

Saat menggunakan fitur kmem memory cgroup pada sebuah instance, instance tersebut mengalami down dan log peringatan serupa dengan berikut ini muncul di kernel sistem operasi:

[80569.393775] BUG kmalloc-256(15:94ef869ce655ebab64b08cd78ee00d16c20efd5737493b48293de41fe41b04a0) (Tainted: P    B   W  OE  ------------ T):
Objects remaining in kmalloc-256(15:94ef869ce655ebab64b08cd78ee00d16c20efd5737493b48293de41fe41b04a
[80569.397756] -----------------------------------------------------------------------------
[80569.397756]
[80569.400724] INFO: Slab 0xffffea0001e94a00 objects=32 used=1 fp=0xffff88007a528000 flags=0x1fffff00004080
[80569.402702] CPU: 21 PID: 26626 Comm: dockerd Tainted: P    B   W  OE  ------------ T 3.10.0-693.2.2.el7.x86_64 #1
[80569.404898] Hardware name: Alibaba Cloud Alibaba Cloud ECS, BIOS 8f19b21 04/01/2014
[80569.406747]  ffffea0001e94a00 000000004eb9a19f ffff883afee53aa0 ffffffff816a3db1
[80569.408833]  ffff883afee53b78 ffffffff811dbf54 ffffffff00000020 ffff883afee53b88
[80569.410731]  ffff883afee53b38 656a624f8190fff8 616d657220737463 6e6920676e696e69
[80569.412630] Call Trace:
[80569.414005]  [<ffffffff816a3db1>] dump_stack+0x19/0x1b
[80569.415627]  [<ffffffff811dbf54>] slab_err+0xb4/0xe0
[80569.417204]  [<ffffffff811e0623>] ? __kmalloc+0x1e3/0x230
[80569.420419]  [<ffffffff811e1939>] kmem_cache_close+0x149/0x2e0
[80569.422006]  [<ffffffff811e1ae4>] __kmem_cache_shutdown+0x14/0x80
[80569.423606]  [<ffffffff811a6874>] kmem_cache_destroy+0x44/0xf0
[80569.425149]  [<ffffffff811f6019>] kmem_cache_destroy_memcg_children+0x89/0xb0
[80569.426800]  [<ffffffff811a6849>] kmem_cache_destroy+0x19/0xf0
[80569.428309]  [<ffffffff8123b18e>] bioset_free+0xce/0x110
[80569.431306]  [<ffffffffc06d0b43>] dm_destroy+0x13/0x20 [dm_mod]
[80569.432803]  [<ffffffffc06d69be>] dev_remove+0x11e/0x180 [dm_mod]
[80569.435851]  [<ffffffffc06d7015>] ctl_ioctl+0x1e5/0x500 [dm_mod]
[80569.437363]  [<ffffffffc06d7343>] dm_ctl_ioctl+0x13/0x20 [dm_mod]
[80569.438882]  [<ffffffff8121524d>] do_vfs_ioctl+0x33d/0x540
[80569.443291]  [<ffffffff812154f1>] SyS_ioctl+0xa1/0xc0
[80569.446228]  [<ffffffff816b5009>] system_call_fastpath+0x16/0x1b

Penyebab

Saat menggunakan fitur kmem memory cgroup pada sebuah instance, fungsi kmem_cache_destroy menghapus memcg cache dan memeriksa apakah refcount disetel ke 0 sebelum menghapus kmem_cache. Jika refcount tidak disetel ke 0, beberapa tugas mungkin mencoba mengalokasikan memori slab menggunakan memcg cache dari kmem_cache. Dalam situasi ini, kondisi race terpicu, sehingga menyebabkan instance mengalami down.

Solusi

Penting

Sebelum melakukan operasi pada instance tempat masalah terjadi, kami sarankan Anda membuat snapshot untuk mencadangkan data. Ini mencegah hilangnya data akibat operasi yang tidak disengaja. Untuk informasi tentang cara membuat snapshot, lihat Buat snapshot.

Kami sarankan Anda menonaktifkan fitur kmem memory cgroup di instance ECS. Ikuti langkah-langkah berikut untuk menonaktifkannya:

  1. Jalankan perintah berikut untuk membuka file /etc/default/grub:

    vim /etc/default/grub
  2. Tekan tombol I untuk masuk ke mode Sisipkan dan tambahkan konten berikut ke baris yang dimulai dengan GRUB_CMDLINE_LINUX:

    cgroup.memory=nokmem

    OS

  3. Tekan tombol Esc untuk keluar dari mode Sisipkan, masukkan :wq, lalu tekan tombol Enter untuk menyimpan dan menutup file.

  4. Jalankan perintah berikut untuk memperbarui GRand Unified Bootloader (GRUB):

    grub2-mkconfig -o /boot/grub2/grub.cfg
  5. Jalankan perintah berikut untuk me-restart instance:

    reboot

Jika fitur kmem memory cgroup tidak dapat dinonaktifkan di sistem operasi instance Anda melalui alat baris perintah, kami sarankan Anda tidak menyetel nilai memory.kmem.limit_in_bytes di semua program dalam instance Anda. Hal ini memastikan bahwa fitur kmem memory cgroup tetap dinonaktifkan.