Maximización del rendimiento del escucha del puerto Ethernet

1

Tenemos una red de sensores distribuidos (12 nodos), utilizando Ethernet como protocolo de fondo. Estos están conectados en red a 100Mb / s a un solo enlace de 1Gb / s usando un conmutador de 16 puertos.

Anteriormente he visto código Java y C para escuchar un puerto. Sin embargo, nuestro objetivo es introducir datos en el disco duro lo antes posible. Los nodos transmitirán con > 50% de utilización de la red, lo que significa que el enlace Gb / s tendrá una utilización muy alta. El rendimiento de los datos será demasiado alto para colocarlo en la RAM local sin problemas con la administración de escritura y lectura.

Mi pregunta es, ¿a qué problemas debo acceder cuando canalizo los datos lo más rápido posible a un disco duro? Somos un único cometido, el de la adquisición de datos en tiempo real. Por lo tanto, no es aceptable llenar la memoria RAM y luego volcarlo a HD con una brecha en la adquisición de datos.

Gracias.

    
pregunta user2286899

2 respuestas

1

No veo ningún problema en su caso, excepto que la capacidad de la unidad de disco duro es limitada.

50% de 1000 Mbps de enlace ascendente es de aproximadamente 62.5 MB / s para almacenar. Una unidad de disco duro de 1 Tb se llenará por completo durante menos de 16000 segundos (aproximadamente 4 h 30 min).

62.5 MB / s no está garantizado para un HDD ya que la velocidad de escritura es de aproximadamente 50-150 MB / s (de here ), por lo tanto, necesita un paralelo de 2 o 3 unidades de disco duro (por ejemplo, RAID 0). Incluso las placas base Mini-ATX de bajo costo integran dos y más interfaces SATA.

Cualquier PC Core-i3 moderna podría ejecutar esa tarea. Puede probar / probar su PC con Wireshark como un software para ejecutar la captura de paquetes.

Generalmente, un LOM Gigabit Ethernet está bien, pero si desea un sello de tiempo más sólido, puede utilizar hardware de captura especializado como la tarjeta de captura DAG de Endace.

    
respondido por el alex
0

utilizar el almacenamiento en búfer doble o triple de los datos.

recuerde que un HDD es órdenes de magnitud más lento que la RAM. por lo tanto, el tamaño del búfer en la RAM debe ser de órdenes de magnitud grande, por lo que hay tiempo suficiente para realizar una escritura de HDD (incluido el tiempo de búsqueda) mientras se mantienen todos los datos nuevos.

I.E. cada búfer debe ser lo suficientemente grande como para contener todos los datos de entrada que se acumularán mientras se espera que el disco duro esté disponible para otra operación de escritura.

Esto significa que la entrada de datos debe ser a través de una rutina de manejo de interrupciones que llena un búfer, luego pasa una indicación de que un búfer está lleno y cambia a otro búfer para continuar recolectando datos.

Ayuda si el disco duro tiene un caché muy grande

Es útil si la unidad de disco duro y el controlador tienen un rendimiento que es un múltiplo de la velocidad de datos requerida

es útil si el tamaño del búfer de datos que se está escribiendo en el disco duro es un múltiplo del tamaño del sector del disco duro.

I.E. el almacenamiento en búfer a la memoria RAM no será el punto de estrangulamiento en la aplicación propuesta, sino que el disco duro será el punto de estrangulación.

El tiempo de búsqueda se puede minimizar / eliminar utilizando una unidad de disco duro de estado sólido

    
respondido por el user3629249

Lea otras preguntas en las etiquetas