E/S de desempenho de disco errático (terrível) (Debian/Proxmox)

E/S de desempenho de disco errático (terrível) (Debian/Proxmox)

Resumo

Estou vendo uma flutuação drástica no desempenho de E/S em um espelho SSD ZFS no Proxmox VE 7 (Bullseye). Sou simplesmente muito novato para conseguir rastreá-lo sozinho.

Detalhes

Este é um desempenho MUITO ruim em tarefas do mundo real, portanto não se trata apenas de benchmarks artificiais. Mas para ajudar a diagnosticar, estou executando:

sysbench fileio --file-test-mode=rndrw run

Ele está rodando "bare-metal" no terminal Proxmox sem nenhuma VM ativa. Os resultados variam muito. Aqui estão dois exemplos:

File operations:
    reads/s:                      2316.07
    writes/s:                     1544.08
    fsyncs/s:                     4949.70

Throughput:
    read, MiB/s:                  36.19
    written, MiB/s:               24.13

General statistics:
    total time:                          10.0062s
    total number of events:              88040

Latency (ms):
         min:                                    0.00
         avg:                                    0.11
         max:                                   35.66
         95th percentile:                        0.65
         sum:                                 9947.54

Threads fairness:
    events (avg/stddev):           88040.0000/0.00
    execution time (avg/stddev):   9.9475/0.00

e

File operations:
    reads/s:                      22.60
    writes/s:                     15.07
    fsyncs/s:                     56.98

Throughput:
    read, MiB/s:                  0.35
    written, MiB/s:               0.24

General statistics:
    total time:                          10.6162s
    total number of events:              877

Latency (ms):
         min:                                    0.00
         avg:                                   11.43
         max:                                  340.62
         95th percentile:                       77.19
         sum:                                10020.19

Threads fairness:
    events (avg/stddev):           877.0000/0.00
    execution time (avg/stddev):   10.0202/0.00

Como você pode ver, há uma oscilação de 10.000 vezes no número total de eventos e um aumento maciço na latência. Essas oscilações não são “únicas”. Está constantemente flutuando entre esses tipos de extremos.

Fiz o meu melhor para tentar reduzir problemas simples de hardware. Ambos os SSDs são novos com todos os 100 em smartctl. Troquei os cabos SATA. Eu o executei com o espelho degradado para tentar isolar um problema de unidade única. Mudei as unidades para um controlador SATA separado. Nada me dá um resultado diferente.

Eu tenho um segundo servidor configurado de maneira semelhante, embora com SSDs mais antigos (e incomparáveis) no espelho. Não vendo esse problema. O hardware do servidor é diferente, no entanto. Os resultados ruins são do sistema descrito abaixo. Os resultados aparentemente "normais" são de um PC antigo convertido com um E3-1275v2.

O que espero são dicas para ajudar a diagnosticar esse problema. Parece que o problema está na latência. O que pode causar isso? Quais próximos passos devo tomar?

Desde já, obrigado!

Sistema (se ajudar)

  • MB: Supermicro X9DRi-F
  • Processador: Dual Xeon E5-2650 v2
  • RAM: 128 GB (8 x 16 GB)
  • Controladores SATA: SATA 3 integrado (SATA 2 separado também testado)
  • SSD: 2x 1GB TeamGroup SATA (sim, barato, mas deve servir)
  • Placas PCIe:
    • Mellanox MCX312B
    • LSI SAS9207-8i (HBA conectado a 8 discos desmontados... passado para VM)
    • Nvidia GTX 750 (passada para VM)

Responder1

Algo semelhante aconteceu comigo ontem com minha nova configuração: Proxmox VE 7 em um Intel 11500 com 32 GB de RAM e 2x SSD Crucial BX500 (estes são de nível consumidor) configurados como espelho ZFS.

Fiz um benchmark usando ddpara gravar 1GB de zeros no SSD e ele estava rodando a 5 MB/s (sei que ddnão é bom para benchmarking, mas mesmo assim...). Durante o benchmark, iostatestava em 100% de utilização. No meu caso resolvi o problema de desempenho cortando os SSDs. Você pode forçá-lo usando zpool trim rpoole ativar o ajuste automático com zpool set autotrim=on rpool. Depois de cortar os discos, executei o benchmark novamente e ele rodou em 7s (153 MB/s).

Durante o processo para descobrir como melhorar o desempenho, defini xattrconforme sarecomendado noWiki Proxmoxe ajustei o zfs_arc_min/ zfs_arc_maxe outros parâmetros do kernel.

Espero que isso funcione para você também.

Responder2

Você deve criar o pool zfs no SSD com ashift=12 para alinhar com os setores 4096 do SSD.

Verifique o valor atual

zpool get all pool_name | grep ashift

Verifique também o alinhamento da partição para 1 MB (2.048 setores de 512 bytes)

Responder3

zfs é cópia na gravação fs. é muito ruim para SSDs baratos. você pode testar este SSD com a máquina Windows diretamente, apagando-o com segurança e fazendo um teste de gravação completo (acho que o HD Tune pode fazer isso) e você verá o desempenho que esse SSD tem quando fica sem SLC \ RAM ... ele vai seja muito pobre... tipo 50-70 mb/s em vez de 500+ para sata. também alguns SSD baratos usam memória RAM do sistema em vez do próprio módulo RAM ou cache slc, e isso é ruim para o zfs. Espero que esta ajuda tenha tido um problema semelhante ao resolvido alterando o SSD para 980 Pro (mas tamanho menor causa de custo)

informação relacionada