Quanta RAM é necessária para evitar o uso de swap?

4

No meu sistema sempre disponível alguma memória "Livre" e "Inativa", mas às vezes o sistema move alguns megabytes para trocar. Por noite, talvez em torno de 100MB, mas por alguns dias em swap poderia ser superior a 4000MB.

Como posso determinar a memória necessária para o meu sistema?

    
por moronizzz 22.07.2014 / 14:13

4 respostas

4

O FreeBSD divide a memória em 5 listas :

  • com fio (bloqueado na memória, não paginável)
  • ativo (usado recentemente)
  • inativo (não usado recentemente)
  • cache
  • grátis

Alguns deles têm mínimo livre e destino , por exemplo

Pool     Minimum Target
Free       0.7%    3%
Cache      3%      6%
Inactive   0%      4.5%

(Fonte: O Design e Implementação do Sistema Operacional FreeBSD , em vez de: 2004 cobrindo o FreeBSD 5.2 - esses números mudaram desde então, mas a abordagem geral não acredito).

O pagedaemon é encarregado de manter os níveis e paginar conforme a necessidade.

De uma VM do FreeBSD 9.0 que tenho aqui, estes são alguns dos números relevantes:

hw.availpages: 3138511
vm.stats.vm.v_inactive_target: 121342     # 3.9%
vm.stats.vm.v_free_target: 80895          # 2.6%
vm.stats.vm.v_free_reserved: 4011         # 0.1%
vm.stats.vm.v_free_min: 19221             # 0.6%
vm.stats.vm.v_cache_min: 80895            # 2.6%
vm.stats.vm.v_cache_max: 161790           # 5.1%

(Não tenho certeza de como eles são calculados, isso depende da memória física e presumivelmente kern.maxusers ).

O FreeBSD irá proactivamente anular a página para aumentar o cache disponível de modo que só porque a troca é usada não significa que seu sistema está sob pressão. É muito mais útil inspecionar (e representar graficamente!) As taxas de paginação e outros indicadores de carga, como E / S de disco e CPU, systat -io é um começo. Executar o locate / updatedb é uma boa maneira de alterar o uso da memória durante a noite.

Usar o swap mesmo quando há memória livre é um comportamento normal, ele está efetivamente se preparando para possíveis demandas de memória futuras enquanto ocioso, portanto, o uso de swap por si só não é uma maneira confiável de determinar os requisitos de RAM. O FreeBSD é muito bom em dizer quando você precisa sintonizar algo (grep "see tuning" no arquivo messages ).

Outra leitura útil:

por 23.07.2014 / 19:14
3

se você tiver memória sobressalente aumentando a memória não funcionando, você deve alterar o parâmetro swappiness . diz ao kernel com que frequência usa memória não física (swap).

verifique o valor do swappiness:

cat /proc/sys/vm/swappiness

altere o valor do swappiness temporário (perdido na reinicialização) para o valor 10 (bom valor que diminui o uso do swap)

sudo sysctl vm.swappiness=10

se você quiser alterar o arquivo de configuração de uso permanente:

sudo vim /etc/sysctl.conf

pesquise vm.swappiness e altere para o valor desejado.

vm.swappiness=10

salve e reinicie.

desciption:

what is swappines?

The swappiness parameter controls the tendency of the kernel to move processes out of physical memory and onto the swap disk. Because disks are much slower than RAM, this can lead to slower response times for system and applications if processes are too aggressively moved out of memory.

swappiness can have a value of between 0 and 100

swappiness=0 tells the kernel to avoid swapping processes out of physical memory for as long as possible

swappiness=100 tells the kernel to aggressively swap processes out of physical memory and move them to swap cache

The default setting in Ubuntu is swappiness=60. Reducing the default value of swappiness will probably improve overall performance for a typical Ubuntu desktop installation. A value of swappiness=10 is recommended, but feel free to experiment. Note: Ubuntu server installations have different performance requirements to desktop systems, and the default value of 60 is likely more suitable.

    
por 22.07.2014 / 14:43
0

minha resposta anterior não se aplica ao freeBSD, mas eu deixo. Eu testei e funcionou como um encanto no debian. para o freeBSD você pode usar o seguinte comando do sysctl para ver se o swap está habilitado ou não:

-bash-2.05b$ sysctl vm.swap_enabled
  vm.swap_enabled: 1

1 - Ativado

0 - Desativado

você pode desativá-lo escrevendo a seguinte linha em /etc/sysctl.conf :

vm.swap_enabled=0

com este link você pode ganhar mais informações sobre o seu swap e memória física.

    
por 23.07.2014 / 07:22
0

Uma pequena pesquisa apontou isso: Por que o conjunto de swappiness a 60 por padrão? o que explica ainda mais detalhes sobre o swappiness

E isso: link que explica sobre todos os parâmetros relacionados a vm. Se você estiver em gerenciamento de memória de processo único, ele pode ajudar a saber sobre outras restrições / parâmetros relacionados à memória.

    
por 22.07.2014 / 15:13