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/
la source
Réponses:
Voici quelques chiffres que vous recherchez probablement, cités par Jeff Dean, un Google Fellow:
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.
la source
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.
la source
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.
la source
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.
la source
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.
la source
Ç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.
la source
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.
la source
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 ...
la source
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
la source
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.
la source
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.
la source
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.
la source
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?
la source