Les réseaux sont-ils maintenant plus rapides que les disques?


126

Ceci est une question de conception de logiciel

Je travaillais sur la règle suivante pour la vitesse

cache memory > memory > disk > network

Chaque étape étant 5 à 10 fois supérieure à l’étape précédente (par exemple, la mémoire cache est 10 fois plus rapide que la mémoire principale).

Maintenant, il semble que le gigabit ethernet ait une latence inférieure à celle du disque local. Ainsi, les opérations de lecture dans une base de données en mémoire distante peuvent être plus rapides que les lectures sur disque local. Cela ressemble à une hérésie pour un vieil homme comme moi. (Je viens de passer un peu de temps à construire un cache local sur le disque pour éviter de faire des allers-retours sur le réseau - d'où ma question)

Quelqu'un a-t-il une expérience / des chiffres / des conseils dans ce domaine?

Et oui, je sais que le seul moyen de le savoir est de construire et de mesurer, mais je me posais des questions sur la règle générale.

éditer :

Voici les données intéressantes de la réponse du haut:

  • Aller-retour dans le même centre de données 500 000 ns

  • Disque chercher 10 000 000 ns

C'est un choc pour moi. Mon modèle mental est qu'un aller-retour réseau est par nature lent. Et ce n'est pas le cas - c'est 10 fois plus rapide qu'un disque 'aller-retour'.

Jeff attwood a posté ce v bon blog sur le sujet http://blog.codinghorror.com/the-infinite-space-between-words/


11
Parfois oui, parfois non. Quel réseau? Quel disque?
John Gardeniers

1
Les autres données intéressantes de la réponse du haut: lecture de 1 Mo séquentielle du réseau contre le disque. Je soupçonne que le temps "aller-retour" omet tout transfert de données significatif.
Paul

Paul: Cela dépend de votre MTU, j'en suis sûr. (1MB MTU? Génial!)
Matt Simmons le

J'aimerais voir certaines de ces réponses reconsidérées à la lumière du matériel réseau 10Gbps largement disponible.
poussins

réseau gigabit vs raid 5?
SoilSciGuy le

Réponses:


137

Voici quelques chiffres que vous recherchez probablement, cités par Jeff Dean, un Google Fellow:

Des chiffres que tout le monde devrait connaître

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

Il provient de sa présentation intitulée Designs, Lessons and Advice tirée de la création de systèmes distribués volumineux . Vous pouvez l'obtenir ici:

La conférence a eu lieu lors de la conférence LADIS 2009 (Large-Scale Distributed Systems and Middleware) .

Autre info


On dit que gcc -O4 envoie votre code par e-mail à Jeff Dean pour une réécriture.



+1 très intéressant!
9

1
Certaines présentations ont des valeurs différentes indiquées entre parenthèses. Je suppose que ceux entre crochets étaient incorrects et il a mis à jour les valeurs.
David d C e Freitas

1
Est-ce l'ère de tous les pré-SSD? voir ici pour plus de chiffres à jour.
Mat

En fait, j'ai utilisé ces chiffres pour créer une présentation montrant pourquoi les disques SSD sont rentables , pour convaincre notre directeur de bureau que nous avions effectivement besoin de machines plus rapides. Inclus les numéros pour les informations techniques, mais orientés autant que possible vers la gestion non technique.
Brichins

19

Il y a beaucoup de variables quand il s'agit de réseau vs disque, mais en général, le disque est plus rapide.

Les bus SATA 3.0 et SAS ont une vitesse de 6 Gbps, par rapport à une surcharge de protocole de 1 Gbps de réseaux. Avec RAID-10 15k SAS, le réseau va sembler lent. De plus, vous disposez d'un cache disque et de la possibilité d'utiliser des disques durs à l'état solide, qui, selon le scénario, pourraient également augmenter la vitesse. L’accès aléatoire et séquentiel aux données joue un rôle, ainsi que la taille du bloc dans lequel les données sont transférées. Tout dépend de l'application utilisée pour accéder au disque.

Maintenant, je n'ai même pas évoqué le fait que ce que vous transportez sur le réseau va ou vient du disque de toute façon ... alors ... encore une fois, le disque est plus rapide.


1
Des points pour mentionner le RAID qui vous donne des lectures parallèles, ce qui est peu probable que vous obteniez sur un réseau de si tôt. Bien sûr, si nous parlons de disques durs d’ordinateurs portables locaux, la combinaison entre réseau SAN rapide et réseau rapide pourrait bien être plus rapide. Surtout avec les SSD de ce SAN.
Michael Dillon

10
Les réseaux sont par nature parallélisables - de quoi parlez-vous? Il est incroyablement facile de lire de manière globale à partir de plusieurs systèmes d'un réseau. C’est là l’intégralité des systèmes tels que Hadoop et MPI, sans oublier l’évident BitTorrent.
Jgoldschrafe

2
Avec SONET / SDH, vous pouvez avoir 38 Gbps encore plus rapide que SAS. Et l’agrégation de réseau peut se faire avec quelque chose comme en.wikipedia.org/wiki/agrégation_Link_agrégation
Mircea Vutcovici le

10
@Jake Lorsque vous parlez de 6 Gbps, vous voudrez peut-être faire une distinction claire entre la bande passante de l'interface et le débit auquel un disque peut réellement fournir des données.
NPE

4
J'ai dit dans ma question que je parlais d'une base de données distante dans la mémoire par rapport à un cache local sur le disque
pm100

10

Cela dépend si les ressources demandées par la ressource réseau sont facilement disponibles (en mémoire ou similaires) ou si, à son tour, elles pourraient simplement les lire à partir d’un disque.

Dans tous les cas, le débit peut être plus élevé dans certains cas, mais je pense que la latence sera plus élevée.


Vous voulez dire que le temps de recherche sur le disque est supérieur à une demande de 10 Gbit / s?
Mircea Vutcovici

1
@Mircea, il signifie que le réseau 10Gbit doit extraire ses données quelque part, il sera donc limité à la latence de cette source, plus la latence du réseau.
Chris S

Le stockage pourrait être un disque RAM. Voir: en.wikipedia.org/wiki/Solid-state_drive#DRAM-based
Mircea Vutcovici le

2

IMX le disque est encore plus rapide. Le taux de transfert théorique du réseau est élevé, mais dans la pratique, vous ne vous en approchez pas.

Il y a environ deux ans, j'ai eu des problèmes de disque dur sur mon ordinateur portable et le DMA est sorti. Cela a rendu le disque dur considérablement plus lent, et en particulier plus lent que le réseau. Mais lorsque je suis passé sur un autre ordinateur, je retrouvais mon état d'origine du disque dur plus rapidement qu'Internet.


2

Mon expérience des réseaux gigabits est que, avec le bon serveur, vous pouvez battre les performances locales en termes de débit et de latence. Voir Tests de réseau: obtenons-nous des performances gigabits?

À toutes fins pratiques, je recommanderais de traiter l'équivalent réseau et le stockage local et d'utiliser uniquement des caches de mémoire.

L’avertissement standard que vous avez mentionné est vrai dans la mesure où il n’existe aucune règle générale; et qu'en réalité, la plupart du temps, il convient de travailler avec des serveurs bien configurés et d'utiliser des métriques pour évaluer la meilleure méthode de transfert de données.

Si vous utilisez un ordinateur bas de gamme avec un disque dur lent, il sera certainement plus rapide d’utiliser une connexion réseau gigabit à un serveur doté d’une matrice de stockage rapide.

De même, si vous travaillez avec deux machines de matériel presque identique, la latence et la surcharge du réseau accéléreront le stockage local. c'est du bon sens vraiment.


2

Ça dépend. Si votre entrée / sortie est principalement à accès aléatoire, son débit plat n’est probablement pas très élevé comparé à la bande passante réseau disponible. Cependant, la plupart du trafic réseau est finalement généré par des processus impliquant des E / S. Si l'ensemble de processus, quel que soit le processus générant le trafic réseau, s'insère dans le cache, il ne sera pas limité par la bande passante du disque. S'il bloque le cache, le disque devient un goulot d'étranglement.

Je travaille sur des systèmes d'entrepôt de données, et la requête DW canonique est une analyse de table. Si votre requête touche plus de quelques pour cent des lignes de la table de faits (ou partition), une analyse de table ou de partition utilisant des E / S séquentielles sera plus efficace qu'un plan de requête à accès aléatoire utilisant des recherches d'index et des recherches.

Le stockage en réseau (c.-à-d. Les SAN) a tendance à ne pas bien fonctionner avec les charges de travail en streaming, à moins d'être réglé correctement. Si le réseau de stockage est utilisé pour un environnement de consolidation à usage général, il sera presque certainement optimisé de manière sous-optimale pour un flux continu, une charge hérissée comme un entrepôt de données. J'ai vu un livre blanc du fournisseur suggérer que vous avez besoin d'environ 3 fois le nombre de disques pour obtenir le même débit sur un réseau SAN qui n'est pas réglé pour le streaming d'E / S, mais pour un autre.

Mon expérience correspond à cela. En fait, je n'ai jamais déployé un entrepôt de données sur un environnement de consolidation où je ne pouvais pas exécuter le même processus ETL beaucoup plus rapidement sur mon ordinateur de bureau. Des représentants d’un important fournisseur d’équipements SAN ont également déclaré en privé que bon nombre de leurs clients utilisaient le stockage en connexion directe pour le système DW, car les réseaux SAN n’étaient pas assez rapides.

Le stockage en réseau coûte au moins un ordre de grandeur plus cher par IOPS que le stockage en attachement direct pour les charges de travail à accès aléatoire et plus proche de deux ordres de grandeur plus coûteux en streaming.


1

L’expérience que j’ai avec ceci est que lorsque vous êtes sur une connexion 1Gbit et que vous essayez de télécharger un fichier, votre disque dur est généralement le goulot d’étranglement. Il faut toutefois garder à l’esprit que vous devez d’abord établir une connexion, ce qui prend également du temps. Donc, pour envoyer de gros morceaux de réseau de données peut en réalité être plus rapide que le disque.


1
À moins que le disque ne soit aussi le goulot d'étranglement de l'autre côté de la connexion réseau ...

@Argote: Vrai, mais si le logiciel serveur a été écrit correctement, il sera mis en mémoire tampon avant d'écrire sur le disque.
Amphetamachine

1

Oui, en général, les réseaux sont maintenant plus rapides que les disques durs, mais cela peut changer avec le temps.

Je pense donc je suis

Lorsqu'une application est en cours d'exécution, cela signifie que la machine hôte fonctionne, tout en travaillant sur le réseau nécessite un protocole commun, la vérification de la disponibilité des homologues, la sécurité des canaux ... et si les homologues utilisent différentes plates-formes, il est plus difficile de réaliser ce que vous pouvez faire machine unique.

Je préfère regarder cela en termes de compromis plutôt que de savoir qui est le plus fort ...


4
Je doute, donc je pourrais être.
John Gardeniers

1

Vous devez décrire un cas d'utilisation exact pour cette comparaison. Les disques durs ont un temps de recherche + un taux de transfert et une mémoire cache. Les réseaux ont une latence, un taux de transfert et une surcharge de protocole ...

Je pense que votre mémoire cache d'origine> mémoire> disque> réseau est toujours valable en général si


0

Le disque est connecté à la CPU via un bus SCSI, SAS ou IDE. Qui est un réseau interne exécutant un protocole spécifique - SCSI ou ATAPI. Ethernet est conçu pour fonctionner sur des distances plus longues et peut être beaucoup plus lent que SAS / SCSI / IDE. Donc, laquelle est la plus rapide, dépend des technologies comparées. Si vous comparez un disque dur d'ordinateur portable âgé de 20 ans avec un stockage RAM de 10 Gbps, le gagnant sera toujours le réseautage. Et lorsque vous achetez un stockage, vous devez le comparer au prix et à la facilité de gestion.


0

Eh bien, il y a Light Peak qui vise une vitesse de mise en réseau de 100 Go / s, ce qui se rapproche de la vitesse de la RAM. Bien entendu, le réseau ne peut transmettre les données aussi rapidement que l'expéditeur peut générer les données, c'est-à-dire que si l'expéditeur lit les données sur un disque dur, le destinataire obtiendra les données à la même vitesse que le disque lu, même avec un réseau ultra-rapide.


0

Une chose à garder à l'esprit est que cela dépend du réseau. Supposons, par exemple, que vous soyez responsable des performances sur un site Web. Ce site Web est bien sûr connecté à un serveur de base de données via un réseau local. Il est également connecté aux internautes via Internet, qui est également une sorte de réseau.

Dans de nombreux cas, un lien dédié peut être configuré entre le serveur Web et le serveur de base de données via des adresses IP statiques et un câble croisé ou automdx afin de réduire le temps de latence et de fournir un lien dédié au trafic, dans la mesure où vous souhaitez qu'il soit très rapide. Le serveur de base de données effectue toutes sortes de tâches pour conserver autant que possible la base de données en mémoire. Dans de nombreux cas, il réussit souvent pour le contenu entier plus quelques index. Les requêtes dans cette base de données seront aussi rapides, voire plus rapides que les requêtes sur disque.

Par ailleurs, certaines technologies Web (asp.net webforms viewstate, je vous regarde) aiment transmettre de nombreuses informations vers et depuis le navigateur Web du client en tant que cache (en quelque sorte). S'il s'agit d'une connexion locale à un réseau local (et dans la défense d'asp.net webform, cela est vrai la plupart du temps), ce n'est pas si grave, mais sur l'internet public, cela peut totalement tuer les performances, de sorte que vous êtes souvent mieux placé pour la pousser. sur une base de données ou un disque local à la place.


0

Personnellement, je pense qu'il y a plusieurs facteurs à considérer. Par exemple, quelle est la vitesse de la mémoire ou du disque auquel vous accédez localement par rapport à celui auquel vous auriez accès via le réseau? Si les données distantes étaient sur un SSD très rapide et plus rapide que la mise en réseau gigabit, la télécommande pourrait être plus rapide pour les gros fichiers en streaming.

Toutefois, si vous accédiez de manière aléatoire à de petites unités de données et que le réseau n’était pas sans défaut ou comportait de nombreux sauts et qu’il ne suffisait pas de vous y accéder, je parierais qu’un cache local est plus rapide, même sur un lecteur de disque mécanique presque 100% % du temps. Mais vous soulevez un point intéressant et combien de temps faudra-t-il pour stocker quelque chose si la vitesse du réseau continue de croître?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.