LINUX.ORG.RU
ФорумTalks

Как быстрее?

 ,


0

2

Не спится. Мучает вопрос. Мешают ли флешки друг другу?

Есть несколько флешек. Разного размера, с разными характеристиками. Нужно сохранить на них много файлов. С машины у которой все гнёзда USB одинаковые — 2.0 для определённости. Как быстрее: воткнуть самую быструю и сохранять на неё, или воткнуть все имеющиеся флешки, разбить файлы на группы, и одновременно сохранять на все флешки? (Разумеется, во 2-м случае возможна переброска из группы в группу, если какая-то флешка заметно быстрее и управится раньше.) Считаем, что скорость жёсткого диска больше суммарной скорости флешек.

Ответ: Коллективный разум считает, что быстрее распараллелить.

★★★★★

Последнее исправление: question4 (всего исправлений: 1)

По идее, не должны мешать. Пропускная способность современных шин сводится к школьным задачам о бассейне и трубах. Ядро хорошо умеет в параллельный ввод-вывод. FUSE заставляет SSD работать на скорости HDD, но там, как я понимаю, основные потери приходятся на переключение контекста между пользователем и ядром.

Ты, видимо, когда-то насмотрелся на копирование в несколько потоков на одну флешку, напрочь забыл обстоятельства, но осадочек остался.

Vidrele ★★★★★
()
Ответ на: комментарий от greenman

Только если это не root hub. Root hub это абстракция, у него даунстрим порты не делят пропускную способность апстрим порта. Есть ещё rate matching hub, это тоже абстракция. Я не сталкивался с платами, на которых был бы встроенный не root и не rate matching хаб.

Конечно надо копировать параллельно. Даже если usb host controller подключён к системе по pcie 1.0 x1, это 2 Gbps линк. Он должен быть способен насытить как минимум 4 порта usb 2.0 480 Mbps.

iliyap ★★★★★
()

Я собирал lvm raid0 на флешках. Работало действительно быстрее. Пользоваться этим всерьёз я конечно-же не стал.

legolegs ★★★★★
()

а разве нельзя просто, как в первом классе, где считают на палочках. Скажем, у системной шини 1000 попугаев. А у флешек 300 и 500 соотв. Значит, вместе они шину не перегрузят. Ведь комповская шина - ето разновидность сети.

Или еще проще - взять, и провести експеримент.

seiken ★★★★★
()
Ответ на: комментарий от seiken

провести експеримент.

На одной и той же флешке с одного и того же диска перекачивание гигабайтных файлов в 2 попытках дало очень разные результаты. Возможно, дело в драйвере fuse exfat.

у системной шини 1000 попугаев. А у флешек 300 и 500 соотв. Значит, вместе они шину не перегрузят. Ведь комповская шина - ето разновидность сети.

Об этом и спрашиваю. Напрямую ли ли они имеют доступ к этой шине, или есть узкое место между ними.

Другая очевидная проблема — скорость чтения с жёсткого диска вразбивку. Даже если он на порядок быстрее USB при последовательном чтении одного файла, что будет если он по очереди читает несколько?

И наверняка есть другие проблемы.

question4 ★★★★★
() автор топика

Если у тебя компьютер более-менее новый и флешки реально USB 2.0, то втыкай все вместе.

А так - зависит от кучи факторов, тут проще тестировать.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 2)
Ответ на: комментарий от question4

Возможно, дело в драйвере fuse exfat.

Производительность накопителей надо измерять прямым доступом к блочному устройству. Всовывая туда драйвер файловой системы (любой) в середину, ты безнадёжно утрачиваешь чистоту эксперимента.

firkax ★★★★★
()
Ответ на: комментарий от iliyap

Он должен быть способен насытить как минимум 4 порта usb 2.0 480 Mbps.

А что, флешки эти 480 мбит/с могут реализовать? По-моему у них скорость обычно ещё меньше.

firkax ★★★★★
()

Одновременное сохранение на разные флешки будет быстрее, и здесь не только производительность шины играет роль.

Сама по себе флешка - устройство не быстрое, хотя производители и пытаются читерить разными способами, такими как кеширование, параллельная запись и тд, и тп. Но в целом быстродействие внутри самой флешки может быть даже ниже быстродействия самой шины.

Даже если ты воткнешь две флешки в две дырки хаба, а хаб в дырку на компе - скорость будет быстрее, хотя может и не в два раза, а насколько хватит флешатинского буфера. А если учесть что хабы висят на PCI-шине ...

Впрочем поэкспериментировать раз плюнуть, ты можешь сделать программный raid0 с любого линукса, и не бить файлы ни на какие группы.

windows10 ★★★★★
()
Ответ на: комментарий от firkax

Производительность накопителей надо измерять прямым доступом к блочному устройству. Всовывая туда драйвер файловой системы (любой) в середину, ты безнадёжно утрачиваешь чистоту эксперимента.

Так ведь и в реальных условиях будет писаться не сплошной поток, а набор файлов в файловую систему.

question4 ★★★★★
() автор топика

Если коротко, то использвать несколько флешек быстрее, чем использовать только одну самую быструю.

Если длинно и не лень читать, то вот что я думаю. Все USB устройства в системе подключены к единому контроллеру и разделяют его пропускную способность. Пропускная способность зависит от поддерживаемого стандарта. Так, стандарт USB2.0 определяет half-duplex 60MB/s, то есть по этому стандарту USB шина пропускает данные одновременно в одну сторону и не более 60MB/s в совокупности по всем подключенным устройствам. Стандарт USB3.0 определяет full-duplex 625MB/s, то есть устройства в совокупности могут пропускать столько данных одновременно в обе стороны. Последующие стандарты ещё больше увеличивают пропускную способность.

Теперь, если мы говорим про запись на флешки, то флешки, как было многими замечено, не способны даже близко подойти к возможностям стандарта. Обычно флешки стандарта 2.0 пишут со скоростью 2MB/s, стандарта 3.0 - 8MB/s, стандарта 3.1 - около 40MB/s. Поэтому, даже флешка стандарта 3.1 может не выжать возможности контроллера 2.0, и лучше использовать парочку одновременно.

Ладно, теоретики мы все молодцы, обратимся к цифрам. Я наковырял пять флешек разного времени, объёма, и степени убитости. При измерении записи одного файла размером 1,406,996,480 байт на единственное устройство и учитывая сброс всех IO буфферов, я получил для 2.0 уcтройства 1 - 2.804MB/s, для устройства 2 - 2.089MB/s, для 3.0 устройства 1 - 8.211MB/s, для устройства 2 - 8.316MB/s, для USB3.1 устройства - 45.789MB/s.

Теперь записываем три разных файла, один размером 2,605,920,762 байта на USB3.1, и два разных файла предыдущего размера на оба устройства 2.0. Получаем 45.685MB/s, 2.078MB/s, и 2.768MB/s соответсвенно. Ясно, что эксперименты ведутся порядка 10 минут, то есть измерения достаточно корректны. Эффективное падение скорости записи незначительное и максимально возможное для каждого устройства.

Вывод. Перед записью лучше всего обзавестись хорошим внешним устройством, это принципиально. Пять плохих устройств хуже чем одно хорошее, тем более что флешки стандарта 3.1 сейчас продаются на вес. Например вот эта внизу за $31. Конечно, утверждение о записи в 800MB/s ещё надо проверять и не на каждом компьютере это удастся сделать:

256GB PNY PRO Elite V3 USB 3.2 Gen 2 Flash Drive – Up to 1000MB/s Read, Up to 800MB/s Write, Extreme Performance for Professional Data Storage and Transfers, Premium Metal Design, Type-A Connector.

VIT
()
Ответ на: комментарий от Vidrele

// Чёт вспомнилось.

– Пап, а что такое многозадачность?
– Ща, погоди, дискетку отформатирую и покажу.

dimgel ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)