GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:come svuotare i buffer e la cache su un sistema Linux?

Prima di eseguire un lavoro di benchmarking, come si libererebbe la memoria (RAM) che il kernel Linux sta consumando per i suoi buffer e cache?

Si noti che questo è principalmente utile per il benchmarking. Svuotare i buffer e la cache riduce prestazione! Se sei qui perché pensavi che liberare buffer e cache fosse una cosa positiva, vai a leggere Linux ha mangiato la mia RAM!. La breve storia:la memoria libera è la memoria inutilizzata sprecata memoria.

Risposta accettata:

Svuotamento della cache dei buffer

Se vuoi svuotarlo puoi usare questa catena di comandi.

# 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

Puoi segnalare al kernel Linux di eliminare vari aspetti degli elementi memorizzati nella cache modificando l'argomento numerico nel comando precedente.

  • Per liberare la cache di pagina:

    # echo 1 > /proc/sys/vm/drop_caches
    
  • Per liberare denti e inode:

    # echo 2 > /proc/sys/vm/drop_caches
    
  • Per liberare pagecache, dentries e inode:

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

Quanto sopra è pensato per essere eseguito come root. Se stai provando a farli usando sudo quindi dovrai cambiare leggermente la sintassi in qualcosa di simile a questi:

$ 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: C'è una versione più esoterica del comando precedente se ti piace:

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

Perché il cambio di sintassi? Il /bin/echo il programma è in esecuzione come root, a causa di sudo , ma la shell che reindirizza l'output di echo al file di solo root è ancora in esecuzione come te. La tua shell attuale esegue il reindirizzamento prima sudo inizia.

Vedere cosa c'è nei buffer e nella cache

Dai un'occhiata a linux-ftools se desideri analizzare il contenuto dei buffer e della cache. In particolare, se desideri vedere quali file sono attualmente memorizzati nella cache.

fincore

Con questo strumento puoi vedere quali file vengono memorizzati nella cache all'interno di una determinata directory.

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.

Ad esempio, /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 l'output sopra puoi vedere che ci sono diversi file *.MYD, *.MYI e *.frm che sono attualmente memorizzati nella cache.

Correlati:Debian – Perché "ls" avvolge improvvisamente gli elementi con spazi tra virgolette singole?

Scambia

Se vuoi cancellare il tuo scambio puoi usare i seguenti comandi.

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

Quindi usa questo comando per disabilitare lo scambio:

$ swapoff -a

Puoi confermare che ora è vuoto:

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

E per riattivarlo:

$ swapon -a

E ora riconferma 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. Come controllare la versione del sistema operativo e di Linux

  2. Come cambiare l'identità di un sistema Linux

  3. Come eliminare i buffer di memoria e la cache in Linux

  4. Come montare e smontare un file system in Linux

  5. Qual è la differenza tra memoria buffer e cache in Linux?

Come tracciare e tracciare un processo Linux

Come installare e utilizzare YouTube-DL su sistema Linux

Come modificare nome utente e nome host su sistema Linux

Come installare e configurare AnyDesk su sistema Linux

Come installare e configurare Django su sistema Linux

Come installare e configurare PrestaShop su sistema Linux