
ACTUALIZACIÓN: Acabo de probar este escenario en una placa con ocho puertos SATA adicionales y funciona. Más lento de lo que pensaba pero aún así aceptable. Según la discusión con David Schwartz, creo que puede tener razón en que hay algo patológicamente mal o que Ali Chen puede tener razón en que RHEL simplemente no puede manejar tantos controladores de host funcionando al mismo tiempo. Voy a experimentar un poco más ya que llegué hasta aquí y básicamente me pagan por tener curiosidad en este punto. :)
COMENZAR LA PUBLICACIÓN ORIGINAL
Entonces, la configuración es un poco larga. Tenemos dos tarjetas USB 3.0 RocketU 1144D de 4 puertos en nuestro sistema, una en un zócalo PCIe 2.0 y otra en un zócalo PCIe 3.0 para evitar problemas de ancho de banda. Cada una de estas tarjetas USB tiene cuatro SSD Crucial MX300 de 1 TB en gabinetes Silver Stone Raven con alimentación externa conectados. La necesidad, según el cliente, es poder escribir simultáneamente el mismo conjunto de archivos en cuatro de los ocho discos mientras se leen archivos de los otros cuatro discos para calcular las sumas de comprobación MD5. Cada disco estará lo más cerca posible de su capacidad con archivos de aproximadamente 1 GB de tamaño en el momento de la lectura o después de escribir todos los archivos.
Ahora bien, si sólo accedemos o escribimos archivos en los discos de una de las tarjetas las velocidades no son tan malas. Con el TB completo, tenemos un promedio de entre 3 y 4 segundos por archivo (lectura, cálculo o escritura). El problema es que cuando intentamos hacer ambas cosas al mismo tiempo, las velocidades de lectura y escritura se degradan con bastante rapidez, pasando de un inicio de aproximadamente 1,5 segundos por archivo a más de sesenta segundos por archivo.
Las únicas otras tarjetas en el sistema son la tarjeta de video en la ranura PCIe 3 16x y un adaptador Intel X540-T2 (no usado actualmente) en otra de las ranuras PCIe 3 8x.
Tenemos un servidor MOBO X10DRL-i de doble CPU con dos procesadores Zenon de 6 núcleos y 64 GB de RAM ejecutando RHEL 7.2 desde otro Crucial MX300 conectado a un puerto SATA.
Entonces, la pregunta es, ¿es posible hacer lo descrito anteriormente dentro de una cantidad de tiempo decente definida como: mil archivos de un gigabyte por SSD leídos de cuatro SSD conectados a la tarjeta uno escritos en cuatro SSD conectados a la tarjeta dos las operaciones DEBEN ¿Se hará en paralelo (porque cliente) todo en menos de una hora?
Por lo que estoy aprendiendo, estoy empezando a inclinarme por el no, pero pensé en preguntar y ver si alguien con más conocimientos que yo tiene algo más definitivo. Cualquier ayuda, consejo y sobre todo una respuesta se agradece mucho.
EDITAR por sugerencia de David Schwartz:
Ancho de banda requerido por tarjeta 5 Gbps por puerto USB 3.0 x4 puertos = 20 Gbps
Ancho de banda disponible PCIe 2.0 x4 a 500 MBps por carril = 16 Gbps
Dado que una tarjeta usa los carriles PCIe 3 y la otra los carriles PCIe 2, según tengo entendido, no debería haber un conflicto por esos recursos.
NOTA:
Sé que la tarjeta se vendió en exceso en ancho de banda, pero las lecturas y escrituras no deberían durar varios minutos por archivo GB.
EDITAR 2:
Después de la sugerencia de David Schwartz, supervisé el uso del núcleo utilizando el monitor del sistema y htop. El sistema muestra un uso del 100% o casi el 100% o cuatro núcleos para la primera docena de E/S de archivos. Luego, el sistema se congelará durante unos segundos y será entonces cuando se producirá la degradación de E/S del archivo. Además, la utilización del núcleo rara vez llegará al 100% después de esto y cuando lo haga será muy brevemente.
EDITAR 3: Lo más probable es que sea la edición final.
Después de un poco de investigación y experimentación, creo que podemos decir que esto no funcionará con la tarjeta en cuestión y apuesto a que la tarjeta StarTech mencionada en los comentarios tampoco funcionará. Creo que podemos llegar a esa conclusión basándonos en varias cosas. En resumen, un SSD funciona muy bien en la tarjeta. Dos funcionan bien con un poco de desaceleración; por encima, supongo. Sin embargo, 3 o más empiezan a hacer cosas malas. Me imagino que esto se debe a que estamos tratando de impulsar 20 Gbps sobre carriles PCIe de 16 Gbps y, en lugar de obtener un máximo teórico de 16 Gbps, los controladores en ambos lados de la transmisión pueden tropezar entre sí y, en general, provocar que las cosas retrocedan hasta el punto de ralentizando la transferencia de datos a un ritmo lento. Esto es sólo una teoría, pero fue lo suficientemente bueno como para lograr que el cliente eliminara el requisito de USB y nos permitiera probar SATA y otros métodos. SATA está funcionando mucho, MUCHO mejor, así que creo que tenemos un ganador. Gracias a David Schwartz y Ali Chen por su ayuda y sugerencias.
EDITAR 4: La edición final real
Entonces, ayer me topé con la respuesta a mi pregunta en varias partes mientras buscaba soluciones SATA. El problema real era doble y sólo se hizo evidente después de que se descubrió el primero de los problemas.
Entonces, el primer problema fue la gestión de la memoria. Después de haber probado el software que leía los archivos grandes para escribirlos, parecía que los archivos se leían una vez y luego se escribían varias veces. Este no era el caso. Entonces, teníamos múltiples solicitudes de lectura para múltiples archivos de 1 GB constantemente. No estoy seguro de por qué esto funcionó en las pruebas pero no en la práctica, pero no tuvimos tiempo de hacer una autopsia, por lo que eso queda en la historia.
El segundo problema es que no somos especialistas en hardware y, por lo tanto, no conocíamos un detalle muy importante mientras trabajábamos en un sistema Linux. Dado que NTFS no es nativo de Linux (esto lo sabíamos), aparentemente se ejecutará casi un orden de magnitud más lento (esto no lo sabíamos). Si hubiera sido una caja de Windows, no habríamos tenido ningún problema.
Combine estos dos factores y obtendrá el comportamiento errático que experimentamos. Una vez que hicimos un reformateo completo de todos los discos a EXT4, dejamos de ver tiempos de lectura/escritura impredecibles y todo funcionó como se esperaba. Podríamos realizar escrituras simultáneas y cálculos de lectura/md5 dentro de los parámetros permitidos.