Desempenho insatisfatório de gravação do ZFS ao adicionar mais eixos

5

Estou usando o ZFS no Linux e estou tendo um sintoma bastante estranho: quando adiciono mais discos ao sistema, a velocidade na qual cada unidade grava é reduzida, negando efetivamente os eixos adicionais para o desempenho de gravação sequencial.

Os discos são conectados ao host por meio de um HBA (LSI 9300-8E) nas prateleiras de disco SAS

Durante o teste abaixo, corri o seguinte comando no IO Zone iozone -i 0 -s 10000000 -r 1024 -t 10

Aqui estão os resultados dos meus testes:

No meu primeiro teste, criei um espelho com 12 discos, que mostram um desempenho esperado de gravação de cerca de 100 MB / s por segundo em cada disco.

zpool create -o ashift=12 -f PoolA mirror S1_D0 S2_D0 mirror S1_D1 S2_D1 mirror 
S1_D2 S2_D2 mirror S1_D3 S2_D3 mirror S1_D4 S2_D4 mirror S1_D5 S2_D5

              capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
PoolA       3.60G  10.9T      0  5.06K      0   638M
  mirror     612M  1.81T      0    863      0   106M
    S1_D0       -      -      0    862      0   106M
    S2_D0       -      -      0    943      0   116M
  mirror     617M  1.81T      0    865      0   107M
    S1_D1       -      -      0    865      0   107M
    S2_D1       -      -      0    939      0   116M
  mirror     613M  1.81T      0    860      0   106M
    S1_D2       -      -      0    860      0   106M
    S2_D2       -      -      0    948      0   117M
  mirror     611M  1.81T      0    868      0   107M
    S1_D3       -      -      0    868      0   107M
    S2_D3       -      -      0  1.02K      0   129M
  mirror     617M  1.81T      0    868      0   107M
    S1_D4       -      -      0    868      0   107M
    S2_D4       -      -      0    939      0   116M
  mirror     616M  1.81T      0    856      0   106M
    S1_D5       -      -      0    856      0   106M
    S2_D5       -      -      0    939      0   116M
----------  -----  -----  -----  -----  -----  -----

No próximo teste, adiciono mais 12 discos para um total de 24 discos e efetivamente reduzimos a largura de banda para cada disco pela metade.

zpool create -o ashift=12 -f PoolA mirror S1_D0 S2_D0 mirror S1_D1 S2_D1 
mirror S1_D2 S2_D2 mirror S1_D3 S2_D3 mirror S1_D4 S2_D4 
mirror S1_D5 S2_D5 mirror S1_D6 S2_D6 mirror S1_D7 S2_D7 
mirror S1_D8 S2_D8 mirror S1_D9 S2_D9 mirror S1_D10 S2_D10 
mirror S1_D11 S2_D11

                capacity     operations    bandwidth
pool         alloc   free   read  write   read  write
-----------  -----  -----  -----  -----  -----  -----
PoolA        65.2M  21.7T      0  4.67K      0   588M
  mirror     6.56M  1.81T      0    399      0  49.0M
    S1_D0        -      -      0    399      0  49.0M
    S2_D0        -      -      0    513      0  63.1M
  mirror     5.71M  1.81T      0    400      0  48.7M
    S1_D1        -      -      0    400      0  48.7M
    S2_D1        -      -      0    515      0  62.6M
  mirror     6.03M  1.81T      0    396      0  49.1M
    S1_D2        -      -      0    396      0  49.1M
    S2_D2        -      -      0    509      0  62.9M
  mirror     5.89M  1.81T      0    394      0  49.0M
    S1_D3        -      -      0    394      0  49.0M
    S2_D3        -      -      0    412      0  51.3M
  mirror     5.60M  1.81T      0    400      0  49.0M
    S1_D4        -      -      0    400      0  49.0M
    S2_D4        -      -      0    511      0  62.9M
  mirror     4.65M  1.81T      0    401      0  48.9M
    S1_D5        -      -      0    401      0  48.9M
    S2_D5        -      -      0    511      0  62.3M
  mirror     5.36M  1.81T      0    397      0  49.2M
    S1_D6        -      -      0    397      0  49.2M
    S2_D6        -      -      0    506      0  62.5M
  mirror     4.88M  1.81T      0    395      0  49.2M
    S1_D7        -      -      0    395      0  49.2M
    S2_D7        -      -      0    509      0  63.3M
  mirror     5.01M  1.81T      0    393      0  48.2M
    S1_D8        -      -      0    393      0  48.2M
    S2_D8        -      -      0    513      0  63.0M
  mirror     5.00M  1.81T      0    399      0  48.7M
    S1_D9        -      -      0    399      0  48.7M
    S2_D9        -      -      0    513      0  62.5M
  mirror     5.00M  1.81T      0    398      0  49.2M
    S1_D10       -      -      0    398      0  49.2M
    S2_D10       -      -      0    509      0  62.8M
  mirror     5.55M  1.81T      0    401      0  50.0M
    S1_D11       -      -      0    401      0  50.0M
    S2_D11       -      -      0    506      0  63.1M
-----------  -----  -----  -----  -----  -----  -----

Esperando que alguém possa esclarecer por que adicionar mais discos efetivamente reduziria o desempenho a cada disco.

INFORMAÇÕES ADICIONAIS REQUERIDAS

Resumo do hardware

Servidor

Lenovo ThinkServer RD550, único 10 Core Xeon, 256 GB de RAM, SO em RAID 1 no controlador 720ix.

HBA do servidor

LSI 9300-8e mpt3sas_cm0: LSISAS3008: FWVersion (12.00.00.00), ChipRevision (0x02), BiosVersion (06.00.00.00)

Prateleiras de disco

As prateleiras de disco são o Lenovo ThinkServer SA120 com controladores SAS duplos, fontes de alimentação duplas cabeadas de forma redundante com dois caminhos para cada disco.

Conectividade da prateleira de disco

As prateleiras de disco são conectadas através de cabos SAS de 5 metros e conectadas em margarida através das prateleiras com um loop de volta ao controlador no final.

Informações da unidade

Unidades SAS de 48 x 2 TB, modelo Seagate # ST2000NM0023 As unidades são configuradas por meio do multipath e cada unidade possui caminhos redundantes.

Resumo do software

Sistema Operacional / Kernel

CentOS 7.3 Saída de "uname -a" Linux 4.9.9-1.el7.elrepo.x86_64 # 1 SMP Qui Fev 9 11:43:40 EST 2017 x86_64 x86_64 x86_64 GNU / Linux

Ajuste do ZFS

/etc/modprobe.d/zfs.conf é um arquivo em branco atualmente, eu não tentei muito aqui, o desempenho de gravação seqüencial parece que deve aumentar com mais discos.

    
por user56789 22.03.2017 / 07:59

1 resposta

0

Aguardando mais informações ...

Você deve fornecer detalhes como:

  • A marca / modelo / velocidade / interface específica dos discos. ( eles são SAS? SATA? )
  • O gabinete JBOD externo específico em uso.
  • Como o gabinete se conectou ao servidor.

Quem sabe? Você pode apenas estar com excesso de assinaturas no expansor SAS do gabinete e não conseguir dimensionar adicionando eixos de unidade.

Claro, há um elemento de ajuste aqui também. Precisamos ver quais modificações você fez no seu /etc/modprobe.d/zfs.conf .

Se esse arquivo estiver vazio, provavelmente você está perdendo um número enorme de ajustes disponíveis para sua compilação do ZFS.

Você também pode explicar qual sistema operacional está em uso? Distribuição, kernel e versão.

Basta seguir meu guia Linux + ZFS HA .

Você também vai querer ajustar seu zfs.conf:

Aqui está o meu:

#options zfs zfs_arc_max=51540000000
options zfs zfs_vdev_scrub_min_active=24
options zfs zfs_vdev_scrub_max_active=64
options zfs zfs_vdev_sync_write_min_active=8
options zfs zfs_vdev_sync_write_max_active=32
options zfs zfs_vdev_sync_read_min_active=8
options zfs zfs_vdev_sync_read_max_active=32
options zfs zfs_vdev_async_read_min_active=8
options zfs zfs_vdev_async_read_max_active=32
options zfs zfs_top_maxinflight=320
options zfs zfs_txg_timeout=15
options zfs zfs_vdev_scheduler=deadline
options zfs zfs_prefetch_disable=0
options zfs l2arc_write_max=8388608
options zfs l2arc_headroom=12
options zfs zfs_dirty_data_max_percent=40
options zfs zfs_vdev_async_write_min_active=8
options zfs zfs_vdev_async_write_max_active=32
options zfs zfs_immediate_write_sz=131072
options zfs zil_slog_limit=536870912
    
por 22.03.2017 / 10:16