Experiencia en escribir sondeos asincrónicos para dispositivos de red.

La idea básica detrás del sondeo asincrónico

La asincronía le permite aumentar enormemente el paralelismo de trabajo. En el caso de la comunicación en red y la recuperación de SNMP, los tiempos de espera para las respuestas son largos, lo que permite que el programa haga algo útil hasta que llegue la respuesta.





Hay formas "síncronas" de implementar el paralelismo: bifurcaciones, subprocesos. Es fácil desde el punto de vista de escribir un programa, pero es muy "caro" en términos de recursos del sistema operativo.





Un poco de matematicas

Las matemáticas serán de ingeniería y aproximadas, precisión del 20%





Quería sondear 100 mil dispositivos usando 100 métricas y sondear cada dispositivo una vez cada 5 minutos , con un margen de una vez por minuto.  





Es decir, necesita disparar 10 millones de métricas por minuto o 150 mil por segundo.  Redondearé hasta 100 mil métricas por segundo.





El sondeo de una métrica tarda aproximadamente 5 ms: 4 ms para el dispositivo, + 1 ms para el procesamiento.





Esto significa que un subproceso síncrono puede procesar 200 métricas por segundo, o se necesitan 500 subprocesos síncronos. Muy realista.





(Todo, al final, no queda nada más que escribir)





De hecho, esto es solo el comienzo. El truco no está en la idealidad del mundo, sino en la pérdida de respuestas a las solicitudes, que se producen por pérdida de tráfico o inaccesibilidad de los dispositivos.





2 , «» 2000









3% . – , , .





, 3% 2000.





c 15,5 .





, 5 , 95 . , 125 800 . , .





– __ . – 800 , , .





, 3%, 20% 100% ?





,





– ,  – « X .   , 10 , , 2 ».





, , 45%, 99% .





: 100% . , , 30 ?  - 7 .









, , , Shared Memory . SNMP Net-SNMP





– ,





1 : « – , »

, ?





SNMP, , SNMP, , - :





:





Primera implementación del sondeo paralelo

, . , , , , -.





– – 2 , . :





Esperar los tiempos de espera es enorme en comparación con las respuestas normales.

, 100- .





– , , .





«» .





:





2 : «- »

, , . . . - , .





. : .





2-3 3-4 , .





, , . , .





3 : « »

, . , SNMP UDP .





, :





, , , , .





3.5 : « , »

«» . . .





.





, . ,   3-4 2-4 .





– , - . . : , , , Net:SNMP.





, 60-70 . , , .





4 : « , »

, «» , .





4 , – , . , – .  





4.0 , «» . :





– – – , , .





- . SNMP, 48 .





- . 2 100% 15 30 720 ! 30 48 .





, , , – IP RAW socket.





120-140 .





30-40 , , 50% . 





:

1 4 2 . 2-3 -.





?





- « ».  





, .





, 15 , «».





, - . – .





.








All Articles