J'ai actuellement des problèmes avec ddinvoqué avec un fichier clairsemé comme entrée ( if) et un fichier comme sortie ( of) avec conv=sparse. ddsemble utiliser Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHzuniquement un cœur du processeur ( 4 cœurs + 4 Intel Hyperthreads) (100% d'un cœur), donc je me demandais s'il était possible de paralléliser dd. J'ai été
- regarder
info ddetman ddet il semble y avoir une fonction intégrée dans la version de corutils 8.23 - vérification à
sgp_ddpartir dusg3-utilspackage (sans comprendre si cela convient à mes besoins), mais il ne semble pas être capable de gérer des fichiers clairsemés dcflddne semble pas avoir de capacités de parallélisation
Autant que je sache
- une version / fork améliorée avec une gestion interne des parties du programme dans plusieurs threads (éviter les changements de contexte tuant les performances d'E / S) est préférable à
- une solution avec GNU
parallelfonctionnant localement est préférable à - un fragment de code personnalisé (éventuellement non testé)
Comment éviter que le CPU soit le goulot d'étranglement d'une opération intensive d'E / S? Je voudrais exécuter la commande sur Ubuntu 14.04 avec Linux 3.13 et gérer les images disque de fichiers épars avec elle sur n'importe quel système de fichiers prenant en charge les fichiers épars (au moins la solution ne devrait pas être liée à un système de fichiers spécifique).
Contexte: J'essaie de créer une copie d'un fichier fragmenté de 11 To (contenant environ 2 To de données) sur un zfs (version instable de zfsonlinux 0.6.4, peut-être un bug et la cause du goulot d'étranglement du processeur (éventuellement recherche de trous lents)). Cela ne devrait rien changer à la question de savoir comment paralléliser dd (de manière très générique).
ddmonopolise le CPU par défaut en raison de la petite taille des blocs. l'agrandir, comme bs=1M.