Estos son los números que todo ingeniero informático debería saber

En 2010, Jeff Dean de Google dio una maravillosa charla en Stanford que lo hizo bastante famoso. En él, discutió algunos números que son relevantes para los sistemas informáticos. Entonces Peter Norvig publicó esos números por primera vez en Internet.

Pasó el tiempo y los números cambiaron. Aquí hay una interfaz de usuario web interactiva muy buena de esos números que indica aproximadamente cuánto han cambiado a lo largo de los años en función del tiempo.

Este artículo no es solo una compilación de los datos estimados de Jeff Dean, sino que reúne todos esos números de diferentes fuentes. Esto debería ayudarlo como diseñador y arquitecto de sistemas. Mientras diseña, puede utilizar estos números para estimar la cantidad de recursos que necesita su sistema.

Estimación aproximada de los datos de latencia para 2019:

  1. Referencia de caché L1: 1 nanosegundo.
  2. Referencia de caché L2: 4 nanosegundos.
  3. Bloqueo / Desbloqueo Mutex: 17 nanosegundos.
  4. Memoria principal / referencia RAM: 100 nanosegundos.
  5. Comprima 1 KB con Zippy (actualmente llamado Snappy): 2000 nanosegundos o 2 microsegundos.
  6. Error de predicción de la rama de la CPU: 3 nanosegundos.
  7. Lectura aleatoria de la unidad de estado sólido (SSD): 16 microsegundos.
  8. Búsqueda de disco (disco duro / unidad magnética): 3 milisegundos.
  9. Leer 1,000,000 de bytes secuencialmente desde la memoria principal: 4 microsegundos.
  10. Leer 1,000,000 de bytes secuencialmente desde SSD: 62 microsegundos.
  11. Leer 1,000,000 de bytes secuencialmente desde el disco: 947 microsegundos.
  12. Solicitud de red de ida y vuelta en el mismo centro de datos: 500 microsegundos.
  13. Envíe 2000 bytes a través de la red de productos básicos: 62 nanosegundos.

Tiempo necesario para que la carga útil viaje a través de TCP:

Aquí está la cantidad de tiempo necesaria para transmitir diversas cargas útiles de datos en redes celulares típicas de todo el mundo, asumiendo que no se pierden datos.

RTT (tiempo de ida y vuelta): tiempo total que tarda un paquete de datos (grupo de bytes de datos) en viajar de remitente a receptor y de receptor a remitente a través de la red. En resumen, se llama tiempo de ping.

  1. La transferencia de datos de 1 byte a 13.000 bytes (aproximadamente 13 KB) requiere 1 viaje de ida y vuelta o 1 RTT. Tiempo aproximado tomado: Estados Unidos: 150 milisegundos, India: 1200 milisegundos, Brasil: 600 milisegundos.
  2. 13.001 bytes - 39.000 bytes (13 KB a 39 KB) toma 2 RTT. Tiempo aproximado tomado: Estados Unidos: 300 milisegundos, India: 2400 milisegundos, Brasil: 1200 milisegundos.
  3. 39,001 bytes - 91,000 bytes (39 KB a 91KB) toma 3 RTT. Tiempo aproximado tomado: EE. UU .: 450 milisegundos, India: 3600 milisegundos, Brasil: 1800 milisegundos.
  4. 91,001 bytes - 195,000 bytes (91 KB a 195 KB) toma 4 RTT. Tiempo aproximado tomado: EE. UU.: 600 milisegundos, India: 4800 milisegundos, Brasil: 2400 milisegundos.

Entonces, cuanto mayor sea el tamaño de la respuesta, más bytes, un viaje de ida y vuelta más largo, más latencia de API y, en última instancia, una aplicación menos fácil de usar.

Esta publicación se actualizará cuando se encuentren números nuevos o actualizados. Por favor, avíseme si tiene conocimiento de nuevos números.

Este artículo se publicó originalmente en el muro mediano del autor. Si te gusta, aplaude.

Referencia:

  1. //colin-scott.github.io/blog/2012/12/24/latency-trends/
  2. //blog.std.in/2015/05/23/http-response-sizes-and-tcp/
  3. //medium.com/@kousiknath/must-know-numbers-for-every-computer-engineer-6338a12c292c