Quanto mais threads, menos IOPS?

1

Acabei de começar a experimentar a AWS. Eu tenho uma instância micro Postgres no RDS e estou executando um rastreador em um c4.large. Quando eu tenho apenas uma aranha (um thread), recebo cerca de 10 IOPS. mas se duas spiders (2 threads) foram implantadas, recebo apenas 7 write IOPS. Se bem entendi, desde que eu aloquei 20gb, o IOPS máximo deve ser 60IOPS no total. Anexei o monitoramento abaixo.

Quando apenas uma aranha foi implantada:

Quandoumasegundaaranhafoiimplantadaaoladode:

Observe a queda de uma média de 10 IOPS de gravação para uma média de 7 IOPS de gravação.

Qualquer ajuda será muito apreciada.

    
por Kar 14.03.2015 / 08:23

1 resposta

1

Que tipo de backend de E / S você está usando? É mecânico ou flash (SSD)?

No caso do back-end mecânico, o que você está observando é o comportamento esperado: O Postgres é um aplicativo pesado de gravação sincronizada, e isso significa que mesmo se você aumentar os encadeamentos em execução, as gravações em andamento (profundidade da fila) serão continue abaixado. Ao mesmo tempo, você está constantemente forçando as cabeças do disco a se mover para locais (tipicamente) muito diferentes.

Em outras palavras, você está emitindo uma carga mais pesada em seu disco sem os benefícios que surgem com maior profundidade de fila.

Esse é o motivo pelo qual os bancos de dados são frequentemente implantados em servidores com um cache de write-back de bateria: o cache de write write absorve múltiplas gravações e coalescência, permitindo maior profundidade de fila para operações de disco.

    
por 14.03.2015 / 11:08