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.