GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿cómo vaciar los búferes y la memoria caché en un sistema Linux?

Antes de realizar un trabajo de evaluación comparativa, ¿cómo se liberaría la memoria (RAM) que consume el kernel de Linux para sus búferes y caché?

Tenga en cuenta que esto es principalmente útil para la evaluación comparativa. Vaciar los búferes y el caché reduce ¡actuación! Si estás aquí porque pensabas que liberar búferes y caché era algo positivo, ve y lee ¡Linux se comió mi RAM!. La historia corta:la memoria libre no se usa, la memoria se desperdicia memoria.

Respuesta aceptada:

Vaciar la memoria caché de los búferes

Si alguna vez quieres vaciarlo, puedes usar esta cadena de comandos.

# free && sync && echo 3 > /proc/sys/vm/drop_caches && free

             total       used       free     shared    buffers     cached
Mem:       1018916     980832      38084          0      46924     355764
-/+ buffers/cache:     578144     440772
Swap:      2064376        128    2064248
             total       used       free     shared    buffers     cached
Mem:       1018916     685008     333908          0        224     108252
-/+ buffers/cache:     576532     442384
Swap:      2064376        128    2064248

Puede indicarle al kernel de Linux que elimine varios aspectos de los elementos almacenados en caché cambiando el argumento numérico al comando anterior.

  • Para liberar el caché de página:

    # echo 1 > /proc/sys/vm/drop_caches
    
  • Para liberar dentries e inodos:

    # echo 2 > /proc/sys/vm/drop_caches
    
  • Para liberar caché de páginas, dentries e inodos:

    # echo 3 > /proc/sys/vm/drop_caches
    

Los anteriores están destinados a ejecutarse como root. Si estás tratando de hacerlo usando sudo entonces deberá cambiar la sintaxis ligeramente a algo como esto:

$ sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'

NOTA: Hay una versión más esotérica del comando anterior si te gusta:

$ echo "echo 1 > /proc/sys/vm/drop_caches" | sudo sh

¿Por qué el cambio en la sintaxis? El /bin/echo el programa se ejecuta como root, debido a sudo , pero el shell que está redirigiendo la salida de echo al archivo de solo raíz todavía se está ejecutando como usted. Su shell actual realiza la redirección antes sudo comienza.

Ver lo que hay en los búferes y caché

Echa un vistazo a linux-ftools si desea analizar el contenido de los búferes y la memoria caché. Específicamente, si desea ver qué archivos se están almacenando en caché actualmente.

Fincore

Con esta herramienta, puede ver qué archivos se almacenan en caché dentro de un directorio dado.

fincore [options] files...

  --pages=false      Do not print pages
  --summarize        When comparing multiple files, print a summary report
  --only-cached      Only print stats for files that are actually in cache.

Por ejemplo, /var/lib/mysql/blogindex :

[email protected]:/var/lib/mysql/blogindex# fincore --pages=false --summarize --only-cached * 
stats for CLUSTER_LOG_2010_05_21.MYI: file size=93840384 , total pages=22910 , cached pages=1 , cached size=4096, cached perc=0.004365 
stats for CLUSTER_LOG_2010_05_22.MYI: file size=417792 , total pages=102 , cached pages=1 , cached size=4096, cached perc=0.980392 
stats for CLUSTER_LOG_2010_05_23.MYI: file size=826368 , total pages=201 , cached pages=1 , cached size=4096, cached perc=0.497512 
stats for CLUSTER_LOG_2010_05_24.MYI: file size=192512 , total pages=47 , cached pages=1 , cached size=4096, cached perc=2.127660 
stats for CLUSTER_LOG_2010_06_03.MYI: file size=345088 , total pages=84 , cached pages=43 , cached size=176128, cached perc=51.190476 
stats for CLUSTER_LOG_2010_06_04.MYD: file size=1478552 , total pages=360 , cached pages=97 , cached size=397312, cached perc=26.944444 
stats for CLUSTER_LOG_2010_06_04.MYI: file size=205824 , total pages=50 , cached pages=29 , cached size=118784, cached perc=58.000000 
stats for COMMENT_CONTENT_2010_06_03.MYI: file size=100051968 , total pages=24426 , cached pages=10253 , cached size=41996288, cached perc=41.975764 
stats for COMMENT_CONTENT_2010_06_04.MYD: file size=716369644 , total pages=174894 , cached pages=79821 , cached size=326946816, cached perc=45.639645 
stats for COMMENT_CONTENT_2010_06_04.MYI: file size=56832000 , total pages=13875 , cached pages=5365 , cached size=21975040, cached perc=38.666667 
stats for FEED_CONTENT_2010_06_03.MYI: file size=1001518080 , total pages=244511 , cached pages=98975 , cached size=405401600, cached perc=40.478751 
stats for FEED_CONTENT_2010_06_04.MYD: file size=9206385684 , total pages=2247652 , cached pages=1018661 , cached size=4172435456, cached perc=45.321117 
stats for FEED_CONTENT_2010_06_04.MYI: file size=638005248 , total pages=155763 , cached pages=52912 , cached size=216727552, cached perc=33.969556 
stats for FEED_CONTENT_2010_06_04.frm: file size=9840 , total pages=2 , cached pages=3 , cached size=12288, cached perc=150.000000 
stats for PERMALINK_CONTENT_2010_06_03.MYI: file size=1035290624 , total pages=252756 , cached pages=108563 , cached size=444674048, cached perc=42.951700 
stats for PERMALINK_CONTENT_2010_06_04.MYD: file size=55619712720 , total pages=13579031 , cached pages=6590322 , cached size=26993958912, cached perc=48.533080 
stats for PERMALINK_CONTENT_2010_06_04.MYI: file size=659397632 , total pages=160985 , cached pages=54304 , cached size=222429184, cached perc=33.732335 
stats for PERMALINK_CONTENT_2010_06_04.frm: file size=10156 , total pages=2 , cached pages=3 , cached size=12288, cached perc=150.000000 
---
total cached size: 32847278080

Con el resultado anterior, puede ver que hay varios archivos *.MYD, *.MYI y *.frm que se están almacenando en caché actualmente.

Relacionado:Debian:¿por qué 'ls' de repente envuelve elementos con espacios entre comillas simples?

Intercambiar

Si desea borrar su intercambio, puede usar los siguientes comandos.

$ free
             total       used       free     shared    buffers     cached
Mem:       7987492    7298164     689328          0      30416     457936
-/+ buffers/cache:    6809812    1177680
Swap:      5963772     609452    5354320

Luego use este comando para deshabilitar el intercambio:

$ swapoff -a

Puede confirmar que ahora está vacío:

$ free
             total       used       free     shared    buffers     cached
Mem:       7987492    7777912     209580          0      39332     489864
-/+ buffers/cache:    7248716     738776
Swap:            0          0          0

Y para volver a habilitarlo:

$ swapon -a

Y ahora vuelve a confirmar con free :

$ free
             total       used       free     shared    buffers     cached
Mem:       7987492    7785572     201920          0      41556     491508
-/+ buffers/cache:    7252508     734984
Swap:      5963772          0    5963772

Linux
  1. Cómo verificar la versión del sistema operativo y Linux

  2. Cómo cambiar la identidad de un sistema Linux

  3. Cómo eliminar búferes de memoria y caché en Linux

  4. Cómo montar y desmontar un sistema de archivos en Linux

  5. ¿Cuál es la diferencia entre el búfer y la memoria caché en Linux?

Cómo rastrear y rastrear un proceso de Linux

Cómo instalar y usar YouTube-DL en el sistema Linux

Cómo cambiar el nombre de usuario y el nombre de host en el sistema Linux

Cómo instalar y configurar AnyDesk en el sistema Linux

Cómo instalar y configurar Django en un sistema Linux

Cómo instalar y configurar PrestaShop en el sistema Linux