Kernel es un nombre un poco inapropiado. El kernel de Linux se compone de varios procesos/subprocesos + los módulos (lsmod
), por lo que para obtener una imagen completa, debe observar la pelota completa y no solo un componente.
Por cierto, el mío muestra slabtop
:
Active / Total Size (% used) : 173428.30K / 204497.61K (84.8%)
La página man para slabtop
también tenía esto que decir:
El encabezado de la estadística slabtop rastrea cuántos bytes de slabs se están utilizando y no es una medida de la memoria física. El campo 'Slab' en el archivo /proc/meminfo rastrea información sobre la memoria física de slab usada.
Soltar cachés
Dejar mis cachés como sugirió @derobert en los comentarios debajo de su pregunta hace lo siguiente para mí:
$ sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
$
Active / Total Size (% used) : 61858.78K / 90524.77K (68.3%)
Enviar un 3 hace lo siguiente:caché de página libre, dentries e inodos. Hablo más sobre esto en esta sesión de preguntas y respuestas de U&L titulada:¿Existen formas o herramientas para volcar la memoria caché y el búfer?". Por lo tanto, 110 MB de mi espacio se usaban simplemente para mantener la información sobre la memoria caché, las dentaduras y los inodos.
Información adicional
- Si está interesado, encontré esta publicación de blog que analiza
slabtop
en un poco más de detalles. Se titula:Comando Linux del día:slabtop. - El Slab Cache se analiza con más detalle aquí en Wikipedia, titulado:Asignación de Slab.
Entonces, ¿cuánta RAM está usando mi Kernel?
Esta imagen es un poco más confusa para mí, pero estas son las cosas que "creo" que sabemos.
Losa
Podemos obtener una instantánea del uso de Slab usando esta técnica. Básicamente, podemos extraer esta información de /proc/meminfo
.
$ grep Slab /proc/meminfo
Slab: 100728 kB
Módulos
También podemos obtener un valor de tamaño para los módulos del Kernel (no está claro si es su tamaño en el disco o en la RAM) extrayendo estos valores de /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
Información de losa
Se puede acceder a muchos de los detalles sobre SLAB en esta estructura de proceso, /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
Cuando su sistema arranca, hay una línea que informa el uso de memoria del kernel de Linux justo después de que se carga.
$ dmesg |grep Memory:
[ 0.000000] Memory: 7970012k/9371648k available (4557k kernel code, 1192276k absent, 209360k reserved, 7251k data, 948k init)
Referencias
- ¿Adónde va la memoria? Uso de memoria en el kernel 2.6
¿Qué tal esto:
Active / Total Size (% used) : 4709.24K / 5062.03K
Eso es en una máquina muy pequeña recién arrancada que se ejecuta sin periféricos con un núcleo normal. Así que no requiere mucho.
Como sugiere Derobert, el núcleo utilizará la memoria disponible para el almacenamiento en caché y eso es mucho de lo que se ve en slabtop
. Además del caché de archivos, esto tiene que ver con la memoria compartida de los procesos del espacio de usuario que ya no está en uso. El kernel lo deja allí hasta que se requieran las mismas cosas nuevamente o algo necesite RAM de forma activa, en cuyo caso se olvida. Una analogía sería sacar un libro de un estante y dejarlo abierto para leerlo sobre una mesa:cuando termines de leer, puedes dejar el libro abierto sobre la mesa en caso de que necesites volver a mirarlo.
En este servidor de 512 GB de RAM que ejecuta Solaris, el kernel utiliza 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
Ese más pequeño tiene más de la mitad de su RAM utilizada por el 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
No hay nada de qué preocuparse, la RAM no utilizada es RAM desperdiciada de todos modos.