O que é memória swap?

15

Estou usando a RAM para armazenar algumas das minhas tabelas de banco de dados e as outras são armazenadas no disco rígido.

Hoje eu soube que meus processos estão usando memória swap. Agora, o que é a memória swap e como posso detectar qual processo está usando a memória swap e como posso impedi-los de usá-la?

    
por 030 31.07.2009 / 10:48

6 respostas

30

Se você ficar sem memória física, use a memória virtual, que armazena os dados na memória no disco. A leitura do disco é várias ordens de grandeza mais lenta do que a leitura da memória, então isso diminui a velocidade. (A troca de dados entre a memória real e a memória virtual é "swapping". O espaço no disco é "espaço de troca".)

Se o seu aplicativo estiver "usando swap", você precisará usar menos memória ou comprar mais memória RAM.

(Trocar é útil porque os aplicativos que não estão sendo usados podem ser armazenados no disco até que sejam usados. Então eles podem ser "paginados" e executados normalmente novamente. Embora não esteja na memória, o SO pode use essa memória para outra coisa, como cache de disco.Então, é um recurso muito útil, mas se você não tem memória física suficiente para executar o seu programa, você definitivamente precisa de mais memória.Felizmente, a memória é realmente muito barata nos dias de hoje.

    
por 31.07.2009 / 10:50
6

Um computador possui uma certa quantidade de memória física. Mas na maioria das vezes queremos mais. Então nós trocamos alguma memória no disco.

Cada vez que precisamos dessa memória, ela precisa ser trocada de volta na memória (trocando alguma outra parte). Existem algoritmos extremamente inteligentes para minimizar o atraso, mas às vezes ainda temos que esperar.

No Windows, se você observar o gerenciador de tarefas, poderá mostrar as falhas da página da coluna. Isso mostra o número de vezes, um aplicativo solicita uma parte da memória que estava no disco e precisa ser trocada. Muitas falhas de página = aplicação lenta.

Este processo é usado em vários níveis. Um resumo do rápido ao lento:

  • No nível da CPU, existem registros. Estas são as memórias mais rápidas, mas a quantidade é limitada.
  • Também na CPU há um pequeno cache de memória. Aqui, uma pequena parte do programa em execução é armazenada para acesso rápido. Pesquise na ramificação prevendo algoritmos se você quiser saber mais.
  • Às vezes, há caches de nível 2 entre a CPU e a memória principal.
  • O próximo nível é a memória principal (RAM).
  • Último nível e o mais lento de todos é o disco, às vezes você pode usar pen drives como memória extra.
por 31.07.2009 / 10:53
3
cat /proc/pid/smaps

Se você não quiser usar swap, então não use uma partição swap (comente a linha em /etc/fstab ), mas isso impedirá que inicie um novo processo e fará com que o malloc falhe se você ficar sem memória física. Isso não é uma boa idéia em geral ... não é muito seguro e nem mesmo muito útil, já que o SO manterá as páginas quentes na memória e trocará para o disco aquelas que não estão sendo usadas recentemente.

Outra solução seria hackear o banco de dados para que ele bloqueie as páginas na memória (sei que isso pode ser feito, mas não sei exatamente como), mas, de qualquer forma, é como se seu banco de dados usasse próprios mecanismos de troca e cache.

Para saber qual é a troca e como a memória virtual funciona ... Eu recomendo que você dê uma olhada em algumas palestras do Sistema Operacional, talvez o Curso MIT Open possa ser útil.

    
por 31.07.2009 / 11:09
1

Eu encontrei uma resposta parcial. Uma Memória de Troca é um espaço no Disco Rígido do seu computador que os Sistemas Operacionais usarão para colocar as informações que estão realmente na RAM para liberá-la para outro aplicativo. Isso deve ser feito quando o sistema precisar de memória para um novo processo e não houver nenhum, portanto, podemos ver que, se o nosso sistema tiver bastante RAM, talvez não precise de memória SWAP.

UPDATE

Para descobrir onde o espaço de troca (ou memória virtual) você pode ir para o Gerenciador de Tarefas (CTRL + ALT + DEL) e ligar de VIEW - > COLUNAS - > MEMÓRIA VIRTUAL. Agora apenas calcule a diferença entre o uso de memória e a memória virtual. Também aqui está uma instrução como vê-lo se você estiver executando o Vista: link

    
por 31.07.2009 / 10:51
-1

Trocar é o espaço em disco usado como RAM. É (relativamente falando) muito lento, mas impede que os computadores travem quando estão tentando lidar com mais dados do que sua memória RAM pode manipular.

Para impedir que processos usem swap - instale mais RAM.

    
por 31.07.2009 / 10:50
-1

Se você não quiser que seus processos usem a memória swap, apenas desabilite a memória swap. Infelizmente, se você ficar sem memória, o kernel do Linux irá matar alguns de seus processos em execução, a fim de liberar alguma memória para uso.

Se você tem RAM suficiente para o seu sistema, você pode ir sem memória swap.

Eu tenho um laptop com 768Mb de RAM que não usa memória swap. É bom o suficiente para as minhas necessidades. Eu tenho um servidor com 256Mb de RAM e não usa memória swap. Ele está rodando 8 servidores virtuais usando a virtualização OpenVZ, sem problemas.

Então, cabe a você se você precisar de troca de memória.

    
por 31.07.2009 / 15:38

Tags