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


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

modifier:

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/


118
2018-02-21 23:46


origine


Parfois oui, parfois non. Quel réseau? Quel disque? - John Gardeniers
Les autres données intéressantes de la réponse du haut: 1 Mo lecture séquentielle à partir du réseau contre le disque. Je soupçonne que le temps "aller-retour" omet tout transfert de données important. - Paul
Paul: Cela dépend de votre MTU, j'en suis sûr. (1MB MTU? Génial!) - Matt Simmons
J'aimerais voir certaines de ces réponses reconsidérées à la lumière du matériel réseau 10Gbps largement disponible. - chicks
réseau gigabit vs raid 5? - SoilSciGuy


Réponses:


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

C'est de sa présentation intitulée Conceptions, leçons et conseils de la construction de grands systèmes distribués et vous pouvez l'obtenir ici:

La conférence a été donnée à Systèmes distribués et middleware à grande échelle (LADIS) 2009.

Autre info


C'est dit que gcc -O4 envoie votre code à Jeff Dean pour une réécriture.



127
2018-02-22 07:38



+1 très intéressant! - 9dan
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
Est-ce l'ère de tous les pré-SSD? voir ici pour d'autres numéros à jour. - matt
J'ai utilisé ces chiffres pour construire un présentation montrant pourquoi les disques SSD paient pour eux-mêmes, pour convaincre notre chef 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


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. En outre, 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.


19
2018-02-22 01:41



Des points pour mentionner le RAID qui vous donne des lectures parallèles, quelque chose que vous aurez peu de chance d’obtenir 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
Les réseaux sont par nature parallélisables - de quoi parlez-vous? Il est incroyablement simple de lire de manière globale des systèmes multiples sur un réseau. C’est là l’intégralité des systèmes tels que Hadoop et MPI, sans oublier l’évident BitTorrent. - jgoldschrafe
Avec SONET / SDH, vous pouvez avoir 38 Gbps encore plus rapide que SAS. Et l'agrégation de réseau peut être faite avec quelque chose comme en.wikipedia.org/wiki/Link_aggregation - Mircea Vutcovici
@Jake Lorsque vous parlez de 6 Gbps, vous souhaiterez 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
j'ai dit dans ma question que je parlais d'une base de données distante en mémoire par rapport à un cache local sur disque - pm100


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.


10
2018-02-21 23:51



Vous voulez dire que le temps de recherche sur le disque est supérieur à une demande de 10 Gbit / s? - Mircea Vutcovici
@Mircea, il signifie que le réseau 10Gbit doit extraire ses données quelque part, il sera donc limité à la latence de cette source et à 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


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, mon ordinateur portable a eu des problèmes de disque dur 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
2018-02-21 23:50





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
2018-02-22 00:18





Ç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 de la 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 (les réseaux de stockage) 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 par rapport à 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 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.


2
2018-02-27 21:11





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 données réseau peut être en réalité plus rapide que le disque.


1
2018-02-21 23:49



À moins que le disque ne soit également 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 se mettra en mémoire tampon avant d'écrire sur le disque. - amphetamachine


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é du canal ... et si les pairs utilisent des plates-formes différentes, il est plus difficile d'obtenir ce que vous pouvez faire sur une seule machine.

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


1
2018-02-22 00:00



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