Як я можу прискорити швидкість запису на SD-карту (за допомогою / dev / disk *) на MacBook Pro?


17

Я встановлював деякі дистрибутиви Linux на SD-карту з мого MacBook, хоча для перенесення декількох сотень МБ (за допомогою ddта /dev/disk1) потрібно більше години .

дд вихід

Якщо ви подивитесь на вищезазначений вихід, він працює приблизно на 0,31 Мб / с! SD-карта - клас 10, а мій MacBook Pro - 2,66 ГГц Intel Core 2 Duo, 4 ГБ 1067 МГц DDR3 та OS X Lion 10.7.4. Ось апаратний звіт для читача карт:

Вбудований зчитувач SD-карт:

Ідентифікатор продавця: 0x05ac
Ідентифікатор товару: 0x8403
Версія: 1.00 Серійний номер: 9833

Карта SDHC:

Ємність: 7,97 ГБ (7,969,177,600 байт)
Знімний носій інформації: Так BSD Назва: disk1
Розділ Карта типу: MBR (Master Boot Record)
Статус SMART: Не підтримуються
обсяги:

PI:
Ємність: 7,96 ГБ (7,964,983,296 байт)
Файлова система: MS-DOS
BSD Ім'я: disk1s1
Вміст: DOS_FAT_32

Будь-які ідеї, чому передача /dev/disk1настільки повільна і як я міг би її прискорити?


Мені звучить апаратна проблема. Я чув, що у MBP 2011 року поганий зчитувач SD, але це може бути проблемою і з більш ранніми. Спробуйте іншу SD-карту, але це може бути проблемою з картридером, який, на жаль, прикріплений до логічної плати у більшості MBP.
robmathers

Я купив ноутбук у 2009 році, Fedora вже 2 години копіює, і я здався. Я думаю, новий час для читання карт.
StuR

Цікаво, що послідовна швидкість передачі даних набагато вища, якщо ви використовуєте Finder або Disk-Utility, оскільки винуватцем цього є буферизація / dev / disk *, як пояснено у відповіді @pci
iolsmit

Відповіді:


38

Просто зіткнувся з тією ж проблемою, і, здається, /dev/disk*це повільно, тому що вона буферна. Якщо ви використовуєте відповідний пристрій rdisk (наприклад:), /dev/rdisk1s1ви повинні отримати очікувану швидкість. Це, мабуть, BSD.

Приклад:

% sudo dd if=pi.bin of=/dev/disk1 bs=1m count=4095
^C408+0 records in
407+0 records out
426770432 bytes transferred in 1393.452305 secs (306268 bytes/sec)

% sudo dd if=pi.bin of=/dev/rdisk1 bs=1m count=4095
4095+0 records in
4095+0 records out
4293918720 bytes transferred in 378.669512 secs (11339489 bytes/sec)

Довідка:


1
Це найкраща відповідь, яку я знайшов на це питання, оскільки зміг підтвердити результати. Пішов від ~ 1,35 Мб / сек до 20 МБ / сек :)
відсутність

1
Це, звичайно, ганьба (для Apple / BSD) - хоча використання DD дає вам найкращу можливу ефективність, оскільки у вас є один довгий доступ до запису (чи читання); на рівні файлів і при випадковому доступі ваша продуктивність буде сильно відрізнятися, залежно від SD-карти - І: відмінна знахідка @pci!
Іолсміт

2
Це довга історія, але ти щойно врятував мені лосося на суму 90 доларів, що пішло б погано, якщо я не зміг вчасно виправити свій курець.
deweydb

3
Смішно, як ви можете завантажити файл зі швидкістю 20 Мбіт / с на протязі тисяч кілометрів, а останні кілька метрів - бездротовий. Але передача даних на кілька сантиметрів через жорстке з'єднання відбувається набагато повільніше.
Джонатан.

Спасибі. Я дивився на копіювання даних 7 Гб протягом ~ 10 годин, коли вирішив, що це не прийнятно, і знайшов цю відповідь - дуже корисною.
Барак

3

Цілком може бути, що SD-карта така повільна.

Погляньте на цей орієнтир (Random Write, 4 KB (QD = 1) [MB / s]), і ви побачите, що більшість SD-карт мають слабку продуктивність запису (нижче 100 кБ / с) для невеликих файлів - і a типова установка Linux складається з безлічі невеликих файлів, записаних на диск.

Внутрішній зчитувач карт повинен бути здатний читати / записувати принаймні 20 Мб / с - дуже малоймовірно, що інший зчитувач карт покращить ваш досвід роботи з цією самою SD-карткою.

Після того, як всі файли будуть записані, тобто встановлена ​​система, ви, можливо, зможете запустити Linux із SD-карти з прийнятною швидкістю - оскільки це в основному доступ для читання.


1
Про
нижчого

Було б хорошим експериментом, хоч перевірити карту в іншому читачі, який, як відомо, є хорошим, і перевірити карту, яка, як відомо, є хорошою у підозрюваного читача. Також зауважте, що вся "документація" для створення нових файлів (на відміну від написання їх вмісту) у структурах даних файлової системи дуже велика для багатьох невеликих файлів.
Thorbjørn Ravn Andersen

У яких SD-карти не дуже швидкі, швидкість (328198 байт / сек і пізніше 288881 байт / сек) не може бути неможливою для сьогоднішніх SD-карт (більше схожа на дискети). Оскільки це "dd", це означає, що один файл - не кілька малих файлів.
Барак

1

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


1
Відповідно man mount, async вже є типовим.
nohillside

1

Ні, це явно деяка проблема з Mac OS. Я отримую значно більшу продуктивність, коли виконую цю саму операцію за допомогою Linux на віртуальній машині, що працює на тому ж Macintosh. Тобто, VM приблизно в 5 разів швидше, ніж рідна ОС.

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