Fórum Root.cz

Hlavní témata => Software => Téma založeno: macík 24. 10. 2018, 15:12:21

Název: Proč dd používá 4kb bloky a sníží výrazně rychlost?
Přispěvatel: macík 24. 10. 2018, 15:12:21
Když přes dd kopíruji z flešky do dev/null, proč to kopíruje po 4Kb Blocích?
Kód: [Vybrat]
dd if=/dev/disk3s1   (conv=osync / sync / nic  /// nebo bs=1m)  of=/dev/null

iostat: (druhý sloupec je fleška! : 4KB )
záhlaví:
KB/t,  tps , MB/s --- KB/t,  tps , MB/s
  240.00    1  0.23     4.00 6154 24.04
  252.00    2  0.49     4.00 6120 23.90
  190.00    4  0.74     4.00 6129 23.94
  256.00    1  0.25     4.00 6121 23.91
   88.53   15  1.30     4.00 6156 24.05
  167.33    6  0.98     4.00 6118 23.90
Tedy při 6000iops po 4kB to dá slabých 25 MB/s. Zatímco normálně kopíruji takto:
Kód: [Vybrat]
416.30  266 108.33   993.72  100 96.85 Tedy  1GB soubor se přečetl za 10 sekund, rychlost 97 MB/s.

Kde je problém? Proč dd tam dává 4kB. Jsou nějaké další volby, které jsem zapomněl?
Název: Re:Proč dd používá 4kb bloky (sníží rychlost z 200MB/s na 25)? Zkoušeno sync,osync
Přispěvatel: Kit 24. 10. 2018, 15:24:34
Utilita dd je z historického důvodu optimalizována pro použití s pevnými disky. Pokud ti velikost bloku nevyhovuje, zvol si jinou.
Název: Re:Proč dd používá 4kb bloky (sníží rychlost z 200MB/s na 25)? Zkoušeno sync,osync
Přispěvatel: L. 24. 10. 2018, 15:47:31
Hele, když ti někdo řekne, že to máš dát do /dev/null, tak to neber doslova. To znamená, že to máš smazat!
Název: Re:Proč dd používá 4kb bloky (sníží rychlost z 200MB/s na 25)? Zkoušeno sync,osync
Přispěvatel: Sten 24. 10. 2018, 15:59:30
Když přes dd kopíruji z flešky do dev/null, proč to kopíruje po 4Kb Blocích?

Protože 4 KiB je velikost paměťové stránky na Linuxu. dd neumí poznat, která velikost bloku je ideální.

Hele, když ti někdo řekne, že to máš dát do /dev/null, tak to neber doslova. To znamená, že to máš smazat!

dd do /dev/null se používá pro testování rychlosti čtení ;)
Název: Re:Proč dd používá 4kb bloky a sníží výrazně rychlost?
Přispěvatel: macík 03. 11. 2018, 22:20:32
a co tedy? mám si kvůli tomu přes hdiutil dělat nový ramdisk? Nebo na pomalé x2 NVME? (jen 2GBps) Když nechci opotřebovávat flash paměti a HDDčko se 140MB/s je mi pomalé
Název: Re:Proč dd používá 4kb bloky a sníží výrazně rychlost?
Přispěvatel: Peter Fodrek 03. 11. 2018, 22:47:59
a co tedy? mám si kvůli tomu přes hdiutil dělat nový ramdisk?

naučiť sa použiť copy & convert, ktorý nemohol mať  skratku cc, lebo tú už mal C compiler. A tak dostal dd, lebo copy and convert sa v rukách amatéra mení na Disk destroyer...

ide o parametre black size skrátene bs
napr.

dd if=/dev/sda5 of=/dev/null bs=4096000000
Název: Re:Proč dd používá 4kb bloky a sníží výrazně rychlost?
Přispěvatel: me vakérav 03. 11. 2018, 23:04:59
On ještě někdo používá dd? V čem je to lepší než
Kód: [Vybrat]
pv vstup > výstup což je jedna intuitivnější, jednak to má pěkné rozhraní a hlavně se nemusím starat o hromadu zbytečných parametrů (viz velikost bloku)?
Název: Re:Proč dd používá 4kb bloky a sníží výrazně rychlost?
Přispěvatel: diktor magic landtern 03. 11. 2018, 23:21:34
Tento bs?
Kód: [Vybrat]
bs=1m
Ten nestačil?
Název: Re:Proč dd používá 4kb bloky a sníží výrazně rychlost?
Přispěvatel: Jenda 04. 11. 2018, 01:01:18
Moje dd bs=1m odmítne s "invalid number". bs=1M funguje a podle očekávání je pak čtení rychlejší.
Název: Re:Proč dd používá 4kb bloky a sníží výrazně rychlost?
Přispěvatel: Jenda 04. 11. 2018, 04:20:21
Mimochodem zvážil bych, zda nepoužít obyčejný cat nebo třeba pv (ukazuje průběh samo od sebe, na rozdíl od dd, kterému se musí posílat USR1, nebo se to musí hackovat přes /proc/pid/fdinfo), a nechat volbu ideální velikosti bloku na systému/glibc. Většinou to funguje dobře.
Název: Re:Proč dd používá 4kb bloky a sníží výrazně rychlost?
Přispěvatel: PeterK 04. 11. 2018, 07:12:55
Jenda, novsie dd to uz maju poriesene volbou
Kód: [Vybrat]
status=progress
Název: Re:Proč dd používá 4kb bloky a sníží výrazně rychlost?
Přispěvatel: PeterK 04. 11. 2018, 07:18:08
macik, priznam sa ze tomu tvojmu vypisu nerozumiem ale dd odjakziva pouzivalo default blok velkosti 512 bajtov, cokolvek ine bolo treba nastavit bs=xyz pripadne separatne ibs= obs=