|
|
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
maytonFlying-homeЭто потому что создание файла в файловой системе занимает больше времени, чем запись в него. Так же при создании файла головки винчестера делают лишние телодвижения для работы с MFT. Я добавлю что в старых файловых системах (FAT32 для дискет и флешек) каталог с файлами представляет собой несортированный список. И когда количество файлов превышает за тыщу вы испытываете ощутимый тормоз при добавлении нового файла. Если отформатировать флешку на ExFat или NTFS тогда этот эффект нивелируется но возможно будут новые более сложные эффекты которые не всегда можно спрогнозировать. В целом MS рекомендует делать ExFat и я-бы сказал что глупо спорить. Есть табличка. http://www.ntfs.com/ntfs_vs_fat.htm где можно почитать про некоторые сравнительные фичи. Был промежуток времени, когда я не знал о существовании ExFat, а хранить большие файлы на флэшках уже надо было. Форматировал в NTFS, обманывая винду (отключая кэширование в свойствах съемного накопителя и форматируя из командной строки). А потом узнал про ExFat далеко-далеко от цивилизации, в лесу, с Экспишкой на ноуте. Надо было срочно скопировать данные с карточки на диск. А Экспишка просто так ExFat не понимает. Я вышел из положения. На ноуте стояла RStudio, которая понимала ExFat. :) NTFS для флэшек не менее жесток, чем FAT32. Там куча операций с MFT, а она хранится в одном месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2019, 15:40 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
У этой ТераКопи совершенно непродуманный ГУИ. Надо внедряться в контекстное меню проводника и добавлять меню вставки файлов рядом со стандартной вставкой. Типа "Вставить используя ТераКопи". А дальше анализировать содержимое буфера обмена и запускать процесс копирования. Я себе именно так и сделаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2019, 17:05 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Еще два наблюдения: Собирать статистику скорости копирования в зависимости от параметров надо аккуратно и осмотрительно: например, копировать всегда в одно и тоже место диска. Вчера сливал все скачанные с торрентов киношки с нескольких дисков на один терабайтник. В начале скорость была 138 МБ/с, запись обгоняла чтение. В конце скорость снизилась до 85 МБ/с, чтение стало обгонять запись. Терабайтник одноблиновый, так что все понятно. Для чтения с компакт или DVD диска файлы надо читать в том порядке, в котором они записаны на диск. Как это сделать? Как получить полный список файлов на диске, отсортированный в нужном порядке? И сколько времени займет получение этого списка? А если файлов много, а пользователь копирует только часть из них? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2019, 10:21 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Flying-homeДля чтения с компакт или DVD диска файлы надо читать в том порядке, в котором они записаны на диск. Как это сделать? Как получить полный список файлов на диске, отсортированный в нужном порядке? И сколько времени займет получение этого списка? А если файлов много, а пользователь копирует только часть из них? Какой у нас есть Api для DVD? Это тот-же самый файловый итератор findfirst/findnext для unix, FindFirstFile/FindNextFile для Windows. И я не очень понимаю о какой сортировке идет речь. Предполагаю что в том порядке как выдает итератор так и надо обрабатывать. Optimal way. Альтернативный API - это копировать образ диска. Но это КМК другая задача. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2019, 11:19 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Flying-homeЕще два наблюдения: Собирать статистику скорости копирования в зависимости от параметров надо аккуратно и осмотрительно: например, копировать всегда в одно и тоже место диска. Вчера сливал все скачанные с торрентов киношки с нескольких дисков на один терабайтник. В начале скорость была 138 МБ/с, запись обгоняла чтение. В конце скорость снизилась до 85 МБ/с, чтение стало обгонять запись. Терабайтник одноблиновый, так что все понятно. Да. Лет 10 назад была такая утилитка. HDTune. И она графиками подтверждает этот факт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2019, 12:01 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
tunknownFlying-homeЦель - максимальная скорость.Если речь идёт только о флеше, то кроме высокоуровневых вещей нужно не забыть и низкоуровневые: Форматирование флешевых накопителей с выравниванием кластера на границу блока Помучил эту тему. Более-менее вменяемый мануал нашел аж на 56 странице. Есть две флэшки, на которые каждый день записываются большие файлы общим объемом 30 ГБ. Одна была отформатирована ExFAT с размером кластера 8 МБ (файлы-то большие, чего мелочиться) Вторая - ExFAT с размером кластера 32 МБ. Средняя скорость записи на обе флэшки - 22.8 МБ/с на одном компе и 23.2 МБ/c на другом. Думаю, разница в USB контроллерах. Запись безбуферная, блоками по 8 - 32 МБ. Взял одну, проверил по предложенной методике. Обнаружил смещение, повозился с BOOTICE, избавился от смещения, отформатировал в ExFAT с размером кластера 32 КБ. Окончательный тест DFB показал скорость записи не меньше 56 МБ/с. Чем и как ни пробовал, реальная скорость записи осталась прежней, 23 МБ/с. Виндой, ТоталКоммандером, своей прогой с разными параметрами. Интересно, как у DFB организована запись? Где он взял такие цифры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2019, 17:24 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
maytonИ я не очень понимаю о какой сортировке идет речь Ну как, на компакт-диске всего одна дорожка. Для оптимального чтения надо сделать так, чтобы каретка с лазером двигалась вдоль дорожки и делала минимум переходов туда-сюда. А FindFirst/FindNext в каком порядке нам список файлов даст? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2019, 17:29 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Flying-homemaytonИ я не очень понимаю о какой сортировке идет речь Ну как, на компакт-диске всего одна дорожка. Для оптимального чтения надо сделать так, чтобы каретка с лазером двигалась вдоль дорожки и делала минимум переходов туда-сюда. А FindFirst/FindNext в каком порядке нам список файлов даст? Я понимаю откуда идёт твой вопрос. Надо почитать устройство компакт-диска. Стандарт DVD/BlueRay. Я думаю - закопаешся на пару месяцев. Вангую что не будет практической пользы от ответа который ты найдешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2019, 17:34 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Flying-homeнадо сделать так, чтобы каретка с лазером двигалась вдоль дорожки и делала минимум переходов туда-сюда А для этого надо читать файлы в том порядке, в котором они находятся на этой самой дорожке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2019, 17:35 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
maytonFlying-homeпропущено... Ну как, на компакт-диске всего одна дорожка. Для оптимального чтения надо сделать так, чтобы каретка с лазером двигалась вдоль дорожки и делала минимум переходов туда-сюда. А FindFirst/FindNext в каком порядке нам список файлов даст? Я понимаю откуда идёт твой вопрос. Надо почитать устройство компакт-диска. Стандарт DVD/BlueRay. Я думаю - закопаешся на пару месяцев. Вангую что не будет практической пользы от ответа который ты найдешь. Да уж. Перфекционизм он такой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2019, 17:36 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Из далеких двухтысячных. Я помню что копирование CD на 700 мб. занимало много времени когда в диске было дохрена мелких файлов. Спасали утилиты типа DaemonTools e.t.c. Они позволяли копировать образ диска. К сожалению сейчас я даже не могу повторить эксперимент. Нет привода у меня. Вообще мне кажется что без особых требований не стоит тратить время на такую задачу. Очень сомнительно что ты создашь системную утилиту копирования дисков. Это поле уже испахано. А даже если и создашь то никто за нее не заплатит. Вообще.. кто платит за разработку системного софта? Вот за прикладной - платят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2019, 18:08 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Flying-home tunknownпропущено... Если речь идёт только о флеше, то кроме высокоуровневых вещей нужно не забыть и низкоуровневые: Форматирование флешевых накопителей с выравниванием кластера на границу блока Помучил эту тему. Более-менее вменяемый мануал нашел аж на 56 странице. Есть две флэшки, на которые каждый день записываются большие файлы общим объемом 30 ГБ. Одна была отформатирована ExFAT с размером кластера 8 МБ (файлы-то большие, чего мелочиться) Вторая - ExFAT с размером кластера 32 МБ. Средняя скорость записи на обе флэшки - 22.8 МБ/с на одном компе и 23.2 МБ/c на другом. Думаю, разница в USB контроллерах. Запись безбуферная, блоками по 8 - 32 МБ. Взял одну, проверил по предложенной методике. Обнаружил смещение, повозился с BOOTICE, избавился от смещения, отформатировал в ExFAT с размером кластера 32 КБ. Окончательный тест DFB показал скорость записи не меньше 56 МБ/с. Чем и как ни пробовал, реальная скорость записи осталась прежней, 23 МБ/с. Виндой, ТоталКоммандером, своей прогой с разными параметрами. Интересно, как у DFB организована запись? Где он взял такие цифры? Кажется, я понял. Я упираюсь в пропускную способность USB контроллера. А у DFB блоки, которыми он тестирует запись, настолько маленькие, и их так мало, что... Непонятно что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2019, 18:11 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
maytonИз далеких двухтысячных. Я помню что копирование CD на 700 мб. занимало много времени когда в диске было дохрена мелких файлов. Спасали утилиты типа DaemonTools e.t.c. Они позволяли копировать образ диска. К сожалению сейчас я даже не могу повторить эксперимент. Нет привода у меня. Вообще мне кажется что без особых требований не стоит тратить время на такую задачу. Очень сомнительно что ты создашь системную утилиту копирования дисков. Это поле уже испахано. А даже если и создашь то никто за нее не заплатит. Вообще.. кто платит за разработку системного софта? Вот за прикладной - платят. Да понятно. Если и буду копать в эту сторону, то не скоро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2019, 18:12 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Dima TFlying-homeВ обоих случаях остановок (пауз между операциями чтения) нет. Почему второй метод проигрывает 2% по скорости? ИМХО большим блоком ты мешаешь каким-то фоновым оптимизациям внутри ОС. Например упреждающее чтение: прочитав маленький блок, пока ты пишешь - ОС готовит тебе следующий блок, а при большом блоке ты тупо ждешь пока ОС тебе его прочитает. При записи тоже есть нечто подобное. 1. Уменьши блок до 32-64 Кб. 2. Замерь скорость встроенных средств: CopyFile() CopyFileEx() Должен извиниться, ты кое в чем прав. В природе существуют диски, которым нравится, когда с них читают маленькими блоками. На моем "стенде" уменьшение блока вплоть до 256 КБ дает стабильный прирост скорости. Дальше уменьшать блок нет смысла, потому что начнут играть роль мои собственные накладные расходы. Но только на одном винчестере. Не исключено, что 32-64 КБ - для него будет оптимальным размером. Но ПОЧЕМУ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2019, 12:40 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Flying-homeDima Tпропущено... ИМХО большим блоком ты мешаешь каким-то фоновым оптимизациям внутри ОС. Например упреждающее чтение: прочитав маленький блок, пока ты пишешь - ОС готовит тебе следующий блок, а при большом блоке ты тупо ждешь пока ОС тебе его прочитает. При записи тоже есть нечто подобное. 1. Уменьши блок до 32-64 Кб. 2. Замерь скорость встроенных средств: CopyFile() CopyFileEx() Должен извиниться, ты кое в чем прав. В природе существуют диски, которым нравится, когда с них читают маленькими блоками. На моем "стенде" уменьшение блока вплоть до 256 КБ дает стабильный прирост скорости. Дальше уменьшать блок нет смысла, потому что начнут играть роль мои собственные накладные расходы. Но только на одном винчестере. Не исключено, что 32-64 КБ - для него будет оптимальным размером. Но ПОЧЕМУ??? То что ты называешь винчестером - это технологический стек. Который состоит из цепочки последовательно соединенных устройств. И выбрать для них оптимальный режим работы - большое исскусство есть. Я даже думаю что задача твоя немного бесконечна и нерешаема. Как раз из-за разнообразия техники. Главный поинт - блочное копирование параллельно через разделяемую память для процесса чтения и записи ты вроде-бы уже сделал. Молодец. Дальнейшее улучшене - это подбор или "угадывание" оптимального размера блока. +Кластер файловой системы. Для Windows NTFS к примеру есть формула (или табличка) где размер диска примерно линейно связан с размером выбираемого кластера (автоматически) при форматировании. Грубо говоря - мелкие диски получат мелкий кластер. А 10Терабайтник получит побольше. Самое сложное в твоих экспериментах - это зафикировать начальные условия. И отделить мух от котлет. Тоесть понять какие технологические аспекты влияют (антивирус или параллельно работающий индексатор файлов от Windows) на скорость а какие не влияют никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2019, 13:16 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Похоже вот она https://support.microsoft.com/en-us/help/140365/default-cluster-size-for-ntfs-fat-and-exfat Насчет 4Кб на Ntfs5 я-бы поспорил. Я точно помню что форматировал в 2000х диски (толстого на тот момент) размера 1-2 Гб и получал уже 8К кластер... ну да ладно. Пока приму как рекомендацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2019, 13:24 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
maytonМолодец. Дык. Кто бы сомневался. maytonКластер файловой системы. Для Windows NTFS к примеру есть формула (или табличка) где размер диска примерно линейно связан с размером выбираемого кластера (автоматически) при форматировании. Грубо говоря - мелкие диски получат мелкий кластер. А 10Терабайтник получит побольше. Тут такой интересный момент... Для чтения и записи размер кластера не имеет никакого значения. Кластер - это атом хранения, а не операции. Если операции безбуферные, то имеет значение только физический размер сектора, нельзя выбирать размер блока меньше его, или некратным ему. Можно, например, смело писать блоками по 1 МБ на раздел, отформатированный с размером кластера 4 МБ. Если операции используют файловый буфер виндовс, то тогда вообще можно забыть про кластеры и сектора, все за тебя сделает винда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2019, 15:02 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Flying-homeВ природе существуют диски, которым нравится, когда с них читают маленькими блоками. Вот, даже диаграммку нарисовал. Желтеньким - читались фотографии от 160 КБ до 12 МБ с винта 1 Дальше читались три большие файла общим размером 4,5 ГБ Синеньким - с винта 1 Розовым - с винта 2 Винт 2 - старая 320-ка Сигейт. Ну и как работать с таким непредсказуемым материалом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2019, 15:20 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Flying-homemaytonМолодец. Дык. Кто бы сомневался. maytonКластер файловой системы. Для Windows NTFS к примеру есть формула (или табличка) где размер диска примерно линейно связан с размером выбираемого кластера (автоматически) при форматировании. Грубо говоря - мелкие диски получат мелкий кластер. А 10Терабайтник получит побольше. Тут такой интересный момент... Для чтения и записи размер кластера не имеет никакого значения. Кластер - это атом хранения, а не операции. Если операции безбуферные, то имеет значение только физический размер сектора, нельзя выбирать размер блока меньше его, или некратным ему. Можно, например, смело писать блоками по 1 МБ на раздел, отформатированный с размером кластера 4 МБ. Если операции используют файловый буфер виндовс, то тогда вообще можно забыть про кластеры и сектора, все за тебя сделает винда. Да. Но когда ты делаешь copy/move/delete дерева каталогов в NTFS - работают механизмы аллокации дисковой памяти для тела файла и для структуры каталога. И в этот момент размер кластера важен. Это единца аллокации. И это влияет на performance. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2019, 15:24 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
maytonДа. Но когда ты делаешь copy/move/delete дерева каталогов в NTFS - работают механизмы аллокации дисковой памяти для тела файла и для структуры каталога. И в этот момент размер кластера важен. Это единца аллокации. И это влияет на performance. Можно помедленней поподробнее? Я концентрируюсь на двух операциях: чтение и запись. Преимущественно над большими файлами. С файлами размером, скажем, от 512 КБ тоже приходится возиться. Создание каталогов для меня - неизбежный накладной расход, который пока игнорируется. Цель у меня - максимально сократить время между открытием файла на чтение и закрытием его и созданием файла для записи в него и закрытием его. Каким образом процитированное может влиять на сабжект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2019, 16:05 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Механизм аллокации каждого нового файла действует у меня просто: при создании файла ему сразу устанавливается размер - размер файла плюс его секторный хвост. Секторный - потому что этого требует операция безбуферной записи. А с последним кластером файловая система сама как-нибудь разберется, ей достаточно пометить весь кластер как занятый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2019, 16:11 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Прогнал на другом винчестере серию тестов на чтение с маленькими файлами. Все так, как я рассуждаю здесь 21835484 . Чем больше блок, тем выше скорость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2019, 17:27 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Flying-homeПрогнал на другом винчестере серию тестов на чтение с маленькими файлами. Все так, как я рассуждаю здесь 21835484 . Чем больше блок, тем выше скорость. В смысле, желтенькая линия с картинки не убывает, а растет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2019, 17:29 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
Flying-homeПрогнал на другом винчестере серию тестов на чтение с маленькими файлами. Все так, как я рассуждаю здесь 21835484 . Чем больше блок, тем выше скорость. Я немного запутался. Ты уже перешел с флешек на жесткие диски? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2019, 17:50 |
|
||
|
Оптимальный размер блока при записи файла на флэшку
|
|||
|---|---|---|---|
|
#18+
maytonFlying-homeПрогнал на другом винчестере серию тестов на чтение с маленькими файлами. Все так, как я рассуждаю здесь 21835484 . Чем больше блок, тем выше скорость. Я немного запутался. Ты уже перешел с флешек на жесткие диски? Неожиданно для себя расширил область интересов. С флэшками мои изыски пока на таком уровне: Если упираемся в пропускную способность USB контроллера, то ничего сделать нельзя. Если не упираемся, то скорость записи от размера блока почти не зависит, безбуферная запись рулит, но незначительно. Статистики мало. А насколько правильно отформатирована флэшка 21817015 - вопрос к владельцу флэшки. Но если исходить из "Трех китов", Я1. Быстро читать 2. Быстро писать 3. Не давать медленной операции простаивать. То пункты 1 и 3 для изначально заявленной проблемы актуальны. Потому что пользователю может прийти в голову копировать на флэшку файлы с поцарапанного CD, с древнего IDE винта, скорость чтения которого может оказаться ниже скорости записи новой флэшки, с другой флэшки и разное другое. Так что вопрос быстрого чтения с винчестера вполне себе может обсуждаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2019, 08:54 |
|
||
|
|

start [/forum/topic.php?fid=26&msg=39790618&tid=1492230]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 167ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...