Quelle est la configuration matérielle la plus performante?

35

Je sais que les numéros de référence exacts varieront d'un fabricant à l'autre, mais en général, si vous envisagez uniquement les lecteurs flash, cartes SD et disques durs haut de gamme, et si votre Raspberry Pi est connecté à un réseau via un commutateur Ethernet, la configuration la plus rapide à partir d'un réseau point de transfert de données? Je cherche seulement des réponses dans lesquelles les gens ont réellement essayé les configurations énumérées ci-dessous et ont des résultats réels, pas de la théorie.

De toute évidence, une carte SD doit être utilisée car elle est requise pendant au moins une partie du cycle de démarrage, mais supposons que vous disposiez d'une partition de données supplémentaire sur chacun des périphériques répertoriés ci-dessous, qui possède les vitesses de transfert réseau les plus élevées sur le Raspberry Pi?

  1. La carte SD
  2. Un lecteur flash USB
  3. Un disque dur USB

Cette question est non triviale car, à un moment donné, la surcharge de traitement associée à l’un des périphériques de stockage couplée à la communication Ethernet peut avoir un impact sur le débit de transfert, le port Ethernet du Raspberry Pi étant également contrôlé par le bus USB, le débit devrait en général être affecté par la coordination du transfert de données Ethernet et du transfert de données multimédia USB. Je ne sais pas si la carte SD se trouve sur le même bus USB partagé que les ports USB et le port Ethernet, mais si ce n’était pas le cas, je suppose que ce serait un avantage considérable en termes de performances.

Édité pour inclure le transfert de réseau en tant qu'exigence de référence

Dan B
la source
1
Pour votre information, les répondants peuvent utiliser sudo hdparm -t /dev/sdxcomme un outil utile pour l'analyse comparative.
Jivings
2
Je n'ai pas de points de repère, mais c'est de notoriété publique: ssd> hdd> flash> sd> supports optiques
Alexander - Réintégrer Monica
+1 - Bon point à propos du port SD - est-ce sur le même bus que le port USB / Ethernet? Le partage de la charge sur SD et le stockage USB connecté fonctionnent-ils mieux?
Jon Egerton
@XAleXOwnZX bien sûr si les bus sur lesquels ces périphériques sont activés peuvent correspondre à la performance maximale du périphérique, alors telle est la commande, mais je parie que puisque le Raspberry Pi ne dispose que d'une clé USB, votre commande ressemblera davantage à ssd = hdd = flash> optical et SD peut résider n'importe où dans cette liste si elle possède son propre bus séparé des ports USB.
Dan B
C'est un bon point, mais le disque dur> Flash est sûr. Mon disque dur USB obtient 30 Mo / s par rapport à mon lecteur flash 5-10
Alexander - Reinstate Monica

Réponses:

35

Dans l'analyse comparative, vous devez toujours établir vos limites. Parce que si vous vous attendez à obtenir 100 Mo de ce réseau, vous vous trompez!

Regardez cette conception de bloc du RaspberryPI Model-B entrez la description de l'image ici

Nous établissons donc un fait très important ici. Ethernet est goulot d’étranglement par le contrôleur USB car nous établissons qu’il est connecté au concentrateur USB. (Aucune indication claire n'utilise-t-il un autre bus ou tout simplement USB2?)

Ohh regarde - un autre diagramme,

entrez la description de l'image ici

Voilà qui jette encore plus de lumière sur la situation. Le contrôleur 10/100 est connecté au concentrateur USB. Malheureusement, encore une fois, il n’existe aucune indication sur la vitesse à laquelle le concentrateur communique avec le contrôleur de réseau local. Attendez-vous au fait que la vitesse et le réseau local sont négociés. pour les environnements usb à vitesse variable.

Où est la carte SD?

Il s’avère que la carte SD est directement connectée au BCM2835 (page 65) et qu’elle décrit en détail l’impact des performances sur différents niveaux de configuration. Une chose importante à noter est que si la carte SD a une horloge dédiée, elle peut fonctionner indépendamment de la CPU / du processeur principal à pleine vitesse (quelle que soit la carte et le standard utilisés - vous pouvez le voir supporter quelques standards.)

entrez la description de l'image ici

Alors qu'est-ce que cela signifie?

Cela signifie que si vous comparez les performances de la carte SD et du lecteur de stylo (4 Go / 8 Go), vous obtiendrez probablement des différences de performances énormes. Alors maintenant, on se demande comment le processeur / GPU gère la communication avec ce merveilleux périphérique intégré (puce USB / LAN) et à quelle vitesse est-il capable de communiquer.

Vous voyez jusqu'où peut aller la théorie avant de procéder à une analyse comparative? Un autre point clé est la suivante: comment le processeur contrôle-t-il le flux de données? Utilise-t-il le canal d'horloge séparé comme recommandé?

Dans un monde idéal, on pourrait penser que ce LAN / USB le gérera. Mais cela nécessite un MCU .. voyons-nous un MCY n'importe où dans ce diagramme .. NO!

Le processeur doit donc demander à IO DATA de lui envoyer le port USB, puis de passer au port LAN (via le même concentrateur USB) Oui.

C'est également une bonne chose de noter ce qui se passe lorsque vous copiez sur une clé USB et depuis la carte SD via un réseau local .. cela va générer du trafic.

Nous devons évaluer divers aspects

En établissant ce que nous essayons de comparer, nous pouvons poser une question du monde réel.

  1. À quelle vitesse l'USB interne traite-t-il les données de la carte SD?
  2. Combien de CPU est utilisé pour lire / écrire en SD puis en LAN?
  3. Quelle est la quantité de CPU utilisée pour lire / écrire sur une clé USB?
  4. La copie de données influence-t-elle directement l'utilisation du processeur?
  5. Dans quelle mesure la puce USB / LAN intégrée gère-t-elle la lecture des données de deux sources dans le port LAN et affecte-t-elle le processeur proportionnellement?
  6. Il n’est pas nécessaire de vérifier si le réseau local atteindra 10 Mb / s car son goulot d’étranglement est dû à l’état dans lequel se trouve le concentrateur USB.

Maintenant que vous savez pour quoi vous vous battez, je vous mets au défi d'y répondre vous-même.

Vous pourriez trouver cela un très bon point de départ.

Les références

Mais principalement,

mes propres connaissances techniques et évaluations que j'ai réalisées sur la base de ma propre expérience intégrée. Le PO a posé une très bonne question, mais il est difficile de comprendre que sans compréhension théorique d’un système, on est condamné à essayer d’évaluer / résoudre les problèmes pratiques.

Résultats

(4) Cette réponse montre quelques essais pirates terre-à-terre. Et cela prouve que les transactions intenses de données ont une influence directe sur le processeur (il n’est pas sûr que ce soit la carte SD ou le processus de transfert des données de la puce BCM vers la puce USB / LAN)

(6) Il a été prouvé que le seul goulot d'étranglement serait la source (par exemple une carte SD lente). Le concentrateur USB parvient à pomper les données à 90% +, mais les réponses aux questions 4 et 5 peuvent directement influer sur cette performance.

Ce faisant quelques recherches et la contribution des autres utilisateurs , nous commençons à établir et à obtenir des résultats préliminaires.

Voici un joli tableau pour aider à visualiser ce que nous traitons.

entrez la description de l'image ici

Piotr Kula
la source
1
+1 excellente réponse. Bien que pouvez-vous s'il vous plaît fournir des sources pour vos images?
Jivings
1
Cette réponse apporte un excellent travail en ajoutant des détails à la question en expliquant pourquoi chaque support de stockage peut avoir des performances très différentes. Merci pour les informations supplémentaires que j'aurais dû ajouter moi-même à la question.
Dan B
1
L’USB est toujours aux alentours de 30 Mo / s, c’est-à-dire assez pour un réseau de 100 Mbit.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen oui c'est vrai. Mais une de mes questions concerne les performances du hub USB intégré. Haw rapide est-ce vraiment? et cela dépend-il du processeur ARM - également de ce qui se passe lorsque vous copiez des sources de forme 2 via un réseau local .. C’est quelque chose qui mérite d’être comparé. Je ne dis pas que cela ne le fera pas - mais cela pourrait certainement être un problème dans certaines situations.
Piotr Kula
On dirait que vous avez de l'expérience dans le domaine. Pourriez-vous faire des mesures réelles?
Thorbjørn Ravn Andersen
3

De toute évidence, la performance la plus élevée serait avec un disque virtuel.

Cela ne sera pas très utile pour un périphérique de stockage connecté au réseau, mais le pi n'est pas nécessairement le meilleur choix pour cette application fixe.

Pour certaines choses où la flexibilité de pi est particulièrement adaptée, les exigences de stockage réelles peuvent être suffisamment petites pour s'exécuter explicitement à partir d'un disque virtuel, ou implicitement à partir de la mémoire vive via le mécanisme de mise en cache de disque (les disques de stockage Linux ne sont que des caches de disque sans disque de sauvegarde).

Vous auriez toujours besoin d'une carte pour démarrer, mais vous pouvez également garder la carte en lecture seule et minimiser le risque de corruption.

Chris Stratton
la source
Vous n'avez pas besoin d'une carte pour démarrer. Le système d'exploitation / chargeur de démarrage en a besoin! Vous pouvez démarrer à partir de l'interface série ou du réseau local si vous avez modifié le chargeur de démarrage. Si vous étiez assez technique, vous pourriez ajouter 3 Go de RAM au RPI - mais cela est complètement hors sujet. Le fait est que tout passe par un hub USB stupide! bleeeh
Piotr Kula le
Le chargeur de démarrage, du moins celui que vous pouvez modifier, ne se trouve-t-il pas sur la carte SD? Vous pourrez peut-être faire charger une rom d’amorçage interne à partir d’une autre source si vous changez cependant certaines attaches de configuration.
Chris Stratton le
Je suis presque certain que la puce BCM est identique à celle utilisée par exemple par Arduino avec un chargeur de démarrage (comme le BIOS sur PC). Il doit exister un programme initial pour charger le programme suivant, etc. changer le bootlaoder sur RPi .. attendez un an ou deux.
Piotr Kula
ATMEGA d’arduino est un exemple de microcontrôleur conçu pour fonctionner de manière autonome, avec flash interne. Un booloader est personnalisable par l'utilisateur. Le SOC du pi, par contre, semble appartenir à la classe des plus grandes parties du système qui nécessitent des mémoires externes. Ceux-ci ont généralement un chargeur de démarrage, mais c'est une rom de masque qui ne peut pas être modifiée une fois qu'ils ont quitté l'usine. Dans un produit traditionnel basé sur quelque chose comme ça, il y aurait une puce flash externe de 4-8 MByte. Mais le pi semble utiliser la carte SD amovible à la place, évitant ainsi le problème de la corruption d’un flash soudé.
Chris Stratton
C'est intéressant. Donc, est-ce la partition FAT qui contient ces données de démarrage? ou est-il stocké ailleurs sur une partie cachée du SD? Dans le jeu, vous pourriez alors, dans une tentative encore plus facile, essayer de rediriger le processus de chargement vers un autre "piraté" sur l'appareil ...
Piotr Kula
0

Le disque dur USB ou SSD USB devrait vous donner les performances les plus rapides. Les cartes SD écrivent environ 12 Mo / s pour les appareils class10 et l’USB peut atteindre 30 Mo / s.

Je ne suis pas d'accord pour dire que le concentrateur USB engendre un goulet d'étranglement sur Ethernet sur RPi, car le hub peut supporter 400 Mbit / s et Ethernet à 100. Donc, théoriquement, il peut supporter jusqu'à 4 ports Fast Ethernet 100 Mb / s.

Angel Genchev
la source
TOUTES les classes SD 10 que j'ai testées ont une écriture supérieure à 19 Mo / s. J'ai eu une classe 6 qui a 14MB / s. Les SanDisk Extreme SD qui revendiquent 45 Mo / s atteignent 50 Mo / s en lecture et 47 Mo / s en écriture, ce qui était une surprise. Les cartes SD Lexar 400x sont les plus rapides que j’ai testées à 70 Mo / s en lecture, mais environ 30 Mo / s en écriture. Sur USB 2.0, il n'y a pratiquement aucune différence entre les cartes SD rapides, les disques durs et les SSD. Toutes les interfaces USB 2.0 que j'ai bousculées ne dépassent pas les 35 Mo / s. J'ai déjà vu des clés USB 2.0 atteignant environ 10 Mb / s, voire moins. Beaucoup de clés USB 3.0 ont une vitesse d'écriture limitée à 10-20 Mb / s, même sur les ports USB 3.0!
Therealstubot
0

Je reçois au maximum 4Mb / s en utilisant un lecteur flash USB et la même chose pour USD HDD. Ceci tout en déposant simplement les fichiers via le «groupe résidentiel» du réseau Windows sur le périphérique connecté au Raspberry.

Je m'y attendais au moins 10 fois, mais je n'ai pas réussi à accélérer le transfert. J'ai essayé le transfert FTP directement sur un disque dur USB (cet appareil effectue un transfert à +60 Mo / s lorsqu'il est connecté à mon ordinateur portable), mais les résultats sont très médiocres. 100 Ko / s! Il en résulte des heures de trafic pour seulement quelques 100 Mo.

Je déplace maintenant le disque dur entre l'ordinateur portable et Raspberry Pi pour le transfert de données :-(

NookaV
la source
Je pense que vous avez un problème de configuration / réseau car je peux télécharger un fichier directement sur ma clé USB jusqu'à 24 Mbps. Et je pense que je pourrais faire mieux avec Ethernet au lieu du Wi-Fi. J'ai utilisé vsftpd.
Morgan Courbet