Destino iSCSI
Ubuntu 14.04 (Trusty Tahr) com 16 GB de RAM e 16 núcleos de CPU como destino iSCSI suportado por LVM usando três discos SSD Samsung, cada um capaz de executar 65k IOPS usando um controlador LSI de 6 Gbit / s com cache integrado.
Referência no disco SSD no destino:
fio --filename=/dev/sdd --direct=1 --sync=1 --rw=write --bs=4k --numjobs=10 --iodepth=1 --runtime=60 --time_based --group_reporting --name=ssd-max
iops=65514
Onde sdd
está configurado no RAID 0 de hardware usando três SSDs Samsung 850 EVO.
Iniciador
Exportei um LUN 500G em um cliente Ubuntu 14.04 com 32 GB de RAM e 8 CPUs principais.
Referência no LUN exportado
fio --filename=/dev/sdg --direct=1 --sync=1 --rw=write --bs=4k --numjobs=10 --iodepth=1 --runtime=60 --time_based --group_reporting --name=client-max
iops=2400
Há uma queda significativa de desempenho ao fazer o DAS e pela rede, eu esperava pelo menos 10k IOPS.
A comunicação entre o alvo e o iniciador é inferior a 1 ms e o iperf mostra uma taxa de transferência de rede de 9,2 Gbit / s.
Entendo que haverá um impacto no desempenho das gravações em 4k, pois cada dado precisa passar pela pilha de rede do iniciador e do destino antes de ser gravado no disco, mas essa é uma queda inaceitável de 65k para 2k.
Onde pode estar o problema? Eu tenho uma NIC Ethernet de 10 Gbit / s entre o alvo e o iniciador. Alguma ideia?
fonte
Respostas:
Resposta curta: Este é o resultado de latência de rede e uma carga de trabalho de série (como você imposta usando
direct=1
,sync=1
eiodepth=1
).Resposta longa: usando
direct=1
,sync=1
eiodepth=1
você criou uma carga de trabalho de série, como novas gravações não podem ser colocados em fila antes da gravação anterior foi cometido e confirmada. Em outras palavras, a taxa de envio de gravações depende estritamente da latência da rede. Uma simplesping
máquina entre duas pode muito bem exceder 0,2 ms, mais ainda quando se usa um protocolo de nível superior como TCP (e iSCSI na parte superior). Presumindo uma latência total da rede de cerca de 0,33 ms, você tem um valor máximo de IOPS de cerca de 3000. Isso não leva em consideração outras fontes de latência (es: os próprios discos), portanto, está alinhado com o que você gravou.Tente o seguinte: execute uma primeira referência sem
--direct=1 --sync=1
e outra com essas opções, mas aumentandoiodepth
para 32 solicitações. Em seguida, relate aqui os resultados.fonte