Tanto em máquinas Windows quanto Linux, parece que o uso de memória chega a cerca de 80%, de acordo com os monitores de recursos. Uma vez que a memória atinge cerca de 80%, o IO do disco começa a disparar e posso ouvir os computadores debulhando, provavelmente devido ao uso intenso de memória virtual.
Parece intuitivamente que o disco thrashing não deve acontecer até que uma máquina esteja perto de 100% de uso de memória, mas por algum motivo, ambos os sistemas operacionais parecem tratar 80% como a memória máxima disponível para alocar e nunca parecem ultrapassar esse valor não não importa quanta surra esteja acontecendo devido à falta de memória.
Por que os outros 20% de memória parecem reservados ou não utilizados?
Vou falar principalmente do Windows porque é o que eu sei. Mas os princípios básicos do Linux são semelhantes.
O Windows e o Linux possuem gerenciamento de memória avançado, mas os princípios envolvidos não são facilmente compreendidos. O sistema operacional foi projetado para funcionar bem, mas não necessariamente ser intuitivo.
É importante entender que, se o uso de memória for exibido como 80%, isso não significa que os 20% restantes estejam livres e sem uso. Na maioria dos casos, é muito usado. No meu sistema Windows 10, o uso de memória é atualmente de 40% de 8 GB. Os 60% restantes são rotulados como "Disponíveis", mas apenas 44 BM são realmente gratuitos. A grande maioria da memória disponível está na lista de espera. Esta memória contém dados potencialmente úteis, mas não está atualmente em uso ativo. Esses dados podem ser devolvidos ao processo que os possui, se necessário. Ou a memória pode ser reatribuída para qualquer outro uso conforme necessário. Essa memória contribui muito para um bom desempenho.
Windows e Linux sempre tentarão manter um valor razoável de memória disponível (mas não necessariamente livre). Este é um processo complexo com muitos fatores sendo considerados. O gerenciador de memória faz isso recuperando a memória raramente usada dos processos. Isso pode exigir salvar dados no arquivo de paginação. O sistema operacional sabe quais blocos de memória foram acessados recentemente e quais não foram. Os dados na memória recuperada ainda estarão disponíveis se forem necessários. Tudo isso é totalmente transparente para os processos que não têm conhecimento disso.
Quando a memória disponível é abundante, os processos podem manter a memória que quiserem. Mas à medida que o uso da memória aumenta, o gerenciador de memória se torna mais agressivo no esforço de manter a memória disponível. Os dados são gravados no arquivo de paginação e outro acesso ao disco é necessário para recuperar a memória que foi removida anteriormente. Isso explica o thrashing do disco.
O gerenciador de memória se esforça muito para evitar níveis muito altos de uso de memória. O uso de 100% seria permitido somente sob pressão de memória extrema. O desempenho seria seriamente degradado muito antes de isso acontecer.
Esse processo de gerenciamento de memória foi o resultado de anos de pesquisa, desenvolvimento e testes. O objetivo é sempre manter o desempenho geral do sistema. O Windows faz isso desde a introdução do NT em 1993 e o Linux faz isso desde o início.
Portanto, nenhuma memória está sendo reservada, o gerenciador de memória está apenas tentando manter um valor razoável de memória disponível.