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'
$ 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