DD від / dev / zero до / dev / null ... що насправді відбувається


13

Що відбувається в команді

sudo dd if=/dev/zero of=/dev/null bs=500M count=1. 

Куди насправді йдуть нулі і взагалі що відбувається? Швидкість - 905 Мб / с

Якщо я дм, щоб скасувати диск, швидкість становить лише 388 Мб / с. А якщо я ddдо свого hdd, швидкість становить лише 63,2 Мб / с


1
/dev/nullє хорошим пунктом призначення для тестування / часу зчитування операцій. /dev/zeroє джерелом добре для тестування / синхронізації запису операцій. Поєднувати це джерело та пункт призначення за одну операцію не має особливого сенсу. Навіть не впевнений, чи це дає якийсь змістовний накладний номер.
тирса

@sawdust Інше, ні?
Джеймі

2
Так, @sawdust, ваш коментар вище неприємний (для новачків). of = / dev / sda замінить чиїсь розділи жорсткого диска, вміст тощо. = ~ / bigfile.tmp - був би кращим прикладом для використання ...
Кевін Траас

2
Я знаю, що я досить спізнююся на вечірку, але у випадку, якщо хтось захоче спробувати це на собі: немає необхідності запускати цю команду як root, а значить, і не потрібно судо.
Roel Schroeven

@Jamie Nah, це правильний шлях.
Аун

Відповіді:


14

/dev/zeroзабезпечує нескінченний потік нульових байтів при читанні. Ця функція надається ядром і не потребує виділення пам'яті. Усі записи /dev/nullвипадають мовчки.

Як результат, під час виконання ddсистеми система генерує 500 мегабайт в нульових байтах, які просто відкидаються. За винятком тимчасового буфера, жодні дані не зберігаються до, під час або після цієї операції.

Швидкість передачі від /dev/zeroдо /dev/nullвизначається насамперед швидкістю вашого процесора та відповідними системними дзвінками. (У вашому випадку буфер розміром у 500 Мб, отже, операція перевіряє і швидкість вашої пам'яті.)


7

Я перекладу для вас цю команду:

dd if=/dev/zero of=/dev/null bs=500M count=1

Скопіюйте дані ( dd) з вхідного файлу ( if) /dev/zero((віртуальна безмежна подача 0's) у вихідний файл ( of) /dev/null((віртуальна раковина)) за допомогою блоків розміром 500 М ( bs= розмір блоку) і повторіть це ( count) лише один раз ( 1).

Загалом, ця команда повинна вимірювати лише швидкість пам’яті та шини. Однак він може вийти з ладу, якщо у вас немає 500 МБ оперативної пам’яті. Тож у певному сенсі це також неявно орієнтує на те, як швидко ваша ОС може виділяти великі шматки пам'яті.


Якщо він вимірює пам’ять, наскільки записування на рамковий диск значно повільніше?
agz

2
Тому що ramdisk все ще повинен бути відформатований, щоб мати файлову систему, яку повинен підтримувати драйвер ядра. Це також означає, що запис на ramdisk матиме накладні витрати на копіювання даних з простору користувачів у простір ядра - не зовсім безкоштовно. З / dev / zero або / dev / null, ця накладна вартість майже дорівнює нулю.
mvp

Я ніколи раніше не бачив "копій даних". Я пригадую, що читав на старих сторінках man SunOS, що в DD розшифровується як "копіювати та конвертувати".
Дан Прітц

5

/ dev / null - чорна діра. Це не є точним для тестування нормальних операцій запису, оскільки насправді не записує на диск, як звичайний файл. Замість того, щоб записати голову на диск, дані викидаються відразу після запису на пристрій, тому це завжди буде швидше, ніж звичайне місцеве записування.

/ dev / zero аналогічно для читання. Для читання з нього не потрібно рух голови, це лише необмежений запас нульових символів, тому він завжди читатиме швидше, ніж будь-який локальний зчитування.

Іншими словами, це як тестування в порожнечі і не дасть точної картини того, що має дати нормальне місцеве читання та запис.


Я припускаю, що Ram також не бере участь ... так що це тест ... тактова частота?
agz

1
  1. /dev/nullніде; дані, записані до нього, просто видаляються.

  2. Ваш ramdisk має файлову систему, яку він повинен використовувати. ddмає створити запис у файловій системі та записати, дотримуючись правил файлової системи. Також ваша ОС одночасно використовує вашу пам'ять для інших речей, тому операція запису отримує те, що залишилося.

  3. Жорсткі диски, що не належать до SSD, є просто повільними, тому це також правильно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.