Kernel sedikit keliru. Kernel Linux terdiri dari beberapa proses/utas + modul (lsmod
) jadi untuk mendapatkan gambaran lengkap, Anda perlu melihat keseluruhan bola dan bukan hanya satu komponen.
Kebetulan milik saya menunjukkan slabtop
:
Active / Total Size (% used) : 173428.30K / 204497.61K (84.8%)
Halaman manual untuk slabtop
juga mengatakan ini:
Header statistik slabtop melacak berapa banyak byte slab yang digunakan dan ini bukan ukuran memori fisik. Bidang 'Slab' di file /proc/meminfo melacak informasi tentang memori fisik slab yang digunakan.
Membuang cache
Menjatuhkan cache saya seperti yang disarankan @derobert di komentar di bawah pertanyaan Anda melakukan hal berikut untuk saya:
$ sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
$
Active / Total Size (% used) : 61858.78K / 90524.77K (68.3%)
Mengirim 3 melakukan hal berikut:cache halaman gratis, gigi palsu, dan inode. Saya membahas ini lebih lanjut dalam U&L Q&A berjudul:Apakah ada cara atau alat untuk membuang cache dan buffer memori?". Jadi 110 MB ruang saya digunakan hanya dengan mempertahankan info tentang pagecache, dentries, dan inode.
Informasi Tambahan
- Jika Anda tertarik, saya menemukan entri blog ini yang membahas
slabtop
dalam sedikit lebih detail. Judulnya:Perintah Linux saat ini:slabtop. - Cache Slab dibahas lebih detail di sini di Wikipedia, berjudul:Alokasi Slab.
Jadi, berapa banyak RAM yang digunakan Kernel saya?
Gambar ini agak kabur bagi saya, tetapi berikut adalah hal-hal yang menurut saya "kita tahu".
Lapisan
Kita bisa mendapatkan snapshot dari penggunaan Slab menggunakan teknik ini. Pada dasarnya kita dapat menarik informasi ini dari /proc/meminfo
.
$ grep Slab /proc/meminfo
Slab: 100728 kB
Modul
Kita juga bisa mendapatkan nilai ukuran untuk modul Kernel (tidak jelas apakah ukurannya dari disk atau saat di RAM) dengan menarik nilai ini dari /proc/modules
:
$ awk '{print $1 " " $2 }' /proc/modules | head -5
cpufreq_powersave 1154
tcp_lp 2111
aesni_intel 12131
cryptd 7111
aes_x86_64 7758
Info pelat
Sebagian besar detail tentang SLAB dapat diakses dalam struktur proc ini, /proc/slabinfo
:
$ less /proc/slabinfo | head -5
slabinfo - version: 2.1
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_ffff8801f2b30000 0 0 320 25 2 : tunables 0 0 0 : slabdata 0 0 0
fuse_request 100 125 632 25 4 : tunables 0 0 0 : slabdata 5 5 0
fuse_inode 21 21 768 21 4 : tunables 0 0 0 : slabdata 1 1 0
Dmesg
Saat sistem Anda melakukan booting, ada baris yang melaporkan penggunaan memori kernel Linux tepat setelah dimuat.
$ dmesg |grep Memory:
[ 0.000000] Memory: 7970012k/9371648k available (4557k kernel code, 1192276k absent, 209360k reserved, 7251k data, 948k init)
Referensi
- Kemana memori pergi? Penggunaan memori di kernel 2.6
Bagaimana dengan ini:
Active / Total Size (% used) : 4709.24K / 5062.03K
Itu pada mesin yang baru di-boot, sangat kecil, berjalan tanpa kepala dengan kernel normal. Jadi tidak membutuhkan banyak.
Seperti petunjuk derobert, kernel akan menggunakan memori yang tersedia untuk caching dan itulah yang Anda lihat di slabtop
. Selain cache file, ini berkaitan dengan memori yang dapat dibagikan dari proses userspace yang tidak lagi digunakan. Kernel meninggalkannya di sana sampai hal yang sama diperlukan lagi, atau sesuatu yang secara aktif membutuhkan RAM, dalam hal ini akan dilupakan. Analoginya adalah mengambil buku dari rak dan membukanya untuk dibaca di atas meja:setelah selesai membaca, Anda dapat membiarkan buku terbuka di atas meja jika perlu melihatnya lagi.
Pada server RAM 512 GB yang menjalankan Solaris ini, kernel menggunakan 25 GB:
Page Summary Pages MB %Tot
------------ ---------------- ---------------- ----
Kernel 3210102 25078 5%
Anon 15266226 119267 23%
Exec and libs 41457 323 0%
Page cache 3539331 27651 5%
Free (cachelist) 13799571 107809 21%
Free (freelist) 30093164 235102 46%
Total 65949851 515233
Physical 65927406 515057
Yang lebih kecil memiliki lebih dari setengah RAM yang digunakan oleh kernel:
Page Summary Pages MB %Tot
------------ ---------------- ---------------- ----
Kernel 2149699 16794 52%
Anon 517016 4039 13%
Exec and libs 15420 120 0%
Page cache 21840 170 1%
Free (cachelist) 8768 68 0%
Free (freelist) 1404862 10975 34%
Total 4117605 32168
Physical 4096002 32000
Tidak ada yang perlu dikhawatirkan, RAM yang tidak digunakan adalah RAM yang terbuang sia-sia.