Question Multi-core et vitesse de copie


Ce que je veux faire est de copier 500K de fichiers.

Je veux copier dans le serveur d'une destination à l'autre. Il comprend des e-mails pour la plupart des petits fichiers.

C'est plus de 23 Go seulement mais cela prend tellement de temps (plus de 30 minutes et pas encore fait), la commande linux cp n'utilise que 1 CPU.

Donc, si je le script pour utiliser plusieurs cps, cela rendrait-il plus rapide.

Le système est de 16 cœurs, 16 Go de RAM, pilotes 15K (15 000 tr / min SATA).

Quelles sont les autres options?

Je crois que le tarage et le désarchivage prendraient encore plus de temps et n'utiliseraient pas le multi-core.


4
2017-10-21 22:39


origine


voir ma réponse à cette question pour savoir pourquoi la copie de nombreux fichiers nécessite beaucoup d’E / S disque: superuser.com/questions/344534/ - sawdust


Réponses:


Votre goulot d'étranglement est la vitesse du disque dur. Multi-core ne peut pas accélérer cela.


6
2017-10-21 22:45



Disque dur . testé avec hdpram, il retourne 278 Mo / s en êtes-vous sûr? la copie d'un fichier de 23 Go ne devrait prendre que 100 secondes. Donc, utiliser plusieurs CP dans les programmes multi-threading ne va pas améliorer cela aussi? - Phyo Arkar Lwin
Non, non, ça ne va pas. Le goulot d'étranglement est presque certainement la vitesse de lecture / écriture du support physique lui-même, sauf si vous utilisez un équipement de niveau entreprise. - Shinrai
@ V3ss0n Je sais que les disques durs ne sont pas des accès aléatoires, ce qui les empêche d’être accessibles en parallèle. - Pubby
@ Pubby8 - Umm, le disque dur est un périphérique à accès aléatoire (au niveau bloc / secteur). Il est souvent comparé à une bande (par exemple une bande magnétique) qui est un périphérique séquentiel. Je suppose que vous essayez d'affirmer que le périphérique standard ne peut effectuer qu'une seule opération d'E / S à la fois. Il y a un animal appelé lecteur de disque double port cela peut faire deux opérations à la fois, mais il y a des problèmes de système de fichiers qui compliquent les choses. - sawdust
Ce que je veux être sûr, c'est qu'il y avait un programme que j'ai fait en python, qui extrait du texte de plusieurs formats en utilisant différents types d'analyseur (doc, pdf, eml, etc.) pour une indexation et une recherche ultérieures. Au début, le script n'était qu'un processus unique, et après l'avoir rendu multi-processus en utilisant un module de multitraitement (Fourche de haut niveau, de même que le forking), il augmente considérablement la vitesse. Mais cela ne fonctionne que jusqu’à 4 processus, à 6 processus IO Stall et ralentit totalement le processus, et même gèle tout le processus. - Phyo Arkar Lwin


Copier un seul fichier de grande taille est plus rapide que de déplacer beaucoup de petits fichiers, car il y a beaucoup de latence avec la configuration et la suppression de chaque opération. Ainsi, la première chose à réaliser serait plus rapide. Même si vous prenez en compte le temps nécessaire au tarage, cela risque de ne pas accélérer les choses.

Notez que vous ne faites que lire à partir d'un seul disque. Par conséquent, la parallélisation de vos appels sur le disque risque de ralentir les choses et d'essayer de diffuser plusieurs fichiers en même temps.


3
2017-10-21 22:55



Le tarage ne nécessiterait-il pas la lecture de tous les fichiers, la création du tar, la suppression des fichiers originaux et la création de la copie? On dirait que ça prendrait certainement plus longtemps. - Pubby
Oui, bien sûr - j'étais d'accord avec votre réponse, la mienne était juste de fournir des informations supplémentaires. Étant donné que la copie semble être en cours au moment où le PO a écrit la question, cela semblait être un exercice de collecte d’informations. Il y aura des circonstances où le premier essai peut fournir une meilleure performance globale. - Paul


Est-ce que tout est dans le même répertoire? Il y a un script qui lance plusieurs cp: http://www.unix.com/unix-dummies-questions-answers/128363-copy-files-parallel.html

Pour un arbre, vous devez l'ajuster.


0
2017-10-21 23:06





Bien que la question ait été assez ancienne, je pense que le meilleur moyen est de compresser les multi-cœurs comme lbzip2 et pbzip2. Transférez le fichier compressé et décompressez-le à l'aide de multi-cores. Vous pouvez trouver sur les commandes sur Internet.


0
2018-06-06 03:28



Pouvez-vous expliquer pourquoi cela prend moins de ressources disque? (qui sont probablement le goulot d'étranglement). - Hennes