Fsync lento com SSD local do Google Cloud (Postgresql)

3

Estou recebendo transações inesperadamente baixas por segundo na opção "Local SSD" do GCE (comparando com o disco permanente SSD) usando testes simples "pgbench":

# With Local SSD
# /dev/mapper/vg0-data on /data type xfs (rw,noexec,noatime,attr2,inode64,noquota)
pg-dev-002:~$ pgbench -c 8 -j 2 -T 60 -U postgres
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 8
number of threads: 2
duration: 60 s
number of transactions actually processed: 10765
tps = 179.287875 (including connections establishing)
tps = 179.322407 (excluding connections establishing)

# With SSD Persistent Disk
# /dev/mapper/vg1-data on /data1 type xfs (rw,noexec,noatime,attr2,inode64,noquota)
pg-dev-002:/data$ pgbench -c 8 -j 2 -T 60 -U postgres
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 8
number of threads: 2
duration: 60 s
number of transactions actually processed: 62457
tps = 1040.806664 (including connections establishing)
tps = 1041.012782 (excluding connections establishing)

Os benchmarks "fio" mostram as IOPS anunciadas e a taxa de transferência para o SSD local. No entanto, a execução de "pg_test_fsync" em uma montagem de SSD local leva-me a acreditar que a latência do fsync é a causa. Os números de SSD locais são depois de aplicar o script de IRQ do Google aqui :

# Local SSD
open_datasync                     319.738 ops/sec    3128 usecs/op
fdatasync                         321.963 ops/sec    3106 usecs/op

# Persistent SSD
open_datasync                    1570.305 ops/sec     637 usecs/op
fdatasync                        1561.469 ops/sec     640 usecs/op
  • Testado com o Ubuntu 14.04 e imagens do Debian 7
  • Tipo de instância: n1-highmem-4
  • As opções de montagem são idênticas para ambos os tipos de volume

Eu não vi nada a respeito das limitações do fsync e do SSD local, mas não tenho certeza de onde mais verificar ou testar.

    
por Blake Atkinson 02.10.2015 / 01:38

1 resposta

3

Comparando um single local SSD / HDD / etc. para um controlador RAID tipo SAN, é como comparar um Fusca a um Audi RS10 Le-mans, sim, ambos saíram da mesma fábrica, e ambos usam motores de quatro tempos / SSDs / HDDs, mas suas afinações etc. são muito diferentes.

Eu posso dar a você vários exemplos de experiências adquiridas, mas as respostas simples estão relacionadas às enormes quantidades de cache de RAM com backup de bateria que o armazenamento baseado em SAN comparou ao não no SSD / HDD local. Mesmo os SSDs não conseguem competir com a RAM DDR3 suportada por bateria quando confirmam que os dados foram "comprometidos" com o disco. Ainda mais o único localdisk, pode (realisticamente) manipular apenas uma única operação de cada vez gravando um bloco para "disco", em comparação com os sistemas SAN suportados por bateria que podem manipular vários pedidos simultaneamente "gravando em disco" (conforme comprometia os dados para a bateria de backup RAM DDR3)

Por fim, a questão pode ser qual disco SSD local está sendo usado, já que tenho visto diferenças massivas nas performances de gravação entre diferentes tamanhos da mesma família de SSDs (quanto maior, mais rápido) para não mencionar as várias velocidades dos vários discos SSD faz lá fora.

Sim, os SSDs são mais rápidos do que os HDDs, mas ainda não são tão rápidos quanto a RAM DDR3 com bateria;)

    
por 02.10.2015 / 20:04