Esta es una pregunta de diseño de software
Solía trabajar en la siguiente regla de velocidad
cache memory > memory > disk > network
Cada paso es 5-10 veces el paso anterior (por ejemplo, la memoria caché es 10 veces más rápida que la memoria principal).
Ahora, parece que Gigabit Ethernet tiene una latencia menor que el disco local. Por lo tanto, tal vez las operaciones para leer desde una base de datos remota en memoria grande sean más rápidas que las lecturas de disco local. Esto se siente como herejía para un viejo temporizador como yo. (Acabo de pasar un tiempo creando un caché local en el disco para evitar tener que hacer viajes de ida y vuelta a la red, de ahí mi pregunta)
¿Alguien tiene alguna experiencia / números / consejos en esta área?
Y sí, sé que la única forma real de averiguarlo es construir y medir, pero me preguntaba acerca de la regla general.
editar :
Estos son los datos interesantes de la respuesta principal:
Ida y vuelta dentro del mismo centro de datos 500,000 ns
Búsqueda de disco 10,000,000 ns
Esto es un shock para mí; Mi modelo mental es que un viaje de ida y vuelta en red es inherentemente lento. Y no lo es, es 10 veces más rápido que un disco 'ida y vuelta'.
Jeff attwood publicó este v buen blog sobre el tema http://blog.codinghorror.com/the-infinite-space-between-words/
fuente
Respuestas:
Aquí hay algunos números que probablemente esté buscando, según lo citado por Jeff Dean, miembro de Google:
Es de su presentación titulada Diseños, lecciones y consejos de la construcción de grandes sistemas distribuidos y puede obtenerlo aquí:
La charla se dio en Sistemas Distribuidos a Gran Escala y Middleware (LADIS) 2009 .
Otra información
Se dice que gcc -O4 envía su código por correo electrónico a Jeff Dean para una reescritura.
fuente
Hay muchas variables cuando se trata de red versus disco, pero en general, el disco es más rápido.
Los buses SATA 3.0 y SAS son de 6 Gbps, en comparación con una red de 1 Gbps menos la sobrecarga del protocolo. Con RAID-10 15k SAS, la red parecerá lenta. Además, tiene memoria caché de disco y también la posibilidad de discos duros de estado sólido, que dependiendo del escenario, también podrían aumentar la velocidad. El acceso a datos aleatorio versus secuencial juega un factor, así como el tamaño de bloque en el que se transfieren los datos. Todo eso depende de la aplicación que se esté utilizando para acceder al disco.
Ahora, ni siquiera me he referido al hecho de que lo que sea que esté transportando a través de la red vaya o salga del disco de todos modos ... así que ... de nuevo, el disco es más rápido.
fuente
Bueno, eso depende de si el recurso de red tiene los datos que está solicitando disponibles (en memoria o similares) o si, a su vez, los leería desde un disco.
En cualquier caso, el rendimiento puede ser mayor en algunos casos, pero creo que la latencia será mayor.
fuente
IMX el disco es aún más rápido. La tasa de transferencia teórica de la red es alta, pero en la práctica no te acercas a eso.
Hace unos dos años tuve problemas con el disco duro en mi computadora portátil y el DMA se apagó. Esto hizo que el disco duro fuera mucho más lento, y en particular más lento que la red. Pero cuando cambié a otra computadora, volví a mi estado original de HDD más rápido que Internet.
fuente
Mi experiencia con las redes gigabit es, dado el servidor correcto, que puede superar el rendimiento local en términos de rendimiento y latencia. Ver pruebas de red: ¿estamos obteniendo rendimiento Gigabit?
Para todos los fines prácticos, recomendaría tratar la red y el almacenamiento local como equivalentes y solo usar cachés de memoria.
La advertencia estándar, como mencionó, es cierta porque no hay reglas generales; y que en realidad la mayoría de las veces uno debería trabajar con servidores bien configurados y usar métricas para evaluar el mejor método de transferencia de datos.
Si está utilizando una máquina de gama baja con un disco duro lento, entonces seguramente será más rápido usar una conexión de red gigabit a un servidor con una matriz de almacenamiento rápido.
Del mismo modo, si está trabajando con dos máquinas de hardware casi idéntico, la latencia y la sobrecarga de la red acelerarían el almacenamiento local; es sentido común realmente.
fuente
Depende. Si su E / S es principalmente acceso aleatorio, entonces su rendimiento plano probablemente no sea tan bueno en comparación con el ancho de banda de red que podría estar disponible. Sin embargo, la mayoría del tráfico de red se genera en última instancia por procesos que involucran E / S. Si el conjunto de trabajo de cualquier proceso que esté generando el tráfico de red se ajusta a la memoria caché, entonces no estará limitado por el ancho de banda del disco. Si agota el caché, el disco se convertirá en un cuello de botella.
Trabajo en sistemas de almacenamiento de datos, y la consulta DW canónica es un escaneo de tabla. Si su consulta alcanza más de un pequeño porcentaje de las filas en la tabla de hechos (o partición), entonces un escaneo de tabla o partición usando E / S secuencial será más eficiente que un plan de consulta de acceso aleatorio usando búsquedas y búsquedas de índice.
El almacenamiento en red (es decir, SAN) tiende a no funcionar bien en las cargas de trabajo de transmisión a menos que se ajuste adecuadamente. Si la SAN se está utilizando para un entorno de consolidación de propósito general, seguramente se ajustará de manera bastante subóptima para una carga puntiaguda como un almacén de datos. He visto un informe técnico del proveedor que sugiere que necesita aproximadamente 3 veces la cantidad de discos para obtener el mismo rendimiento en una SAN que no está sintonizada para transmitir E / S que para una que sí lo es.
Mi experiencia coincide con eso. De hecho, nunca he implementado un almacén de datos en un entorno de consolidación donde no podría ejecutar el mismo proceso ETL de manera significativamente más rápida en mi PC de escritorio. También he tenido representantes de ventas de un importante proveedor de equipos SAN que dicen que muchos de sus clientes usan almacenamiento de conexión directa para el sistema DW porque las SAN no son lo suficientemente rápidas.
El almacenamiento en red es al menos un orden de magnitud más costoso por IOPS que el almacenamiento de conexión directa para cargas de trabajo de acceso aleatorio y más cercano a dos órdenes de magnitud más costoso para la transmisión.
fuente
La experiencia que tengo con esto es que cuando estás en una conexión de 1 Gbit e intentas descargar un archivo, tu disco duro suele ser el cuello de botella. Sin embargo, una cosa que debe tener en cuenta es que primero debe configurar una conexión, lo que también lleva tiempo. Entonces, para enviar grandes fragmentos de red de datos, en realidad podría ser más rápido que el disco.
fuente
Sí, en general, las redes ahora son más rápidas que los discos duros, pero esto puede cambiar con el tiempo.
Pienso, luego existo
Cuando una aplicación se está ejecutando, significa que la máquina host está funcionando, mientras que trabajar a través de la red necesita un protocolo común, verificar la disponibilidad de los pares, la seguridad del canal ... y si los pares usan diferentes plataformas, es más difícil lograr lo que puede hacer en un sola máquina
Prefiero ver esto en términos de compensaciones en lugar de quién es el más fuerte ...
fuente
Tiene que describir un caso de uso exacto para esta comparación. Los discos duros tienen tiempo de búsqueda + velocidad de transferencia y caché. Las redes tienen latencia, velocidad de transferencia y sobrecarga de protocolo ...
Sin embargo, creo que su memoria caché original> memoria> disco> red sigue siendo cierta en general
fuente
El disco está conectado con la CPU a través del bus SCSI, SAS o IDE. Que es una red interna que ejecuta un protocolo específico: SCSI o ATAPI. Ethernet está diseñado para trabajar en distancias más largas y puede ser mucho más lento que SAS / SCSI / IDE. Entonces, cuál es más rápido, depende de las tecnologías que esté comparando. Si compara una unidad de disco duro portátil de 20 años con una memoria RAM de 10 Gbps, el ganador siempre será la red. Y cuando compra un almacenamiento, debe compararlo con el precio y la capacidad de administración.
fuente
Bueno, está Light Peak, que apunta a una velocidad de red de 100GBps, que se está acercando a las velocidades de RAM. Por supuesto, la red solo puede entregar datos tan rápido como el emisor puede generar los datos, es decir, si el emisor está leyendo los datos de un disco duro, entonces el receptor solo obtendrá los datos a la misma velocidad que el disco leído, incluso con Una red súper rápida.
fuente
Una cosa a tener en cuenta es que depende de la red. Digamos, por ejemplo, que usted es responsable del rendimiento en un sitio web. Este sitio web está, por supuesto, conectado a un servidor de base de datos a través de una red local, y también está conectado a los internautas a través de Internet, que también es una especie de red.
En muchos casos, se puede establecer un enlace dedicado entre el servidor web y el servidor de base de datos a través de IP estáticas y un cable cruzado o automdx para mantener la latencia baja y proporcionar un enlace dedicado para el tráfico, ya que desea que sea muy rápido. El servidor de bases de datos hace todo tipo de trabajo para mantener la mayor cantidad de db posible en la memoria, y en muchos casos a menudo tiene éxito para todo el contenido más algunos índices. Las consultas a esta base de datos serán tan rápidas o incluso más rápidas que las consultas al disco.
Por otro lado, a ciertas tecnologías web (asp.net webforms viewstate, te estoy mirando) les gusta enviar mucha información hacia y desde el navegador web del cliente como un caché (más o menos). Si se trata de una conexión LAN local (y en la defensa del formulario web asp.net, esto es cierto la mayor parte del tiempo), no es tan malo, pero en Internet público esto puede matar el rendimiento, por lo que a menudo es mucho mejor impulsar esto a una base de datos o disco local en su lugar.
fuente
Personalmente, creo que hay varios factores a considerar. Por ejemplo, ¿qué tan rápido es la memoria o el disco al que está accediendo localmente frente al que accedería a través de la red? Si los datos remotos estaban en SSD muy rápido y más rápido que la red de gigabit instalada de extremo a extremo, el control remoto podría ser más rápido para archivos de transmisión de gran tamaño.
Sin embargo, si estaba accediendo aleatoriamente a pequeñas unidades de datos y la red no era perfecta o tenía muchos saltos y más que solo usted accediendo a ella, apostaría a que un caché local es más rápido incluso en una unidad de disco mecánica casi 100 % del tiempo. Pero saca a colación un punto interesante y ¿cuánto tiempo necesitará el almacenamiento local de cualquier cosa si la velocidad de la red continúa creciendo?
fuente