Linux e buff/cache de memória e armazenamento em disco

Linux e buff/cache de memória e armazenamento em disco

Quero fazer perguntas sobre o buff/cache de memória

digamos que temos uma máquina Linux com disk e algum aplicativo que gravou dados no disco /var/data

pelo que entendi, quando o aplicativo gravou dados no disco, esses dados também serão salvos no cache de memória

por algum tempo, e após X tempo os dados do aplicativo serão removidos do cache de memória

é possível forçar o salvamento de dados específicos no cache da memória e não no disco?

o motivo da minha pergunta é porque queremos leitura/gravação rápida e os discos são muito lentos em relação a isso

Responder1

salvo no cache de memória

Não existe tal coisa realmente. Você começa com issobônus/cache:

]# free -g
              total        used        free      shared  buff/cache   available
Mem:              7           0           3           0           3           6
Swap:             0           0           0

Isso fornece a quantidade de RAM atualmente usada como buffer ou cache. O kernel faz isso exatamente porque os discos são lentos e muitas vezes (como mostrado) há RAM suficiente.

Se quiser reservar uma parte da RAM para determinados arquivos, você pode colocá-los em um disco RAM ( mount -t tmpfs ...). Mas então você deve se lembrar de copiá-los de volta para o disco.

Responder2

Acho que você pode ter um mal-entendido sobre como funciona a hierarquia de memória. A hierarquia vai do mais próximo da CPU/mais rápido para o mais lento:

Registro da CPU > Memória cache > RAM/memória principal > Disco

A memória cache fica entre a CPU e a memória principal e é de acesso mais rápido do que a memória principal. Normalmente, pedaços de dados próximos (isto é, cópias de blocos de intervalos de endereços) são copiados para o cache quando um local de memória é acessado. Então, na próxima vez que um local de memória for acessado, o cache será verificado primeiro, para ver se os dados já estão lá e se é possível economizar tempo por não ter que acessar a memória principal.

Então, acho que sua pergunta não faz muito sentido. Normalmente não há armazenamento intermediário ou cache entre a memória principal e o disco. Os dados que estão em uso atualmente são armazenados na RAM e essa é a maneira mais eficiente de armazená-los e acessá-los. Se quiser salvá-lo para mais tarde, depois que a máquina for desligada, copie-o para o disco (porque essa é sua única opção). Se você quiser acessar os dados agora e rapidamente, não vai querer tocar no disco, a menos que seja necessário.

Não conheço nenhum meio de substituir facilmente o gerenciamento de memória cache e armazenar algo no cache, mas explicitamente não na RAM. Geralmente já existem sistemas muito bons e eficientes para gerenciar o cache de memória.

Além disso, não acredito que os dados sejam removidos da memória cache após X período de tempo. Normalmente, ele é eliminado por dados mais recentes que a CPU deseja acessar.

informação relacionada