¿Las redes son ahora más rápidas que los discos?


126

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/


11
Aveces si aveces no. Que red Que disco
John Gardeniers

1
Los otros datos interesantes de la respuesta principal: 1 MB de lectura secuencial de la red frente al disco. Sospecho que el tiempo de "ida y vuelta" omite cualquier transferencia de datos significativa.
Paul

Paul: Depende de tu MTU, estoy seguro. (1MB MTU? Impresionante!)
Matt Simmons

Me encantaría ver algunas de estas respuestas reconsideradas a la luz del equipo de red de 10 Gbps que está ampliamente disponible.
pollitos

red gigabit vs incursión 5?
SoilSciGuy

Respuestas:


137

Aquí hay algunos números que probablemente esté buscando, según lo citado por Jeff Dean, miembro de Google:

Números que todos deberían saber

L1 cache reference                             0.5 ns
Branch mispredict                              5 ns
L2 cache reference                             7 ns
Mutex lock/unlock                            100 ns (25)
Main memory reference                        100 ns
Compress 1K bytes with Zippy              10,000 ns (3,000)
Send 2K bytes over 1 Gbps network         20,000 ns
Read 1 MB sequentially from memory       250,000 ns
Round trip within same datacenter        500,000 ns
Disk seek                             10,000,000 ns
Read 1 MB sequentially from network   10,000,000 ns
Read 1 MB sequentially from disk      30,000,000 ns (20,000,000)
Send packet CA->Netherlands->CA      150,000,000 ns

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.



+1 Muy interesante!
9dan

1
Algunas presentaciones tienen diferentes valores indicados entre paréntesis. Supongo que el del paréntesis era incorrecto y actualizó los valores.
David d C e Freitas

1
¿Es todo esto antes de la era SSD? Consulte aquí para obtener más números actualizados.
mate

De hecho, utilicé estos números para crear una presentación que mostraba por qué las unidades SSD se pagan por sí mismas , para convencer a nuestro gerente de oficina de que sí, necesitábamos máquinas más rápidas para trabajar. Incluyó los números para la información técnica, pero lo orientó hacia la gestión no tecnológica tanto como sea posible.
brichins

19

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.


1
Puntos por mencionar RAID que le da lecturas paralelas, algo que es poco probable que obtenga en una red en el corto plazo. Por supuesto, si estamos hablando de discos duros portátiles locales, entonces la combinación de SAN rápida y red rápida bien podría ser más rápida. Especialmente con los SSD en esa SAN.
Michael Dillon

10
Las redes son inherentemente paralelizables: ¿de qué estás hablando? Es increíblemente trivial leer de múltiples sistemas en una red en conjunto; Este es todo el punto detrás de los sistemas como Hadoop y MPI, sin mencionar el obvio BitTorrent.
jgoldschrafe

2
Con SONET / SDH puede tener 38 Gbps aún más rápido que SAS. Y la agregación de red se puede hacer con algo como en.wikipedia.org/wiki/Link_aggregation
Mircea Vutcovici

10
@Jake Cuando se habla de 6 Gbps, es posible que desee hacer una distinción clara entre el ancho de banda de la interfaz y la velocidad a la que un disco puede suministrar datos.
NPE

44
dije en mi pregunta que estaba hablando de una base de datos remota en memoria en comparación con una memoria caché local en disco
pm100

10

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.


¿Quiere decir que el tiempo de búsqueda en el disco es mayor que una solicitud de 10 Gbit / s?
Mircea Vutcovici

1
@Mircea, quiere decir que la red de 10 Gbit tiene que obtener sus datos de alguna parte, por lo que se limitará a la latencia de esa fuente, más la latencia de la red.
Chris S

El almacenamiento podría ser un disco RAM. Ver: en.wikipedia.org/wiki/Solid-state_drive#DRAM-based
Mircea Vutcovici

2

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.


2

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.


2

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.


1

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.


1
A menos que el disco también sea el cuello de botella en el otro lado de la conexión de red ...

@Argote: Verdadero, pero si el software del servidor se escribió correctamente, se almacenará en la memoria intermedia antes de escribir en el disco.
anfetamáquina

1

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 ...


44
Dudo, por lo tanto, podría ser.
John Gardeniers

1

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


0

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.


0

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.


0

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.


0

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?

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.