Queste domande elencano brevemente il formato del comando free, notando che i buffer sono la memoria del kernel che deve essere scritta su disco e la cache sono dati di file che non devono essere scritti su disco.
Sul mio sistema, a differenza della maggior parte delle volte che ho eseguito gratuitamente, i buffer occupano oltre il 10% della RAM. Di solito, i buffer sono un valore piccolo, quasi simbolico.
La mia domanda è:cosa c'è esattamente nell'area chiamata buffer? Posso cercarlo con lsof
? È costituito da regioni di file aperte che non sono state svuotate? Sono regioni di file mappate in memoria? Che cos'è?
Il sistema funziona bene e viene utilizzato poco swap, quindi le prestazioni vanno bene.
Risposta accettata:
free
estrae i suoi dati da /proc/meminfo
slkwr133701:/usr/src/linux # free
total used free shared buffers cached
Mem: 2053456 434572 1618884 0 77888 201820
slkwr133701:/usr/src/linux # cat /proc/meminfo
MemTotal: 2053456 kB
MemFree: 1618736 kB
Buffers: 77928 kB
....
Questo si riferisce alla memoria utilizzata per l'archiviazione temporanea di I/O a blocchi.
Il kernel deve assegnare e liberare costantemente unità della stessa dimensione come trasferimenti di I/O a blocchi, pacchetti di rete e buffer di socket
Puoi dare un'occhiata più da vicino alle cache e alle allocazioni del buffer eseguendo slabtop
In risposta alla tua domanda sull'utilizzo:il sistema in genere assegnerà più blocchi del necessario, ma all'aumentare della "pressione della memoria", questi blocchi aggiuntivi verranno rilasciati.