Por que o sistema ainda trava / diminui depois que o processo é finalizado?

2

Meu sistema operacional é o Ubuntu 12.10 de 64 bits. Eu tenho experimentado esse problema por um longo tempo, com todas as versões anteriores do Ubuntu também. Se eu iniciar um processo, que ocupa toda a memória e quando terminar, o computador ainda está paralisado, o que significa que não é tão rápido quanto era antes de iniciar o processo.

É um cenário comum e o que pode ser feito para resistir / curar?

    
por Sukhdeep Singh 27.11.2012 / 19:59

1 resposta

2

Primeiro, você provavelmente não deveria estar executando um processo que ocupa toda a memória.

A razão pela qual isso acontece é devido a swap space .

Tempo de Analogia

Você tem um ônibus. Este ônibus tem assentos "preferidos" dentro do ônibus e assentos de "estouro" no telhado. As pessoas só se sentam no telhado se todos os assentos preferidos forem ocupados e eles ainda precisam andar no ônibus.

Esse barramento tem as seguintes propriedades exclusivas :

  • Os assentos são extremamente pequenos; uma pessoa média ocuparia um grande número de assentos, talvez 2 ou 4 para uma criança, 8 ou 10 para um adulto, alguns até 40.
  • O tempo necessário para embarcar ou desembarcar do ônibus é 20 vezes mais rápido para pessoas em assentos preferenciais do que em assentos excedentes.

Existem também três regras culturais sobre este barramento:

  • Uma regra é que as pessoas que estão apenas embarcando no ônibus podem "bater" nas pessoas que estiveram no ônibus mais cedo, o que força a pessoa a se levantar de um assento preferido e a subir para um assento no telhado. Todo mundo está acostumado a esse comportamento, por isso não causa brigas ou mal-entendidos; é apenas parte da cultura.
  • A segunda regra é que, se o ônibus estiver cheio, a pessoa ocupando a maioria dos assentos no ônibus deve partir imediatamente quando alguém tentar embarcar no ônibus completamente cheio.
  • A terceira regra é que, sempre que um assento preferido estiver disponível, alguém que possa estar em um assento de transbordo se levantará imediatamente do telhado e descerá para sentar-se no assento preferido.

Agora, imagine que você preenche todos os lugares preferidos. Então mais pessoas querem entrar no ônibus. Então, alguém entra no ônibus, e todos os assentos preferidos são ocupados, então, por costume cultural, eles forçam alguém sentado em um assento preferido a subir ao telhado. Este processo pode se repetir até que os assentos do overflow no teto estejam cheios.

Quando todos os lugares preferidos e de estouro estiverem cheios, o que acontece? A maior pessoa tem que sair do ônibus. Se eles estão em um lugar preferido quando saem, eles podem sair rapidamente; mas alguém que é menor (ou várias pessoas) pode descer do teto, pelas regras, para sentar nos assentos preferidos disponíveis.

Agora, para aplicar essa analogia à realidade: os "assentos de estouro" são o espaço de troca na unidade de disco rígido e os "assentos preferenciais" são a RAM. As regras do ônibus se aplicam de maneira muito clara.

O que acontece é que quando sua "pessoa grande" (o processo ocupando muita RAM) é eliminada, o sistema começa a mover os processos que estavam no espaço de swap (os assentos de overflow) de volta para a RAM. Isso ocorre porque é muito mais rápido embarcar e desembarcar do ônibus dos assentos preferidos, e as pessoas estão sempre entrando e saindo, então você não quer ter que esperar na parada por um longo tempo enquanto as pessoas entram e saem do telhado.

Sistemas operacionais de memória virtual usam o máximo de RAM possível em todos os momentos. O uso de prioridade mais alta é para dados realmente mapeados de programas que estão executando ativamente e acessando esses segmentos de RAM. O uso de prioridade média é para páginas mapeadas para programas que não estão executando ativamente. O uso de prioridade mais baixa é para "cache de páginas", que é basicamente um cache dos arquivos acessados com mais freqüência da unidade de disco rígido, para que eles não precisem ser lidos do disco toda vez que forem acessados.

A maioria dos programas em seu sistema, além do que ocupa toda a RAM, são empurrados para o espaço de troca (os assentos de overflow) quando o seu grande programa ocupa toda a RAM, então quando você finaliza o grande programa, tudo começa a ser movido de volta para a RAM para que sua área de trabalho permaneça responsiva. Enquanto esta transferência está ocorrendo, uma vez que é muito lenta, o seu sistema fica inativo, porque ela precisa balancear a carga das solicitações de E / S do gerenciador de memória virtual e das solicitações de E / S dos aplicativos. Essa é a definição mais técnica de por que isso acontece.

A "cura" é tripla:

  • Prioridade 1: compre mais RAM. Isso pode nunca te machucar e pode apenas ajudá-lo . Se você tem o dinheiro e sua placa-mãe tem capacidade para armazenar mais RAM, faça isso.
  • Prioridade dois: não execute o programa que ocupa toda a sua memória RAM.
  • Prioridade Três: reduza o tamanho da sua partição virtual ou a elimine por completo ou compre um disco rígido mais rápido (como um SSD).
por 27.11.2012 / 20:16