Como melhor ajustar a SAN / Iniciadores Dell PowerVault MD3600i para um melhor desempenho?

3

Proprietário recente de um Dell PowerVault MD3600i, estou tendo alguns resultados estranhos.

Eu tenho um Switch 24x 10GbE dedicado (PowerConnect 8024), configurado para jumbo frames 9K.

O MD3600 possui 2 controladores RAID, cada um com 2x nics Ethernet 10GbE. Não há mais nada no interruptor; uma VLAN para tráfego SAN.

Aqui está o meu multipath.conf

defaults {
    udev_dir        /dev
    polling_interval    5
    selector        "round-robin 0"
    path_grouping_policy    multibus
    getuid_callout      "/sbin/scsi_id -g -u -s /block/%n"
    prio_callout        none
    path_checker        readsector0
    rr_min_io       100
    max_fds         8192
    rr_weight       priorities
    failback        immediate
    no_path_retry       fail
    user_friendly_names yes
#   prio            rdac
}
blacklist {
    device {
               vendor "*"
        product "Universal Xport"
        }
#   devnode "^sd[a-z]"
}

devices {
    device {
           vendor "DELL"
           product "MD36xxi"
           path_grouping_policy group_by_prio
           prio rdac 
        #  polling_interval  5
           path_checker rdac
           path_selector "round-robin 0"
           hardware_handler "1 rdac"
           failback immediate
           features "2 pg_init_retries 50"
           no_path_retry 30
           rr_min_io 100
           prio_callout "/sbin/mpath_prio_rdac /dev/%n"
       }
}

e iscsid.conf:

node.startup = automatic
node.session.timeo.replacement_timeout = 15
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 10
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144

Após meus testes; Eu mal posso chegar a 200 Mb / s de leitura / gravação.

Devo esperar mais que isso? Desde que tenha dois 10 GbE, meus pensamentos estão por volta dos 400 Mb / s.

Alguma ideia? Diretrizes? Dicas para solução de problemas?

EDITAR:

A matriz é configurada como um volume lógico único de 5,7 TB Os discos são todos 1TB 7.2k SAS 6GB (ST1000NM0001) RAID é RAID10

Algumas linhas da configuração do Swith:

interface Te1/0/23
storm-control broadcast
storm-control multicast
spanning-tree portfast
mtu 9000
switchport access vlan 40
exit
...
iscsi cos vpt 5
management access-list "default"
permit service ssh priority 1
permit service http priority 2
permit service https priority 3

E saída multipath:

[root@xnode4 ~]# multipath -ll -v2
multipath.conf line 30, invalid keyword: prio
mpath1 (36d4ae520009bd7cc0000030e4fe8230b) dm-2 DELL,MD36xxi
[size=5.5T][features=3 queue_if_no_path pg_init_retries 50][hwhandler=1 rdac][rw]
\_ round-robin 0 [prio=400][active]
 \_ 7:0:0:0   sdc 8:32  [active][ready]
 \_ 9:0:0:0   sde 8:64  [active][ready]
 \_ 11:0:0:0  sdi 8:128 [active][ready]
 \_ 13:0:0:0  sdn 8:208 [active][ready]
\_ round-robin 0 [prio=0][enabled]
 \_ 10:0:0:0  sdj 8:144 [active][ghost]
 \_ 12:0:0:0  sdh 8:112 [active][ghost]
 \_ 8:0:0:0   sdd 8:48  [active][ghost]
 \_ 6:0:0:0   sdb 8:16  [active][ghost]
    
por Disco 27.06.2012 / 17:13

3 respostas

6

A julgar pelos seus comentários e edições, seu gargalo pode ser o armazenamento. A primeira coisa, supondo que você tenha o cache de gravação ativado, todas as suas gravações até que o cache esteja cheio devem ser feitas na velocidade da linha. Você pode medir isso com bastante facilidade, descobrindo quanto de cache você tem e fazendo um benchmark de 100% de gravação com menos dados do que isso. Em segundo lugar, quando o cache começa a desmembrar os dados para o disco, o desempenho de gravação no RAID-10 (supondo que os controladores não estejam introduzindo gargalos) será metade do desempenho de leitura. Isso porque cada gravação é feita em dois discos, mas a leitura só é feita a partir de um. Um benefício do RAID-10 é que não há paridade para calcular, então é improvável que os processadores dos controladores simplesmente não consigam acompanhar.

Em seguida, se o seu benchmark estiver medindo uma mistura de leituras e gravações, o desempenho que você obterá do controlador de armazenamento dependerá do tipo de IO. Se for sequencial, você obterá um número maior de MB / s, mas um número menor de IO / s. Se for um bloco pequeno aleatório, você obterá números baixos de MB / s, mas quantos IO / s forem fornecidos pelos seus discos. Cada disco de 7200 RPM fornecerá um certo número de IO / s quando você estiver lendo imprevisivelmente, de modo que o número de unidades em seus tempos de invasão o número de IO / s por unidade será seu limite máximo de desempenho.

Por fim, se você tiver todo o armazenamento em um grande volume apresentado como um único LUN, sua fila de comandos poderá estar saturada. Os sistemas operacionais normais têm uma profundidade de fila de comandos configurável (o número de E / Ss pendentes que eles alinharão para o armazenamento) e cada volume / LUN tem sua própria fila. Outro problema em ter todo o armazenamento no mesmo LUN é que, geralmente, o IO é enviado para um único controlador para esse LUN. Mesmo em sistemas de armazenamento ativos / ativos (que eu não tenho certeza se o seu é), eles podem ter uma afinidade por um controlador em relação a outro. O objetivo seria criar um monte de volumes e dividi-los uniformemente entre os controladores.

    
por 29.06.2012 / 20:01
1

Compare-o com um único disco e faça-o novamente com todos os seus discos em um ataque 0.

A raid 0 não terá nenhuma sobrecarga de raid10 ou raid 5.

Veja também o seu cache no MD. O padrão é 4k blocos, mas pode ir até 32k blocos. Eu tinha até 30% de diferença na velocidade entre esses 2 valores. Teste isso para suas cargas de trabalho.

Use algo como o SQLIO, onde você pode usar mais threads. Meus números finalmente começaram a ficar bem quando eu trabalhei mais duro.

E verifique se o MD está configurado para 10G. A opção é 10G ou 1G nas portas, ele não negocia automaticamente.

    
por 04.07.2012 / 00:49
1

Talvez você queira aumentar o tamanho do bloco de cache na matriz de 4k para 16k ou 32k (especialmente se você estiver procurando por uma carga de trabalho sequencial)

    
por 24.03.2013 / 01:56