Não é realmente uma resposta, mas é muito longa para um comentário.
O gerenciamento de memória do Linux foi cuidadosamente ajustado ao longo de sua vida útil por algumas pessoas muito inteligentes e normalmente faz um bom trabalho ao tomar a decisão certa ao escolher o que manter na memória e o que deve ser descartado.
Infelizmente, parece que sua carga de trabalho não é muito compatível com suas decisões :-( Ainda assim, estou bastante surpreso com seu relatório de que na verdade ele está frequentemente preferindo forçar a troca de memória suja em vez de descartar algo do cache Uma decisão entre descartar a coisa A do cache versus soltar a coisa B do cache pode ser difícil, mas uma decisão entre descartar a coisa C do cache versus escrever a memória suja D para trocar deve ser strongmente ponderada para deixar cair a coisa C porque isso é muito menos caro!
Existe uma maneira de informar ao Linux que alguma parte da memória armazenada em cache não será necessária no futuro, e essa é a chamada do sistema madvise()
com MADV_DONTNEED
, mas acho que seria difícil para você invocar isso chamada de sistema de um script do MATLAB ...
De qualquer forma, não acho que reduzir o tamanho do cache de arquivos seja realmente o que você deseja fazer aqui. Lembre-se que os arquivos executáveis e bibliotecas e arquivos de tempo de execução e plugins etc ... para o próprio MATLAB, seu script, seu ambiente GUI e outros softwares de sistema, também todos vivem no cache de arquivos, e você estaria forçando essas coisas do cache de arquivos (em favor de qualquer outro conteúdo do cache de arquivos ou em favor da memória heap e outros mapeamentos não suportados por arquivo). Isso fará com que seu sistema fique lento com a mesma segurança que a troca.