Почему "/ dev/ rdisk "примерно в 20 раз быстрее,чем"/dev / disk " в Mac OS X

по словам документация rasbery pi, вы можете загрузить свою ОС на флэш-карту с помощью /dev / disk или/dev / rdisk.

rdisk стоит для сырого диска.

/ dev / disk-устройство блочного уровня,почему rdisk в 20 раз быстрее?

использование Mac OSX

Примечание: В OS X каждый диск может иметь две ссылки пути в /dev:
/dev / disk# является буферизованным устройством, что означает отправку любых данных
подвергается дополнительная обработка. /dev / rdisk# это сырой путь, который много
быстрее, и совершенно нормально при использовании программы dd. На SD класса 4
карты разница была примерно в 20 раз быстрее, используя путь rdisk.

17
задан Max Ried
23.04.2023 20:06 Количество просмотров материала 3680
Распечатать страницу

4 ответа

С man hdiutil:

/dev/rdisk узлы специальные символьные устройства, но являются " raw " в смысле BSD и силы блока выровнены ввода-вывода. они ближе к физическому диску, чем кэш буфера. с другой стороны, узлы /dev/disk являются буферизованными блочными специальными устройствами и используются в основном кодом файловой системы ядра.

С точки зрения непрофессионала /dev/rdisk идет почти сразу к диску и /dev/disk идет по более длинному и дорогому маршруту

84
отвечен Daniël W. Crompton 2023-04-25 03:54

принятый ответ правильный, но он не вдается в подробности.

одно из ключевых отличий /dev/disk и /dev/rdisk, когда вы получаете доступ к ним из пользовательского пространства, это /dev/disk буферизуется. Путь чтения / записи для /dev/disk разбивает ввод-вывод на куски размером 4 КБ, которые считываются в буферный кэш, а затем копируются в буфер пользовательского пространства (и затем выдает следующие 4 КБ read...). Это хорошо тем, что вы можете делать невыровненные чтения и записи, и это просто работает. В отличие от, /dev/rdisk в основном только проходит чтения или записи прямо на устройство, что означает, что начало и конец ввода/вывода должны быть выровнены по границам секторов.

если Вы читаете или пишете больше, чем один сектор /dev/rdisk, этот запрос будет передан напрямую. Нижние слои могут разойтись (например., USB разбивает его на части 128 КБ из-за максимального размера полезной нагрузки в протоколе USB), но вы обычно можете получить более крупные и эффективные операции ввода-вывода. При потоковой передаче, как через dd, 128KB до 1 МБ довольно хорошие размеры, чтобы получить почти оптимальную производительность на текущем оборудовании без RAID.

кэширование выполняется /dev/disk читать и писать пути очень просто и почти мозг мертв. Он кэширует, даже если это не строго необходимо; например, если устройство может отображать память и напрямую передавать в буфер вашего приложения. Это делает маленький (4KB) ввод-вывод, который приводит к большим затратам на ввод-вывод. Не читайте дальше или оставить позади.

90
отвечен astruct 2023-04-25 06:11

кажется /dev/disk и /dev/rdisk произведения разных жестких дисков и SSD. Хочу проверить на карту MicroSD. Просто написал образ диска 2GB для Sandisk Ultra MicroSD 64GB (https://www.amazon.com/gp/product/B073JYVKNX).

повторили тесты несколько раз, но результаты были стабильными: 17 Мб / с на /dev/disk vs 20 МБ / с на /dev/rdisk. Изменение bs=1m to bs=16m не дает абсолютно никакой разницы в письменной форме скорость.

  1. пишу /dev/disk2

    sudo dd if=~/Downloads/ubuntu-18.04-4.14-minimal-odroid-xu4-20180531.img of=/dev/disk2 bs=1m
    2094006272 bytes transferred in 121.860007 secs (17183704 bytes/sec)
    
  2. пишу /dev/rdisk2

    $ sudo dd if=~/Downloads/ubuntu-18.04-4.14-minimal-odroid-xu4-20180531.img of=/dev/rdisk2 bs=1m
    2094006272 bytes transferred in 102.743870 secs (20380839 bytes/sec)
    

затем я решил проверить скорость чтения: 26MB/с на /dev/disk vs 87MB / s на /dev/rdisk. Изменение bs=1m to bs=16m не дает совершенно никакой разницы в скорости чтения.

  1. чтение /dev/disk2

    sudo dd if=/dev/disk2 of=~/Downloads/ubuntu-18.04-4.14-minimal-odroid-xu4-20180531-2.img bs=1m
    257949696 bytes transferred in 9.895572 secs (26067184 bytes/sec)
    
  2. чтение из /dev/rdisk2

    $ sudo dd if=/dev/rdisk2 of=~/Downloads/ubuntu-18.04-4.14-minimal-odroid-xu4-20180531.img bs=1m
    877658112 bytes transferred in 10.021974 secs (87573377 bytes/sec)
    
2
отвечен k06a 2023-04-25 08:28

для записи, в высокими и macOS Сьерра, по крайней мере, на /dev/диск-видимому, гораздо быстрее, чем, например, /dev/rdisk. Управлением DD или ddrescue, моя пропускная способность сравнении копирование с магнитным HD на SSD-накопителя составил 3,7 Мбит / с помощью /dev/rdisk и 45MBps, с помощью /dev/диск. Таким образом, в более поздних версиях macOS для лучшей производительности лучше всего использовать /dev/disk вместо /dev/rdisk.

1
отвечен JLG 2023-04-25 10:45

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх