Os documentos oficiais da Oracle dizem que, para uma máquina com mais de 16GiB de RAM, precisamos alocar 16GiB de swap.
Nossos servidores são RHEL 7 e possuem 256GiB de RAM.
Os DBAs não querem ver a troca do sistema, então eles querem que monitoremos os 16GiB de troca de forma muito agressiva.
Sugeri que dobrássemos a RAM para 512GiB (a despesa está aprovada) e desabilitássemos a troca. No entanto, isso vai contra a recomendação da Oracle de ter 16GiB de swap, mesmo que dobremos a RAM.
Honestamente, não entendo como ter 3% de swap faz sentido, ou por que, se estou adicionando mais RAM do que tínhamos swap, temos que manter o swap.
Então, existem bons argumentos que eu possa usar para justificar a execução do Oracle sem swap?
PS A única razão pela qual mencionei a duplicação da RAM é para demonstrar o ridículo do argumento que estou tendo dificuldade em defender. O que realmente estou procurando são argumentos para justificar a desativação da troca.
Desativar a troca é uma boa ideia se
Esse tipo de coisa geralmente acontece com bancos de dados. Vejo isso mais com bancos de dados noSQL, mas bancos de dados relacionais podem sofrer o mesmo desafio.
Não há nada no sistema operacional que exija troca para estar lá. O Linux lida com isso com muita elegância, eliminando o último processo que solicitou memória. Você não quer chegar a esse ponto, portanto, certifique-se de ajustar o Oracle para usar apenas ~ 90% da memória, para que haja alguma sobra para os daemons do sistema e margem para erro. A memória "livre" também é usada para armazenar em buffer a E/S do disco, o que é uma grande vitória no desempenho, portanto, tentar consumir mais memória pelo próprio banco de dados acabará por diminuir o desempenho geral do sistema o suficiente para ser contraproducente.
Mesmo com sistemas que têm uma fração da memória da questão se o aplicativo é um banco de dados ou um cache ou sistema semelhante, eu padronizaria a não troca neste ponto.
autoridades
Para que você não confie apenas na minha palavra:
Cassandra
Datastax explica para Cassandra:
riak
Basho explica para Riak que você deve:
mysql
Percona está em cima do muro e fornece advertências úteis para ambos os lados da questão. MariaDB discorda de desabilitar swap:
ServerFault
Uma resposta bem recebida aqui inclui:
Essa resposta tem 22 votos positivos hoje e tem 4 anos. Você também pode ver algumas outras respostas exaltando o valor da troca, mas não há indicação de que estejam executando bancos de dados. Eles também não têm tantos votos positivos.
:)
lula
Embora eles não recomendem abertamente desativar a troca, os caras do squid dizem :
Isso é o que você não quer que aconteça com seu banco de dados.
redis
Embora o redis recomende oficialmente a troca , os usuários não o compram :
hadoop
Como visto nesta resposta com mais votos na comunidade hortonworks :
Eu gosto disso porque está falando sobre um aplicativo Java, mas chega a muitas das mesmas conclusões mencionadas acima sobre bancos de dados. Além disso, menciona o monitoramento , que é muito útil para ajustar aplicativos de alto desempenho. Se você não tem números para comparar tudo é baseado em sentimentos que são mais difíceis de comparar. Faça gráficos para cada métrica mensurável - latência no nível do aplicativo e taxa de transferência para CPU, disco, memória e gráficos de rede. Esses fornecem a maior parte dos dados reais sobre os quais você precisa tomar decisões.
Alex no Linux tem uma leitura interessante sobre este assunto: "Swap vs. no swap" http://www.alexonlinux.com/swap-vs-no-swap
O ponto principal é que, sem swap:
Por que não manter uma quantidade razoável de swap para páginas não utilizadas e modificar a pressão do cache vfs para modificar o swapiness para trocar apenas no caso de condição OOM. Além disso, você pode fixar os processos oracle na memória principal para garantir que eles nunca toquem no disco. Isso garante que o banco de dados não seja afetado por atingir sistemas IO lentos e também permite que você libere lixo da memória principal para ser usado pelo banco de dados, buffers e cache. É o melhor dos dois mundos.
Este tópico aparece com frequência. Swap é apenas uma extensão da RAM, então vamos comprar mais RAM, certo? Errado. A configuração com swap de 16 GiB e 512 GiB de RAM faz todo o sentido econômico. Deixe-me explicar.
Se você conhece bem o software principal, sabe quanta memória "estúpida" é necessária com bastante precisão. Que memória "estúpida"? Vários códigos e dados que inicialmente aparecem na RAM, mas nunca mais serão necessários de forma crítica. Ou seja, o desempenho visto pelo usuário nunca será prejudicado porque esse material não está prontamente disponível na memória.
Em vez de consertar o software, você pode apenas dar a ele essa quantidade de troca, mas não mais do que essa quantidade . Sim, deixe-o usar 100% do swap. Essa é a questão. Não aumente a troca, ou corre o risco de que alguma coisa crítica acabe acidentalmente lá. Documente, para que as pessoas não surtem ao ver 100% de uso de swap. No caso do Oracle, esse valor é de 16 GiB e posso dizer pela minha experiência que será usado, mesmo em uma caixa de 700 GiB, e você não experimentará o impacto do swpin no desempenho .
Na verdade, você obtém 16 GiB de RAM para fazer um trabalho real e beneficiar seus usuários. A partir de 2017, reduz o custo da sua organização em aproximadamente $ 50. Se o seu servidor tiver 256 GiB de RAM, configure a troca e economize US$ 50. Se o seu servidor tiver 10 TiB de RAM, configure a troca e economize... $50. Ver? Ainda o mesmo.
Atualmente, é sempre seguro ter swap zero. Simplesmente custa a você aqueles $ 50, só isso.
Se sua organização não for capaz de lidar com swap 100% usado (por exemplo, uma equipe de monitoramento separada, etc.), não o faça. Se você fizer alguém pensar sobre esse assunto, você já desperdiçou $ 50 do tempo deles.
Alguns fornecedores realmente não desperdiçam memória. E alguns fornecedores não se sentem confiantes o suficiente para estimar a quantidade de alocações "estúpidas", então eles dizem "swap zero" para evitar problemas desconhecidos apenas para economizar um monte de dinheiro. Tudo bem também! Eu apenas confiaria no fornecedor nisso, eles dão suporte às instalações, eles sabem o que fazem.