Entendendo os perfis ajustados recomendados pelo RedHat

8

Implementaremos o ajuste (e o numad) em ~ 1000 servidores, a maioria deles servidores VMware no armazenamento NetApp ou 3Par.

De acordo com a documentação do RedHats, devemos escolher o virtual-guestperfil. O que está fazendo pode ser visto aqui: tuned.conf

Estamos alterando o agendador de E / S para NOOP, pois o VMware e o NetApp / 3Par devem fazer agendamento suficiente para nós.

No entanto, depois de investigar um pouco, não sei por que eles estão aumentando vm.dirty_ratioe kernel.sched_min_granularity_ns.

Tanto quanto eu entendi, aumentar vm.dirty_ratiopara 40% significa que, para um servidor com 20 GB de RAM, 8 GB podem estar sujos a qualquer momento, a menos que vm.dirty_writeback_centisecsseja atingido primeiro. E durante a liberação desses 8 GB, todas as E / S do aplicativo serão bloqueadas até que as páginas sujas sejam liberadas.

Aumentar o dirty_ratio provavelmente significaria maior desempenho de gravação em picos, pois agora temos um cache maior, mas, novamente, quando o cache preencher IO, será bloqueado por um tempo consideravelmente mais longo (vários segundos).

A outra é por que eles estão aumentando o sched_min_granularity_ns. Se eu entendi corretamente, aumentar esse valor diminuirá o número de intervalos de tempo por época ( sched_latency_ns), o que significa que as tarefas em execução terão mais tempo para concluir seu trabalho. Eu posso entender que isso é uma coisa muito boa para aplicativos com muito poucos threads, mas por exemplo. apache ou outros processos com muitos threads isso não seria contraproducente?

espenfjo
fonte

Respostas:

7

A resposta curta é que qualquer ajuste é adivinhação e só tem valor quando feito backup com dados empíricos: Experimente. Meça isto. Se você não gostar, ajuste-o.

Uma resposta mais longa:

Aumentar o dirty_ratio provavelmente significaria maior desempenho de gravação ... A IO será bloqueada por um tempo consideravelmente mais longo

Não. Aumentar a taxa de sujeira significa que é menos provável que seu sistema entre em um estado em que precisa começar a bloquear as gravações. A desvantagem é que há mais memória usada e maior risco de perda de dados em uma interrupção.

o que significa que tarefas em execução terão mais tempo para concluir seu trabalho

Os processos geralmente renderão antes que seu intervalo de tempo expire. O problema com uma VM é que sua máquina pode estar competindo pelo cache da CPU e L1 / L2 com outras VMs - altos níveis de alternância de tarefas (devido à antecipação) têm um grande impacto na taxa de transferência. Os tipos de aplicativos geralmente implantados nas VMs são aqueles vinculados à CPU (servidores Web, servidores de aplicativos).

Sim, o aumento na taxa de transferência (que se aplica a todos os tipos de aplicativos) terá o custo de um aumento na latência - mas o último é da ordem de microssegundos quando a maioria das transações leva milissegundos. Se você precisar de capacidade em tempo real / latência muito baixa, não deverá usar uma VM.

symcbean
fonte
Sério. Estas são apenas diretrizes. Sintonize com o seu gosto. Ainda uso o agendador "prazo" recomendado para VMs.
ewwhite
1
@ewwhite Por que você recomendaria, em deadlinevez de NOOP, no VMware com armazenamento adequado?
espenfjo 26/06
@espenfjo Bem, porque RedHat recomenda deadline... mas também vejo minha resposta.
ewwhite
12

Aqui está a programação das configurações de admissão ajustada ...

Eu acho que ajuda vê-los em forma de tabela. O principal a notar é que as configurações padrão do RHEL6 são uma porcaria! A outra coisa é que os perfis de armazenamento corporativo e de convidado virtual são idênticos, exceto pela menor troca no lado do convidado virtual (faz sentido, certo?).

perfis ajustados

Quanto a uma recomendação sobre o elevador de E / S de armazenamento, você tem algumas camadas de abstração na camada de armazenamento. Usar o planejador noop faria sentido se você estivesse usando RDMs ou apresentasse armazenamento diretamente em suas máquinas virtuais. Mas como eles vão viver no NFS ou VMFS, ainda gosto das opções de ajuste adicionais oferecidas pelo agendador de prazos.

Os perfis ajustados podem ser alterados on-the-fly nos sistemas em execução; portanto, se você tiver alguma dúvida, teste com seu aplicativo, ambiente e benchmark específicos.

ewwhite
fonte
1
ok obrigada Entenda por que você quer deadlineagora :)
espenfjo
8

Assista aos vídeos de ajuste de desempenho de Shak e Larry da Summit, eles falam sobre os perfis ajustados em profundidade.

Uma das maiores conclusões pretendidas é que os perfis são apenas um ponto de partida recomendado, não números imutáveis ​​que são magicamente perfeitos para todos os ambientes.

Comece com um perfil e brinque com as configurações. Gere uma boa carga de trabalho de teste semelhante à produção e meça métricas importantes para o seu negócio.

Altere uma coisa de cada vez e registre todos os resultados a cada iteração. Quando terminar, analise os resultados e escolha as configurações que deram os melhores resultados. Esse é o seu perfil sintonizado ideal.

suprjami
fonte
Tem um link para a palestra Shak & Larry?
Aaron Copley
2
Adicionei links de vídeo à minha resposta.
suprjami