Saat ini saya mengalami masalah dengan dd
dipanggil dengan file jarang sebagai input ( if
) dan file sebagai output ( of
) dengan conv=sparse
. dd
tampaknya hanya menggunakan satu inti dari CPU ( Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz
4 core + 4 Intel Hyperthreads) (100% dari 1 core), jadi saya bertanya-tanya apakah mungkin untuk melakukan paralelisasi dd
. saya telah
- melihat ke dalam
info dd
danman dd
dan tampaknya ada fungsi built-in dalam versi corutils 8.23 - memeriksa
sgp_dd
darisg3-utils
paket (tanpa memahami apakah itu sesuai dengan kebutuhan saya), tetapi sepertinya tidak dapat menangani file yang jarang dcfldd
tampaknya tidak memiliki kemampuan paralelisasi
AFAIK
- versi / garpu yang ditingkatkan dengan penanganan internal bagian-bagian program dalam banyak utas (menghindari perubahan konteks yang mematikan kinerja I / O) lebih disukai daripada
- solusi dengan GNU
parallel
berjalan secara lokal lebih disukai daripada - sniplet kode khusus (mungkin belum teruji)
Bagaimana cara menghindari CPU yang menjadi penghambat operasi intensif I / O? Saya ingin menjalankan perintah pada Ubuntu 14.04 dengan Linux 3.13 dan menangani gambar disk file jarang dengan itu pada sistem file yang mendukung file jarang (setidaknya solusinya tidak boleh terikat pada satu sistem file tertentu).
Latar Belakang: Saya mencoba membuat salinan file jarang 11TB (berisi sekitar 2TB data) pada zfs (zfsonlinux 0.6.4 versi tidak stabil, mungkin buggy dan penyebab kemacetan CPU (akhirnya pencarian lubang lambat)). Itu seharusnya tidak mengubah apa pun untuk pertanyaan tentang bagaimana memparalelkan dd (dengan cara yang sangat umum).
sumber
dd
babi CPU secara default karena ukuran kecil. membuatnya lebih besar, sepertibs=1M
.Jawaban:
Diuji dalam Bash:
Anda mungkin perlu menyesuaikan 1000.
sumber
Satu sniplet kode khusus yang belum teruji muncul:
Ini secara logis harus mempartisi file menjadi empat potongan 3TB dan memprosesnya secara paralel. (
skip=
melompati blok input;seek=
mencari blok keluaran.) Perintah keempat tentu saja akan membaca hingga akhir file lama, sehinggacount=
parameter tidak benar-benar diperlukan.sumber
conv=notrunc
conv=notrunc
tersiratseek=
dengan nilai positif.