Eu tenho um servidor virtual e meu provedor me cobra com base no uso do recurso. Posso definir um limite máximo de RAM, mas ainda sou cobrado pela RAM realmente usada, não pelo máximo (o preço é calculado a cada 5 minutos com base no uso real).
Usar toda a RAM normalmente seria aceitável, mas a política do Linux "RAM não utilizada é RAM desperdiçada" é insuficiente para esse tipo de contabilidade, já que a máquina acabará usando toda a RAM disponível, e mesmo que a maior parte dela seja apenas um cache de disco, Eu ainda tenho que pagar por isso.
Gosto de definir o limite do provedor um pouco mais alto para acomodar as necessidades de pico de RAM. Posso, de alguma forma, limitar a quantidade de memória que será usada para armazenamento em cache, etc.? Digamos que eu reserve 3 GB e meu aplicativo + serviços do sistema normalmente precise de 1 GB, mas se houver uma necessidade real, meu aplicativo pode usar 2 GB de RAM extras, mas quando estiver ocioso quero limitar o cache para, por exemplo, apenas até 500 MB de RAM livre, para não ter que pagar por 3 GB o tempo todo.
Responder1
A resposta vinculadacomo-você-esvazia-os-buffers-e-cache-em-um-sistema-linuxmostra como liberar seus caches (pagecache, dentries e inodes). Você precisaria fazer essa atividade de liberação repetidamente, talvez no cron. Não sei se funcionaria da maneira que você deseja em um contêiner OpenVZ, porque o gerenciamento de memória do OpenVZ parece complexo (ou talvez não esteja bem documentado). Não pretendo criticar o OpenVZ; é uma ótima solução de virtualização e pode compactar muitos sistemas em um servidor físico.
Legal,linux-ftoolspode ajudá-lo a ver quantas páginas de cache estão sendo usadas por arquivo.
Você também pode experimentartrocae defina-o como 100 para troca agressiva.