Como eu forço certos programas a viver dentro de uma certa pegada de memória que eles estão bem cientes?

0

Na minha máquina (Linux Mint x64, intencionalmente troca zero), programas como Firefox e Chrome (rodando ao mesmo tempo, porque então precisam, infelizmente) acabam consumindo muito mais memória do que eles têm alguma razão para isso. E quando eles dão errado, toda a máquina pára.

Como eu forço algumas dessas tarefas a serem limitadas à força a uma pegada de memória específica da qual elas estão plenamente conscientes, de forma que não tentem ocupar o máximo de memória ocupada?

Estou farto de programas como o Chrome eo Firefox me atrapalhando porque eles apenas aleatoriamente (de uma perspectiva do usuário) decidem: "Ei, eu preciso de mais memória. Kernel, preciso de mais memória!" em vez de "Ei, eu preciso de mais memória ... Merda, eu estou fora. O que eu cortei?"

O melhor que posso encontrar, até agora, é isolar o Chrome e o Firefox (individualmente) às VMs em outra máquina com o máximo de impressões de memória bloqueadas. Mas isso é um grande desperdício, e acontece horrivelmente para coisas como jogos em flash, especialmente aqueles que esperam por aceleração de hardware.

Só Deus sabe o que está usando tanta memória, porque cada navegador geralmente não tem mais de 15 abas abertas. Então, isso é mais uma frustração.

Como faço para forçar certos programas a viver dentro de uma certa pegada de memória que eles estão bem cientes?

Embora essa questão possa ser limitada apenas ao Chrome ou ao Firefox, tenho certeza de que existem outros programas altamente inúteis que precisam de algum tipo de restrição. Assim, embora uma solução que corrija o mau comportamento do Firefox e do Chrome possa fazer o que eu preciso, uma solução mais geral é realmente o que eu quero.

    
por killermist 22.06.2013 / 20:03

2 respostas

1

Você pode usar:

  • grupos de controle ( cgroups] ) no seu SO principal.
  • lxc em vez de VMs com cgroups controle de memória.

Para uma referência de todas as opções no kernel para controle de memória, você pode verificar aqui .

Esta solução aplica-se a qualquer programa ou grupo de programas.

    
por 22.06.2013 / 20:22
0

Você pode usar o ulimit para definir a memória máxima dos processos lançados através do terminal atual ou usar um programa como softlimit para iniciar um programa com um determinado limite de memória. Quando esse limite for atingido, as alocações de memória falharão com o ENOMEM (que pode não ser corretamente tratado por todos os programas).

    
por 22.06.2013 / 20:23

Tags