Objetivo iSCSI
Ubuntu 14.04 (Trusty Tahr) con 16 GB de RAM y 16 núcleos de CPU como objetivo iSCSI respaldado por LVM usando tres discos SSD Samsung, cada uno capaz de hacer 65k IOPS usando un controlador LSI de 6 Gbit / s con caché integrada.
Punto de referencia en el disco SSD en el 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
Dónde sdd
está configurado en RAID 0 de hardware usando tres SSD Samsung 850 EVO.
Iniciador
Exporté un LUN 500G en un cliente Ubuntu 14.04 con 32 GB de RAM y 8 CPU centrales.
Punto de referencia en 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
Hay una caída significativa en el rendimiento al hacer DAS y en la red, esperaba al menos 10k IOPS.
La comunicación entre el objetivo y el iniciador es inferior a 1 ms e iperf muestra un rendimiento de red de 9,2 Gbit / s.
Entiendo que habrá un impacto en el rendimiento de las escrituras de 4k ya que cada dato debe pasar por la pila de red del iniciador y el destino antes de escribirse en el disco, pero esta es una caída inaceptable de 65k a 2k.
¿Dónde puede estar el problema? Tengo una NIC Ethernet de 10 Gbit / s entre el objetivo y el iniciador. ¿Algunas ideas?
fuente
Respuestas:
Respuesta corta: Estos son los resultados de la latencia de la red y una carga de trabajo en serie (como lo impuso al usar
direct=1
,sync=1
yiodepth=1
).Respuesta larga: usando
direct=1
,sync=1
yiodepth=1
creó una carga de trabajo en serie, ya que las nuevas escrituras no se pueden poner en cola antes de que se confirmara y confirmara la escritura anterior . En otras palabras, la tasa de envío de escrituras depende estrictamente de la latencia de la red. Un simpleping
entre dos máquinas puede superar los 0.2 ms, más aún cuando se utiliza un protocolo de nivel superior como TCP (e iSCSI encima). Suponiendo una latencia total de la red de aproximadamente 0,33 ms, tiene un valor de IOPS máximo de aproximadamente 3000. Esto es sin tener en cuenta otras fuentes de latencia (es decir, los discos mismos), por lo que está en línea con lo que grabó.Intente esto: ejecute un primer punto de referencia sin
--direct=1 --sync=1
, y otro con estas opciones implementadas pero aumentando lasiodepth
32 solicitudes. Luego informe aquí los resultados.fuente