powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Оптимальный размер блока при записи файла на флэшку
25 сообщений из 155, страница 5 из 7
Оптимальный размер блока при записи файла на флэшку
    #39787856
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, а она хранится в одном месте.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39787946
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У этой ТераКопи совершенно непродуманный ГУИ. Надо внедряться в контекстное меню проводника и добавлять меню вставки файлов рядом со стандартной вставкой. Типа "Вставить используя ТераКопи". А дальше анализировать содержимое буфера обмена и запускать процесс копирования. Я себе именно так и сделаю.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39789397
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще два наблюдения:

Собирать статистику скорости копирования в зависимости от параметров надо аккуратно и осмотрительно: например, копировать всегда в одно и тоже место диска.
Вчера сливал все скачанные с торрентов киношки с нескольких дисков на один терабайтник. В начале скорость была 138 МБ/с, запись обгоняла чтение. В конце скорость снизилась до 85 МБ/с, чтение стало обгонять запись.
Терабайтник одноблиновый, так что все понятно.

Для чтения с компакт или DVD диска файлы надо читать в том порядке, в котором они записаны на диск. Как это сделать? Как получить полный список файлов на диске, отсортированный в нужном порядке? И сколько времени займет получение этого списка? А если файлов много, а пользователь копирует только часть из них?
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39789460
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeДля чтения с компакт или DVD диска файлы надо читать в том порядке, в котором они записаны на диск. Как это сделать? Как получить полный список файлов на диске, отсортированный в нужном порядке? И сколько времени займет получение этого списка? А если файлов много, а пользователь копирует только часть из них?
Какой у нас есть Api для DVD? Это тот-же самый файловый итератор findfirst/findnext для unix, FindFirstFile/FindNextFile для Windows.
И я не очень понимаю о какой сортировке идет речь. Предполагаю что в том порядке как выдает итератор так и надо
обрабатывать. Optimal way.

Альтернативный API - это копировать образ диска. Но это КМК другая задача.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39789490
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeЕще два наблюдения:

Собирать статистику скорости копирования в зависимости от параметров надо аккуратно и осмотрительно: например, копировать всегда в одно и тоже место диска.
Вчера сливал все скачанные с торрентов киношки с нескольких дисков на один терабайтник. В начале скорость была 138 МБ/с, запись обгоняла чтение. В конце скорость снизилась до 85 МБ/с, чтение стало обгонять запись.
Терабайтник одноблиновый, так что все понятно.
Да. Лет 10 назад была такая утилитка. HDTune. И она графиками подтверждает этот факт.

...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790226
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknownFlying-homeЦель - максимальная скорость.Если речь идёт только о флеше, то кроме высокоуровневых вещей нужно не забыть и низкоуровневые:
Форматирование флешевых накопителей с выравниванием кластера на границу блока
Помучил эту тему. Более-менее вменяемый мануал нашел аж на 56 странице.

Есть две флэшки, на которые каждый день записываются большие файлы общим объемом 30 ГБ.
Одна была отформатирована ExFAT с размером кластера 8 МБ (файлы-то большие, чего мелочиться)
Вторая - ExFAT с размером кластера 32 МБ.
Средняя скорость записи на обе флэшки - 22.8 МБ/с на одном компе и 23.2 МБ/c на другом. Думаю, разница в USB контроллерах. Запись безбуферная, блоками по 8 - 32 МБ.

Взял одну, проверил по предложенной методике. Обнаружил смещение, повозился с BOOTICE, избавился от смещения, отформатировал в ExFAT с размером кластера 32 КБ. Окончательный тест DFB показал скорость записи не меньше 56 МБ/с.
Чем и как ни пробовал, реальная скорость записи осталась прежней, 23 МБ/с.
Виндой, ТоталКоммандером, своей прогой с разными параметрами.

Интересно, как у DFB организована запись? Где он взял такие цифры?
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790231
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИ я не очень понимаю о какой сортировке идет речь
Ну как, на компакт-диске всего одна дорожка. Для оптимального чтения надо сделать так, чтобы каретка с лазером двигалась вдоль дорожки и делала минимум переходов туда-сюда. А FindFirst/FindNext в каком порядке нам список файлов даст?
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790237
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homemaytonИ я не очень понимаю о какой сортировке идет речь
Ну как, на компакт-диске всего одна дорожка. Для оптимального чтения надо сделать так, чтобы каретка с лазером двигалась вдоль дорожки и делала минимум переходов туда-сюда. А FindFirst/FindNext в каком порядке нам список файлов даст?
Я понимаю откуда идёт твой вопрос.

Надо почитать устройство компакт-диска. Стандарт DVD/BlueRay. Я думаю - закопаешся на пару месяцев.
Вангую что не будет практической пользы от ответа который ты найдешь.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790239
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeнадо сделать так, чтобы каретка с лазером двигалась вдоль дорожки и делала минимум переходов туда-сюда
А для этого надо читать файлы в том порядке, в котором они находятся на этой самой дорожке.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790242
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonFlying-homeпропущено...

Ну как, на компакт-диске всего одна дорожка. Для оптимального чтения надо сделать так, чтобы каретка с лазером двигалась вдоль дорожки и делала минимум переходов туда-сюда. А FindFirst/FindNext в каком порядке нам список файлов даст?
Я понимаю откуда идёт твой вопрос.

Надо почитать устройство компакт-диска. Стандарт DVD/BlueRay. Я думаю - закопаешся на пару месяцев.
Вангую что не будет практической пользы от ответа который ты найдешь.
Да уж. Перфекционизм он такой.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790264
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из далеких двухтысячных. Я помню что копирование CD на 700 мб. занимало много времени
когда в диске было дохрена мелких файлов. Спасали утилиты типа DaemonTools e.t.c.
Они позволяли копировать образ диска.

К сожалению сейчас я даже не могу повторить эксперимент. Нет привода у меня.
Вообще мне кажется что без особых требований не стоит тратить время на такую
задачу.

Очень сомнительно что ты создашь системную утилиту копирования дисков. Это
поле уже испахано. А даже если и создашь то никто за нее не заплатит. Вообще..
кто платит за разработку системного софта?

Вот за прикладной - платят.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790265
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 блоки, которыми он тестирует запись, настолько маленькие, и их так мало, что... Непонятно что.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790267
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИз далеких двухтысячных. Я помню что копирование CD на 700 мб. занимало много времени
когда в диске было дохрена мелких файлов. Спасали утилиты типа DaemonTools e.t.c.
Они позволяли копировать образ диска.

К сожалению сейчас я даже не могу повторить эксперимент. Нет привода у меня.
Вообще мне кажется что без особых требований не стоит тратить время на такую
задачу.

Очень сомнительно что ты создашь системную утилиту копирования дисков. Это
поле уже испахано. А даже если и создашь то никто за нее не заплатит. Вообще..
кто платит за разработку системного софта?

Вот за прикладной - платят.
Да понятно. Если и буду копать в эту сторону, то не скоро.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790567
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TFlying-homeВ обоих случаях остановок (пауз между операциями чтения) нет. Почему второй метод проигрывает 2% по скорости?
ИМХО большим блоком ты мешаешь каким-то фоновым оптимизациям внутри ОС. Например упреждающее чтение: прочитав маленький блок, пока ты пишешь - ОС готовит тебе следующий блок, а при большом блоке ты тупо ждешь пока ОС тебе его прочитает.
При записи тоже есть нечто подобное.

1. Уменьши блок до 32-64 Кб.
2. Замерь скорость встроенных средств: CopyFile() CopyFileEx()
Должен извиниться, ты кое в чем прав. В природе существуют диски, которым нравится, когда с них читают маленькими блоками. На моем "стенде" уменьшение блока вплоть до 256 КБ дает стабильный прирост скорости. Дальше уменьшать блок нет смысла, потому что начнут играть роль мои собственные накладные расходы.
Но только на одном винчестере. Не исключено, что 32-64 КБ - для него будет оптимальным размером.
Но ПОЧЕМУ???
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790577
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeDima Tпропущено...

ИМХО большим блоком ты мешаешь каким-то фоновым оптимизациям внутри ОС. Например упреждающее чтение: прочитав маленький блок, пока ты пишешь - ОС готовит тебе следующий блок, а при большом блоке ты тупо ждешь пока ОС тебе его прочитает.
При записи тоже есть нечто подобное.

1. Уменьши блок до 32-64 Кб.
2. Замерь скорость встроенных средств: CopyFile() CopyFileEx()
Должен извиниться, ты кое в чем прав. В природе существуют диски, которым нравится, когда с них читают маленькими блоками. На моем "стенде" уменьшение блока вплоть до 256 КБ дает стабильный прирост скорости. Дальше уменьшать блок нет смысла, потому что начнут играть роль мои собственные накладные расходы.
Но только на одном винчестере. Не исключено, что 32-64 КБ - для него будет оптимальным размером.
Но ПОЧЕМУ???
То что ты называешь винчестером - это технологический стек. Который состоит из цепочки
последовательно соединенных устройств. И выбрать для них оптимальный режим работы - большое исскусство есть.
Я даже думаю что задача твоя немного бесконечна и нерешаема. Как раз из-за разнообразия техники.
Главный поинт - блочное копирование параллельно через разделяемую память для процесса чтения и записи
ты вроде-бы уже сделал. Молодец. Дальнейшее улучшене - это подбор или "угадывание" оптимального размера
блока. +Кластер файловой системы. Для Windows NTFS к примеру есть формула (или табличка) где размер диска примерно
линейно связан с размером выбираемого кластера (автоматически) при форматировании. Грубо говоря - мелкие
диски получат мелкий кластер. А 10Терабайтник получит побольше.

Самое сложное в твоих экспериментах - это зафикировать начальные условия. И отделить мух от котлет. Тоесть
понять какие технологические аспекты влияют (антивирус или параллельно работающий индексатор файлов от Windows)
на скорость а какие не влияют никак.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790580
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже вот она

https://support.microsoft.com/en-us/help/140365/default-cluster-size-for-ntfs-fat-and-exfat

Насчет 4Кб на Ntfs5 я-бы поспорил. Я точно помню что форматировал в 2000х диски (толстого на тот
момент) размера 1-2 Гб и получал уже 8К кластер... ну да ладно. Пока приму как рекомендацию.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790611
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМолодец.
Дык. Кто бы сомневался.

maytonКластер файловой системы. Для Windows NTFS к примеру есть формула (или табличка) где размер диска примерно
линейно связан с размером выбираемого кластера (автоматически) при форматировании. Грубо говоря - мелкие
диски получат мелкий кластер. А 10Терабайтник получит побольше.

Тут такой интересный момент... Для чтения и записи размер кластера не имеет никакого значения. Кластер - это атом хранения, а не операции.
Если операции безбуферные, то имеет значение только физический размер сектора, нельзя выбирать размер блока меньше его, или некратным ему. Можно, например, смело писать блоками по 1 МБ на раздел, отформатированный с размером кластера 4 МБ.
Если операции используют файловый буфер виндовс, то тогда вообще можно забыть про кластеры и сектора, все за тебя сделает винда.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790615
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeВ природе существуют диски, которым нравится, когда с них читают маленькими блоками.
Вот, даже диаграммку нарисовал.

Желтеньким - читались фотографии от 160 КБ до 12 МБ с винта 1

Дальше читались три большие файла общим размером 4,5 ГБ

Синеньким - с винта 1
Розовым - с винта 2

Винт 2 - старая 320-ка Сигейт.
Ну и как работать с таким непредсказуемым материалом?
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790618
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homemaytonМолодец.
Дык. Кто бы сомневался.

maytonКластер файловой системы. Для Windows NTFS к примеру есть формула (или табличка) где размер диска примерно
линейно связан с размером выбираемого кластера (автоматически) при форматировании. Грубо говоря - мелкие
диски получат мелкий кластер. А 10Терабайтник получит побольше.

Тут такой интересный момент... Для чтения и записи размер кластера не имеет никакого значения. Кластер - это атом хранения, а не операции.
Если операции безбуферные, то имеет значение только физический размер сектора, нельзя выбирать размер блока меньше его, или некратным ему. Можно, например, смело писать блоками по 1 МБ на раздел, отформатированный с размером кластера 4 МБ.
Если операции используют файловый буфер виндовс, то тогда вообще можно забыть про кластеры и сектора, все за тебя сделает винда.
Да. Но когда ты делаешь copy/move/delete дерева каталогов в NTFS - работают механизмы аллокации дисковой
памяти для тела файла и для структуры каталога. И в этот момент размер кластера важен. Это единца аллокации.
И это влияет на performance.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790629
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДа. Но когда ты делаешь copy/move/delete дерева каталогов в NTFS - работают механизмы аллокации дисковой
памяти для тела файла и для структуры каталога. И в этот момент размер кластера важен. Это единца аллокации.
И это влияет на performance.
Можно помедленней поподробнее?
Я концентрируюсь на двух операциях: чтение и запись. Преимущественно над большими файлами. С файлами размером, скажем, от 512 КБ тоже приходится возиться. Создание каталогов для меня - неизбежный накладной расход, который пока игнорируется.
Цель у меня - максимально сократить время между открытием файла на чтение и закрытием его и созданием файла для записи в него и закрытием его. Каким образом процитированное может влиять на сабжект?
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790631
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Механизм аллокации каждого нового файла действует у меня просто: при создании файла ему сразу устанавливается размер - размер файла плюс его секторный хвост.
Секторный - потому что этого требует операция безбуферной записи. А с последним кластером файловая система сама как-нибудь разберется, ей достаточно пометить весь кластер как занятый.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790647
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прогнал на другом винчестере серию тестов на чтение с маленькими файлами.
Все так, как я рассуждаю здесь 21835484 . Чем больше блок, тем выше скорость.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790648
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeПрогнал на другом винчестере серию тестов на чтение с маленькими файлами.
Все так, как я рассуждаю здесь 21835484 . Чем больше блок, тем выше скорость.
В смысле, желтенькая линия с картинки не убывает, а растет.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790653
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeПрогнал на другом винчестере серию тестов на чтение с маленькими файлами.
Все так, как я рассуждаю здесь 21835484 . Чем больше блок, тем выше скорость.
Я немного запутался. Ты уже перешел с флешек на жесткие диски?
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39790758
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonFlying-homeПрогнал на другом винчестере серию тестов на чтение с маленькими файлами.
Все так, как я рассуждаю здесь 21835484 . Чем больше блок, тем выше скорость.
Я немного запутался. Ты уже перешел с флешек на жесткие диски?
Неожиданно для себя расширил область интересов.

С флэшками мои изыски пока на таком уровне:
Если упираемся в пропускную способность USB контроллера, то ничего сделать нельзя. Если не упираемся, то скорость записи от размера блока почти не зависит, безбуферная запись рулит, но незначительно. Статистики мало. А насколько правильно отформатирована флэшка 21817015 - вопрос к владельцу флэшки.

Но если исходить из "Трех китов",
Я1. Быстро читать
2. Быстро писать
3. Не давать медленной операции простаивать.

То пункты 1 и 3 для изначально заявленной проблемы актуальны. Потому что пользователю может прийти в голову копировать на флэшку файлы с поцарапанного CD, с древнего IDE винта, скорость чтения которого может оказаться ниже скорости записи новой флэшки, с другой флэшки и разное другое. Так что вопрос быстрого чтения с винчестера вполне себе может обсуждаться.
...
Рейтинг: 0 / 0
25 сообщений из 155, страница 5 из 7
Форумы / Windows [игнор отключен] [закрыт для гостей] / Оптимальный размер блока при записи файла на флэшку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]