SLOG IOPS do ZFS está mais perto de IOPS aleatórios do que sequenciais

4

Eu tenho uma instalação do Solaris 11.3 com um pool do ZFS que consiste em uma faixa de 5 vdev cada, consistindo em três discos SAS de 10K. Eu também configurei um SLOG contendo vdevs espelhados. Eu configurei meus parâmetros de ajuste do ZFS para o seguinte:

zil_slog_limit: 1073741824
zfs_txg_timeout:256
zfs_vdev_max_pending:           256
zfs_immediate_write_sz:         67108864

Estou com um desempenho de gravação muito mais lento do que o esperado ao gravar em um sistema de arquivos com async=always (estou tentando determinar o melhor desempenho que posso esperar quando esse sistema de arquivos é montado via NFS com sincronização para imagens de disco da VM ). Quando eu corro

time dd if=/dev/urandom of=testfile bs=512 count=10000

Eu obtenho cerca de 100 IOPS por vdev (discos SAS 10K espelhados de 10 K) no SLOG (assim, cerca de 100 segundos para executar com um vdev no SLOG e 50 segundos com dois no SLOG). Eu não tenho unidades extras para tentar na matriz, mas esse comportamento para um versus dois dispositivos sugere que os vdevs do SLOG estão funcionando. Eu também usei zpool iostat -v 5 para verificar se eles são os únicos dispositivos que recebem gravações enquanto eu estou executando o teste (além dos discos de dados quando o SLOG é liberado). As gravações por segundo de zpool iostat correspondem aproximadamente às IOPS que calculei que recebo do tempo dd .

Eu tenho a impressão de que os SLOGs devem ser escritos quase inteiramente sequencialmente; 100 IOPS é o que eu esperaria para gravações aleatórias.

Edit: Eu tentei uma coisa parecida com uma máquina de reposição rodando o FreeNAS. A máquina tem dois drives em um espelho + um SLOG não espelhado. IOPS é aleatório-I / O lento, não lento em sequência, no pool se estiver usando um HDD para o SLOG e > 10k IOPS usando um SSD.

Há algo faltando no meu entendimento e / ou alguns parâmetros que preciso mudar? Obrigado antecipadamente!

    
por lungj 17.01.2018 / 09:45

1 resposta

1

Os dispositivos SLOG são para oferecer segurança no caso de muitas gravações simultâneas se você tiver uma falha de energia. Portanto, os dados são gravados nos dispositivos LOG para estarem lá, se você perder a energia, mas depois são liberados para o disco da memória periodicamente (vários segundos), e não do dispositivo LOG. Em um caso normal, os dispositivos LOG não são lidos, eles não são dispositivos de cache, se a sua caixa falhar e perder o conteúdo da RAM antes de poder liberar seus dados no disco, o ZFS lerá isso do dispositivo LOG e liberará a partir daí. É por isso que usamos o SSD para os dispositivos LOG.

Este é um bom artigo neste tópico, veja isto: link

    
por 17.01.2018 / 10:12

Tags