Dd komutu için en iyi bayt boyutu nasıl belirlenir


21

= / Dev / hdb = / dev / hda = / dev / hdb ise derin bir sabit disk kopyası yaparsa, bir gs yapmayı biliyorum. İnsanların, "bs" seçeneğiyle bir defada okunup yazılan bayt sayısını (512) artırarak süreci hızlandırabildiklerini duydum.

Sorum şu:

Sabit sürücüden kopyalamak için ideal bayt boyutunu ne belirler?

ve

Bu neden ideal bayt boyutunu belirler?


Sürücünün veya bölümün boyutuna tam olarak eşit bir şekilde bölünmesi gerektiğini düşündüm: bu nedenle hedef bölümün tam bayt boyutunu belirlemeye, asal çarpanları elde etmeye ve bunun çarpımı olan oldukça büyük bir blok belirlemeye çalıştım. bu ana faktörlerin birçoğu ...
PP.

Yanıtlar:


18

Chris S dediği gibi optimum blok büyüklüğü donanıma bağlıdır. Benim tecrübeme göre her zaman varsayılan 512 bayttan büyük. Eğer ham cihazlarla çalışıyorsanız, yukarıdaki dosya sistemi geometrisinin etkisi olmaz. Dd blok boyutunu 'optimize etmenize' yardımcı olmak için aşağıdaki betiği kullandım.

#!/bin/bash
#
#create a file to work with
#
echo "creating a file to work with"
dd if=/dev/zero of=/var/tmp/infile count=1175000

for bs in  1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1M 2M 4M 8M 

do
        echo "Testing block size  = $bs"
        dd if=/var/tmp/infile of=/var/tmp/outfile bs=$bs
        echo ""
done
rm /var/tmp/infile /var/tmp/outfile

4
OS X'te "1M ... 8M", "1m ... 8m" e indirilmelidir.
Matt Beckman

1
dd'nin önüne "zaman" ekleyebilir, IO için ne kadar zaman harcandığı ve gerçek işin ne kadar olduğu konusunda ek bilgi almak için ...
Olivier Dulac

1
@lain /dev/zeroüretildi, diskten okumaya gerek yok; Eğer olabilir dd if=/dev/zero ibs=1M count=32 obs=$bs of=/var/tmp/outfile@ olivier-Dulac iyi, ddzaten hızını yazdırmak; değerli herhangi bir bilgi eklemek sanmıyorum time(veya /usr/bin/time).
bufh

1

Maalesef mükemmel boyut, sistem veriyolunuza, sabit sürücü denetleyicisine, özel sürücünün kendisine ve her biri için olan sürücülere bağlı olacaktır. Mükemmel boyutu bulmanın tek yolu, farklı boyutlarda denemeye devam etmektir. Bazı cihazların yalnızca bir blok boyutunu desteklediğine dair makul uyarı, bu nadir olsa da ve genellikle sürücüler yine de farkı yaratır.

2 ^ 15 veya 2 ^ 16 blok boyutunun, Adaptec SAS RAID denetleyicisine, 4x PCIe, 64 bit FreeBSD 8.0-STABLE'a bağlı WDC (8mb önbellek) SATA sürücülerim için en iyi sonucu bulduğumu biliyorum. Ancak ucuz eski başparmak sürücüm için, 2 ^ 10 boyutlarında en hızlı görünüyor.

"Mükemmel boyut" neredeyse her zaman iki güçtür.


0

Herhangi bir zaman kaybetmeden önce kullanılan cihaz üzerinde bir test yapmanın sonucunun ölçülmesinin gerekliliğine dair kefil olabilirim. Aptalca rahatsız etmedim ve ölçümden sonra blok büyüklüğümü ayarlamak 590 Gb'lik bir transferin DD süresini yarı yarıya düşürdü. Aynı BS değeri, farklı bir caddy / drive combo kullanıldığında sadece% 20 oranında azalacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.