Dimensionando CPUs para Transações Paralelas

As transações de partição única possuem escala de rendimento linear à medida que a grade de dados cresce. Transações paralelas são diferentes de transações de partição única, pois elas acessam um conjunto de servidores (pode ser todos os servidores).

Se uma transação acessar todos os servidores, o rendimento será limitado ao rendimento do cliente que inicia a transação ou ao servidor mais lento que está sendo acessado. Grades de dados maiores propagam mais os dados e fornecem mais espaço do processador, memória, rede e assim por diante. Entretanto, o cliente deve aguardar que o servidor mais lento responda, e o cliente deve consumir os resultados da transação.

Quando uma transação acessa um subconjunto de servidores, M entre N servidores obtêm uma solicitação. O rendimento é então dividido N por M vezes mais rápido do que o rendimento do servidor mais lento. Por exemplo, se você tiver 20 servidores e uma transação que acessa 5 servidores, o rendimento será 4 vezes o rendimento do servidor mais lento na grade de dados.

Quando uma transação paralela é concluída, os resultados são enviados para o encadeamento do cliente que iniciou a transação. Este cliente deve então agregar os resultados únicos encadeados. Este tempo de agregação aumenta à medida que os número de servidores acessados pela transação aumentam. Entretanto, este tempo depende do aplicativo porque é possível que cada servidor retorne um resultado menor à medida que a grade de dados aumenta.

Normalmente, as transações paralelas acessam todos os servidores na grade de dados porque as partições são distribuídas de maneira uniforme pela grade. Neste caso, o rendimento é limitado ao primeiro caso.

Resumo

Com este dimensionamento, são obtidas três métricas como a seguir: Se você precisar de 10 servidores para requisitos de memória mas estiver obtendo apenas 50% do rendimento necessário devido à saturação do processador, então precisa do dobro de servidores.

Para maior estabilidade, você deve executar seus servidores a um carregamento de processador de 60% e JVMheaps a um carregamento de heap de 60%. Os picos podem então conduzir o uso do processador a 80-90%, mas não execute seus servidores regularmente em níveis superiores a este.