GNU/Linux >> Linux Esercitazione >  >> Linux

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

I buffer sono associati a uno specifico dispositivo a blocchi e coprono la memorizzazione nella cache dei metadati del file system e il monitoraggio delle pagine in transito. La cache contiene solo i dati dei file parcheggiati. Cioè, i buffer ricordano cosa c'è nelle directory, quali sono i permessi dei file e tengono traccia di quale memoria viene scritta o letta per un particolare dispositivo a blocchi. La cache contiene solo il contenuto dei file stessi.

collegamento alla citazione


Risposta citata (per riferimento):

Risposta breve:cache è la dimensione della cache della pagina. Buffers è la dimensione dei buffer di I/O a blocchi in memoria. Questioni memorizzate nella cache; I buffer sono in gran parte irrilevanti.

Risposta lunga:Cached è la dimensione della cache della pagina di Linux, meno la memoria nella cache di scambio, che è rappresentata da SwapCached (quindi la dimensione totale della cache della pagina è Cached + SwapCached). Linux esegue tutto l'I/O di file attraverso la cache della pagina. Le scritture vengono implementate semplicemente contrassegnando come sporche le pagine corrispondenti nella cache delle pagine; i thread del flusher quindi riscrivono periodicamente sul disco eventuali pagine sporche. Le letture vengono implementate restituendo i dati dalla cache della pagina; se i dati non sono ancora nella cache, vengono prima popolati. Su un moderno sistema Linux, Cached può facilmente essere di diversi gigabyte. Si ridurrà solo in risposta alla pressione della memoria. Il sistema eliminerà la cache della pagina insieme allo scambio dei dati su disco per rendere disponibile più memoria secondo necessità.

I buffer sono buffer di I/O a blocchi in memoria. Hanno vita relativamente breve. Prima della versione 2.4 del kernel Linux, Linux disponeva di pagine separate e buffer cache. Dalla versione 2.4, la pagina e la cache del buffer sono unificate e i buffer sono blocchi del disco non elaborati non rappresentati nella cache della pagina, ovvero non dati di file. La metrica Buffers è quindi di minima importanza. Sulla maggior parte dei sistemi, Buffers è spesso solo decine di megabyte.


Linux
  1. Qual è la differenza tra env e set (su Mac OS X o Linux)?

  2. Qual è la differenza tra la scrittura su un file e una memoria mappata?

  3. Qual è la differenza tra strtok_r e strtok_s in C?

  4. Qual è la differenza tra un driver di piattaforma Linux e un normale driver di dispositivo?

  5. Qual è la differenza tra "trova" e "trova" in Linux?

Qual ​​è la differenza tra i kernel macOS e Linux

Qual è la differenza tra Linux e Unix?

Qual è la differenza tra Rsync e BTRFS in Linux?

Che cos'è un hypervisor? Qual è la differenza tra il tipo 1 e 2?

Qual è la differenza tra curl e Wget?

Qual è la differenza tra DMA e IO mappato in memoria?