Яка різниця між цими двома командами dd?


23

Яка різниця між двома ddкомандами, які мають різні bsта countзначення, якщо вони множиться на одне і те ж? Наприклад:

  1. dd if=/dev/random of=aa bs=1G count=2
  2. dd if=/dev/random of=aa bs=2G count=1

4
Обидві команди займуть віків. Використовуйте urandom, якщо вам потрібні випадкові числа. Використовуйте нуль, якщо вам просто потрібно швидко ввести щось.
Нілс

Відповіді:


26

Що стосується кінцевого результату, вони зроблять те саме. Різниця полягає в тому, як ddби обробляти дані. Насправді обидва ваші приклади є надзвичайно екстремальними в цьому плані: bsпараметр вказує, ddскільки даних він повинен зберігати в пам'яті, перш ніж виводити їх.

Отже, по суті, перша команда намагатиметься прочитати 2 ГБ за два шматки по 1 ГБ, а остання спробує прочитати цілі 2 ГБ за один раз, а потім вивести її у aaфайл.


17

Результат буде однаковим, але в першому випадку ddбуде записано два блоки 1 ГБ, а в другому - 2 ГБ. Різниця полягає в тому, що ddзберігає скопійований блок в пам'яті. Вам знадобиться 1 Гб оперативної пам’яті в першому випадку і 2 ГБ в другому.

На мою думку, немає необхідності використовувати такі великі блоки. Ви можете зробити пару тестів, але в моєму випадку я досягну більшої швидкості за допомогою набагато менших блоків (<1 МБ)


9

Перший займе 1 Г пам'яті, наповнить його даними з вхідного файлу та виведе два рази.

Другий займе 2G пам’яті, заповнить його даними з вхідного файлу та виведе його.


2

Використовуваний розмір блоку повинен відповідати кращим параметрам швидкості для вихідного та цільового пристроїв.

Різницю можна найкраще побачити, якщо спробувати скопіювати пристрій НН. Використання дуже невеликого розміру BS перерве процес читання непотрібним. Використання дуже великого розміру BS призведе до довгого очікування під час запису.

Оскільки стандартні НН зазвичай складаються з 4 Мб шматки, що також є хорошим розміром для доступу до фізичного диска, я використовую для них bs = 4M.

Спробуйте експериментувати з 16K або 256M - ви помітите різницю - і дивіться індикатор диска під час копіювання ...


Штрафи для невеликих або великих розмірів блоків дещо компенсуються кешуванням, яке виконує ядро. Дивіться тут міні-орієнтир.
Жиль "ТАК - перестань бути злим"

@Gilles Я не пам'ятаю числа в моїх тестах, але вони були набагато драматичнішими, ніж твої. Яку установку фізичного жорсткого диска ви використовували у своєму тесті? Моя була на апаратному RAID 5 смугастим на 5 дисках (SAS 15k) з 128 Кб. розмір смуги.
Нільс

SATA диски, відсутність RAID, інакше машина в режимі очікування. Я не пам'ятаю точних специфікацій.
Жил "ТАК - перестань бути злим"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.