¿Por qué veo un rendimiento de transferencia de SMB tan bajo?

10

Ok, hay un poco más en la historia de lo que implica el título.

Antecedentes y entorno : estoy copiando varios TB de un servidor Ubuntu anterior a un servidor Windows 2012 más nuevo a través de SMB. (Técnicamente, es hardware básico, pero son servidores por aquí). Todos están en una LAN de gigabits, y la caja de Ubuntu más antigua tiene una interfaz unida. Creo que el servidor Ubuntu tiene dos tarjetas Ethernet Ethernet Rosewill PCI-e 1x y el servidor Windows tiene una tarjeta Ethernet Intel PCI razonablemente buena.

La computadora de destino (el servidor de Windows) ejecuta un grupo de almacenamiento con paridad en unidades de 4x 2TB. Está ejecutando el nuevo ReFS de Microsoft. La computadora fuente (el servidor Ubuntu) está ejecutando un espejo RAID de software. Está funcionando bien ol 'EXT4.

Los dos servidores se ejecutan a través de un solo conmutador gigabit. He experimentado con romper la vinculación en la computadora fuente (Ubuntu) sin ninguna mejora.

Problema : No tengo problemas para transferir a velocidades razonables desde otras computadoras al servidor de Windows. Otras computadoras pueden almacenar entre 50 y 80 MB / s sin mucha dificultad, pero la transferencia desde ese servidor Ubuntu no supera los 20 MB / s. 4 + TB a 20MB / s lleva mucho tiempo (algo así como 2.3 días), y me pregunto qué puedo hacer para descubrir dónde está el cuello de botella.

Síntomas : la CPU en ambas computadoras es bastante mínima y ciertamente no está ocupada de manera prohibitiva. Los discos duros en ambas computadoras están activos pero no saturados, y CPU IOwait es casi 0% en al menos el servidor Ubuntu.

Hice un seguimiento de Wireshark durante 35 segundos (presumiblemente el tiempo suficiente para asegurarme de que todos los ACK fueran para nuevos paquetes) y noté que había bastantes cosas que no esperaba. (1) No hubo ninguna suma de comprobación para los ACK (y ALGUNOS paquetes SMB) de Windows a Ubuntu. Sin embargo, Wireshark afirma que esto puede deberse a una "descarga de suma de comprobación de IP". Ok, tengo una bonita tarjeta allí. Supongo que es posible que la tarjeta de red pueda hacer cálculos de suma de verificación. Multa. Continuando ... (2) "TCP ACKed segmento invisible". Con este tengo un problema. El número de ACK está dentro de un rango aceptable de lo que puedo decir, y a menudo hay grandes bloques de estos mensajes. ¿Quizás Wireshark es demasiado lento?

Resumen : la velocidad de transferencia es una mierda (20 MB / s sobre gigabit ethernet) y no sé por qué. Wireshark afirma que Windows está ACKing cosas que nunca fueron enviadas por Ubuntu.

Adivinanzas : Mi conjetura inicial es que las tarjetas Rosewill más baratas se están inundando. Mi segunda suposición es que las cosas similares a RAID de software en un extremo u otro se están inundando de cosas para hacer.

Andy
fuente
2
¿Qué velocidades obtiene copiando del servidor Ubuntu a uno de los escritorios (no Server 2012)? ¿Quizás WinXP o Win7? He tenido grandes problemas con la firma de paquetes y la encriptación con SMB con Server 2008 y versiones posteriores.
Dom
Actualización: terminé teniendo que reiniciar (gracias a un kernel panic). Desafortunadamente, el sistema ahora tiene un kernel panic en cada arranque. Saqué mi copia de confianza de Knoppix y monté las unidades, y ahora todo está bien y elegante. Ahora estoy copiando sobre SSH y todavía no sé dónde está el cuello de botella. sshdestá consumiendo el 60% de un procesador en el lado de Knoppix. En cualquier caso, mi transferencia está a punto de completarse. @Dom: Ahora que lo mencionas, no recuerdo haber puesto todos esos datos allí mucho más rápido que 30 MBps en primer lugar.
Andy
2
@LorenzoVonMatterhorn, evite usar acortadores de URL.
Cristian Ciupitu
¿Estás seguro de que no es un problema con tus discos?
MariusMatutiae
2
Windows implementó una versión mucho más rápida del protocolo SMB (SMB 2) en los últimos 4-5 años que es mucho menos hablador y más eficiente en el cable. No sé de antemano cuándo esos cambios llegaron a Samba, pero parece que el Ubuntu más antiguo tiene un Samba más antiguo y tal vez Knoppix tiene una versión más nueva.
uSlackr

Respuestas:

1

Su brecha de rendimiento coincide con una experiencia común cuando Samba (no estoy seguro si esto sigue siendo el predeterminado; fue durante mucho tiempo) se configura con el tamaño predeterminado del búfer de socket de lectura y escritura de 1024 bytes.

Solía ​​ver esto con frecuencia con máquinas Linux y Mac. Esperemos que aún no sea ese caso.

Hay un argumento de opción de socket en el archivo de configuración de samba donde puede establecer el tamaño del búfer de socket de lectura y escritura. Sugiero que establezca ambos en 8192 bytes (8 KiB). 4 u 8 KB a menudo son similares, pero no lo he probado en un enlace gigabit.

Además, no espere que una sola conexión TCP se beneficie de un enlace enlazado, el tráfico casi siempre pasará por uno de los enlaces; de lo contrario, terminará con una gran cantidad de paquetes fuera de servicio para tratar; así que solo espere un beneficio de equilibrio de carga cuando preste servicio a múltiples clientes. Incluso entonces, debe buscar los diferentes modos de enlace, y saber que para al menos el enlace del "modo 4" (IEEE 802.3ad), existen básicamente dos modos hash de transmisión, que determinan en qué interfaz esclava enviar. Hay hashing de capa 2 (predeterminado) y hashing de capa 3. Si envía la mayor parte de sus datos a través de la puerta de enlace, el hash de capa 2 no se distribuirá bien, ya que la dirección MAC de la puerta de enlace será la misma. Considere usar layer-3 en su lugar.

Cameron Kerr
fuente
0

Una vez tuve dos tarjetas Ethernet en una computadora Ubuntu y, por alguna razón, no funcionó correctamente: ambas compitieron por los mismos paquetes que parecía, por lo que a veces recibía una respuesta, a veces no, dependiendo de si la otra tarjeta de red tomaba El embalado. Fue extraño Debo haberlo configurado mal de alguna manera, pero habría pensado que habría funcionado. Las tarjetas tenían direcciones IP únicas, por supuesto.

De todos modos, sería simple para usted probarlo con UNA sola tarjeta Ethernet en la máquina conectada a la red solo para descartarlo.

Será
fuente