Attualmente sto riscontrando problemi con dd
invocato con un file sparse come input ( if
) e un file come output ( of
) con conv=sparse
. dd
sembra che stia utilizzando un solo core della CPU ( Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz
4 core + 4 Intel Hyperthreads) (100% di 1 core), quindi mi chiedevo se fosse possibile parallelizzare dd
. Sono Stato
- guardando dentro
info dd
eman dd
e sembra che funzioni integrate nella versione di corutils 8.23 - controllo
sgp_dd
dalsg3-utils
pacchetto (senza capire se soddisfa le mie esigenze), ma non sembra essere in grado di gestire file sparsi dcfldd
non sembra avere capacità di parallelizzazione
per quanto ne so
- è preferibile una versione avanzata / fork con gestione interna delle parti del programma in più thread (evitare cambiamenti di contesto che uccidono le prestazioni di I / O)
parallel
è preferibile una soluzione con GNU in esecuzione localmente- uno sniplet di codice personalizzato (possibilmente non testato)
Come evitare che la CPU sia il collo di bottiglia di un'operazione I / O intensiva? Vorrei eseguire il comando su Ubuntu 14.04 con Linux 3.13 e gestire immagini di dischi di file sparsi con esso su qualsiasi file system che supporti file di tipo sparse (almeno la soluzione non dovrebbe essere associata a un file system specifico).
Contesto: sto cercando di creare una copia di un file sparse di 11 TB (contenente circa 2 TB di dati) su un zfs (zfsonlinux 0.6.4 versione instabile, probabilmente buggy e causa del collo di bottiglia della CPU (eventualmente ricerca lenta del foro)). Ciò non dovrebbe cambiare nulla per la domanda su come parallelizzare dd (in modo molto generico).
dd
imposta la CPU per impostazione predefinita a causa delle dimensioni ridotte. ingrandirlo, come bs=1M
.