Bonjour, je suis en train d'étudier la possibilité de copier le plus rapidement possible un ou plusieurs fichiers sur 20 à 40 clé USB simultanément.
Autrement dis je dispose d'une machine sur laquelle j'ai connecté disons 2 cartes USB PCI express disposant chacune de 5 ports USB.
Sur chacun de ces ports, je colle un HUB de 4 ports.
Je peux donc connecter 2x5x4 = 40 clé USB.
Nanti d'un script Udev qui me montera automatiquement celle-ci, je dois copier un fichier de 500 Mo sur ces 40 clé USB.
Le but est de faire en sorte que les 40 clés soient chargés en moins de 5 minutes.
Me viennent plusieurs questions :
Sachant que j'ai un débit théorique de 480 Mbits.s-1 par port USB, soit environ 30 Mo.s-1 en pratique, divisé par 4 (à cause du HUB), je dispose d'environ 6 Mo.s-1
Est-ce que le disque dur va suivre ? Même en Sata-Raid striping ?
Vais-je avoir des ralentissements, les bus vont-ils suivre ?
Merci
# theorie...
Posté par NeoX . Évalué à 1.
tu n'aura pas de probleme de debit.
si tu lances les copies l'une apres l'autre alors tu va ouvrir 40fois le fichiers sources, et donc en effet peut-etre avoir des baisses de debits...
[^] # Re: theorie...
Posté par NeoX . Évalué à 1.
500Mo à deposer en 5 minutes => 100Mo/minutes => 800Mbp/minutes => 13,3Mbps
ce serait le debit de lecture ideal pour tenir tes objectifs
apres il y a le debit en ecriture sur les clefs usb, qui devront suivre, sinon les objectifs ne seront pas atteints.
# ramdisk
Posté par Putifuto . Évalué à 2.
Ainsi plus de problème de débit de disk dur :-) peut-être juste acheter de la ram :)
[^] # Re: ramdisk
Posté par Sébastien Koechlin . Évalué à 3.
[^] # Re: ramdisk
Posté par Putifuto . Évalué à 2.
deplus, ton cache peut être détruit, si l'OS estime qu'il n'est plus necessaire, et paf, au prochain accès, l'OS va rechercher 500 méga sur le disque dur.
Deplus, si tu remonte le ramdisk en readyonly, l'OS peut aussi optimiser l'accès à des processus concurents.
Enfin, un ramdisk, c'est simple à faire.
# udev
Posté par TazForEver . Évalué à 2.
Ensuite ça suivra sans problème si tu as de la ram de libre : pour cacher le contenu de la source, mais aussi avoir un de cache en écriture pour les clefs.
# Questions:
Posté par liberforce (site web personnel) . Évalué à 1.
2. Ce n'est sans doute pas une solution de multiplier les hubs... Y a-t-il une raison par rapport à simplement faire 4 passes de 10 clés ? Tu ne vas pas accélérer la copie en augmentant le nombre de clés connectées simultanément, tu ne vas qu'engorger le bus.
3. Une règle RUN dans ta règle udev lançant la copie peut améliorer le temps entre l'insertion de la clé et le moment où les fichiers sont copiés. Tu peux même gérer dans le script appelé le démontage de la clé et une notification de démontage, pour insérer la clé suivante.
Admettons que tu n'utilises pas les hubs. Si les clés tiennent les débits usb que tu attends sur chaque port de la carte (30 Mo/s), il te faut 16.6s pour copier ton fichier. Bon, je ne sais pas si c'est possible, je ne connais pas les débits des clés actuelles... Bref. Le temps de connecter tes 10 clés, la copie est presque finie, et tu pourras les déconnecter pour mettre les 10 suivantes.
Après, l'avantage de ta solution, c'est que tu es moins demandeur au niveau des performances en débit de tes clés, mais tu vas forcément plus engorger le bus usb...
[^] # Re: Questions:
Posté par KiKouN . Évalué à 2.
Oui, mais il demande beaucoup plus de bande passante aux ports usb. Il ne faut pas aussi oublier que l'usb est essentiellement géré par logiciel. 40 clés = environ 40 fois plus de consommation cpu sans compter la gestion de la concurrence sur le port usb qui rajoute encore de la consommation cpu. Cela peut vite faire boule de neige est consommer à plein temps le cpu (En même temps, je ne connais pas exactement la gestion de l'usb sous linux et sur d'autre OS d'ailleurs).
Personnellement, j'utiliserai 3 hub de 4 ou 8 ports.
1 Je branche mes clé sur le premier hub et je le branche sur le pc
2 avec udev, la copie se lance automatiquement
3 Pendant ce temps, je branche des autres clés sur le deuxieme et je le branche
4 idem à 2
5 Je branche des clés sur le troisieme hub
6 Lorsque que les clés du premier hub sont pleine, je remplace le hub 1 par le hub 2
7 je débranche les clés sur le hub 1 et en branche de nouvelle
8 etc....
Sinon, je te conseille vivement d'utiliser rsync ou unison à la place de cp. Cela te permettera de ne pas tout recopie sur un clé si tu fais une mise à jour ou si la copie echoue.
# Approche débit / bande passante
Posté par tarreau willy (site web personnel) . Évalué à 2.
En fait, ce que tu cherches, c'est copier 40 fois 500 Mo en 5 minutes,
c'est à dire 20 Go en 5 minutes, soit 66 Mo/s en sortie vers le pool
de clés USB.
C'est totalement jouable avec du PCI express (2.5 Gbps sur du x1, compter
moins de 2 Gbps utiles, ce qui correspond justement au débit max d'une
carte 4 ports USB2), mais il va falloir expérimenter sur la répartition des
clés par nombre de ports et de cartes. Pour les clés, ça te fait 1.6 Mo/s en
écriture par clé, ce qui semble tout à fait raisonnable, même pour des clés
de piètre qualité.
Ensuite, les disques : c'est tout à fait envisageable de tenir 66 Mo/s sur du
RAID0 avec deux disques récents. Même sur un seul disque, avec les
données au début, ça peut se faire mais c'est juste juste. Par contre, on
se rend facilement compte que c'est bel et bien le disque qui risque d'être
le facteur limitant. Donc deux propositions :
- avoir suffisamment de RAM dans la machine pour que le fichier tienne en
cache ou en RAMDISK. Avantage: on néglige les limites en lecture, et on
plafonne aux 6 Mo/s du hub USB, ce qui, en admettant que les clés les
supportent, ramène le temps de copie à moins de 1mn30.
- réduire le nombre de clés simultanées pour atteindre les limites du disque
avec moins de logistique et connectique à gérer.
La première proposition est la plus intéressante, car 500 Mo de RAM ne
coûtent rien, et la solution devient scalable vu qu'elle est limitée par le
nombre de clés par hub USB. Il te suffit alors d'ajouter des cartes USB
pour aller plus vite, et mettre moins de clés par hub, ou augmenter le
nombre de clés traitées simultanément.
Très honnêtement, je craindrais plus pour la stabilité du système (très forte
contention dans les drivers USB et SCSI, blocage de tous les accès à
chaque branchement d'une clé, etc...) que pour la capacité des bus à
véhiculer de telles quantités de données. D'où l'intérêt peut-être de
réduire un peu le nombre de clés pour les faire écrire plus vite et les
changer plus rapidement.
Par exemple, si chaque clé est capable d'écrire à 12 Mo/s (à tester), alors
tu peux n'en mettre que 20 et les remplir en 45 secondes, c'est à dire que
tu remplaces une clé toutes les 2 secondes.
Bon courage en tout cas :-)
Willy
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.