Esta pregunta está motivada por mi sorpresa cuando descubrí que el kernel de Mac OS X usa 750 MB de RAM .
He estado usando Linux durante 20 años, y siempre "supe" que el uso de RAM en el núcleo está eclipsado por X (¿es cierto? ¿Alguna vez ha sido cierto?).
Entonces, después de buscar en Google, intenté lo slabtop
que me dijo:
Active / Total Size (% used) : 68112.73K / 72009.73K (94.6%)
¿Significa esto que mi kernel está usando ~ 72MB de RAM ahora?
(Dado que el RSS de los top
informes Xorg
es 17M, el núcleo ahora eclipsa X, no al revés).
¿Cuál es el uso (rango) de RAM "normal" del kernel para una computadora portátil?
¿Por qué MacOS usa un orden de magnitud más RAM que Linux?
PD. Ninguna respuesta aquí abordó la última pregunta, así que consulte las preguntas relacionadas:
echo 3 > /proc/sys/vm/drop_caches
, entonces solo tengo 80MB usados.Respuestas:
Kernel es 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, necesitaría mirar toda la bola y no solo un solo componente.Por cierto, el mío muestra
slabtop
:La página del manual para
slabtop
también tenía esto que decir:Dejar caer cachés
Dejar caer mis cachés como sugirió @derobert en los comentarios bajo su pregunta hace lo siguiente para mí:
Enviar un 3 hace lo siguiente: caché de página gratuito, dentries e inodes. Discuto esto más en este U&L Q&A titulado: ¿Hay alguna forma o herramienta para volcar la memoria caché y el búfer? ". De modo que se utilizaban 110 MB de mi espacio simplemente manteniendo la información sobre caché de página, dentries e inodes.
Información Adicional
slabtop
un poco más detalles. Se titula: Comando Linux del día: slabtop .Entonces, ¿cuánta RAM está usando mi Kernel?
Esta imagen es un poco más nebulosa para mí, pero aquí están las cosas que "creo" que sabemos.
Losa
Podemos obtener una instantánea del uso de Slab utilizando esta técnica. Esencialmente podemos extraer esta información
/proc/meminfo
.Módulos
También podemos obtener un valor de tamaño para los módulos Kernel (no está claro si es su tamaño desde el disco o cuando está en la RAM) extrayendo estos valores de
/proc/modules
:Información de losa
Muchos de los detalles sobre el SLAB son accesibles en esta estructura de proceso
/proc/slabinfo
:Dmesg
Cuando su sistema arranca, hay una línea que informa el uso de memoria del kernel de Linux justo después de cargarlo.
Referencias
fuente
grep Slab /proc/meminfo
./proc/slabinfo
que parece ser la fuenteslabtop
, por lo que uno podría calcular las cantidades desde aquí para un recuento total más preciso./proc/modules
es más probable que la columna 2 cargue el tamaño del módulo en la memoria, ya que los módulos en el disco normalmente están comprimidos (por ejemplo, en Fedora 27 es xz), he verificado eltg3
controlador NIC, el tamaño en el disco (ya sea comprimido o el tamaño del archivo original) no coincide con el tamaño del byte que aparece en/proc/modules
.Qué tal esto:
Eso está en una máquina recién arrancada, muy pequeña que funciona sin cabeza con un núcleo normal. Entonces no requiere mucho.
Como sugiere derobert, el kernel utilizará la memoria disponible para el almacenamiento en caché y eso es mucho de lo que ves
slabtop
. Además de la caché de archivos, esto tiene que ver con la memoria que se puede compartir de los procesos del espacio de usuario que ya no está en uso. El núcleo lo deja allí hasta que se requiera lo mismo nuevamente, o bien algo necesite activamente RAM, en cuyo caso se olvida. Una analogía sería sacar un libro de un estante y dejarlo abierto para leer en una mesa: cuando termine de leer, puede dejar el libro abierto sobre la mesa en caso de que necesite mirarlo nuevamente.fuente
En este servidor RAM de 512 GB que ejecuta Solaris, el núcleo utiliza 25 GB:
Ese más pequeño tiene más de la mitad de su RAM utilizada por el núcleo:
Nada de qué preocuparse, la RAM no utilizada es RAM desperdiciada de todos modos.
fuente
echo ::memstat | mdb -k
en algunos servidores de producción Solaris 10 anteriores a la actualización 10/09.